Sunmoon_BIT/ORACLE SQL 2010. 4. 27. 20:00
[UPLOAD]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Test_save_XML
{
    public partial class from1 : Form
    {
        string fname;
        string fpath;
        public from1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "XML files(*.XML) | *.XML";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                fpath = openFileDialog1.FileName;
                fname = fpath.Substring(fpath.LastIndexOf("\\") + 1);
                textBox1.Text = fname;
                textBox2.Text = fpath;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            BITPF_ASSEM.LOG_ASSEM bit = new BITPF_ASSEM.LOG_ASSEM();
            bool re = bit.FileUpLoad("wangno", fname, fpath);
            if (re)
            {
                MessageBox.Show("데이터베이스에 저장완료");
                return;
            }
            else
            {
                MessageBox.Show("동일한 파일명이 존재합니다");
                return;
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            fname = textBox1.Text;
        }
    }
}


[DOWNLOAD]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace Down_XML_From_DB
{
    public partial class Form1 : Form
    {
        string click;
        BITPF_ASSEM.LOG_ASSEM bit;
        public Form1()
        {
            bit = new BITPF_ASSEM.LOG_ASSEM();
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            ArrayList list = new ArrayList();
            bit.GetFileList(textBox1.Text, ref list);
            foreach (string s in list)
            {
                listBox1.Items.Add(s);
            }
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            click = listBox1.SelectedItem.ToString();
            textBox2.Text = click;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            byte[] MyData = null;
            int Datasize = new int();
            string SavePath = "c:\\";
            bit.DownLoadFile("wangno",click,ref MyData,ref Datasize);
            FileStream fs = new FileStream(SavePath+click, FileMode.Create, FileAccess.Write);
            fs.Write(MyData, 0, Datasize+1);
            fs.Close();
            MessageBox.Show(string.Format("[{0}] 폴더에 [{1}] 파일 저장완료",SavePath,click));
        }
    }
}

[DLL]
 public bool FileUpLoad(string ID, string FileName, string FilePath)
        {
            byte[] Mydata = GetImage(FilePath);
            InitSQL("ExistFileName");
            SqlParameter p1 = new SqlParameter("@ID", SqlDbType.VarChar, 50);
            SqlParameter p2 = new SqlParameter("@FILENAME", SqlDbType.VarChar, 50);
            SqlParameter p3 = new SqlParameter("@DATAFILE", SqlDbType.Image, Mydata.Length);
            SqlParameter p4 = new SqlParameter("@FILESIZE", SqlDbType.Int);
            SqlParameter p5 = new SqlParameter("@CHECK", SqlDbType.TinyInt);
            p1.Value = ID;
            p2.Value = FileName.Substring(FileName.LastIndexOf("\\") + 1);
            p3.Value = Mydata;
            p4.Value = Mydata.Length;
            p5.Direction = System.Data.ParameterDirection.Output;
            sCom.Parameters.Add(p1);
            sCom.Parameters.Add(p2);
            sCom.Parameters.Add(p3);
            sCom.Parameters.Add(p4);
            sCom.Parameters.Add(p5);
            sCom.Connection.Open();
            sCom.ExecuteNonQuery();
            int re = int.Parse(p5.Value.ToString());
            if (re == 0)
            {
                sCom.Connection.Close();
                return true;
            }
            sCom.Connection.Close();
            return false;
       }
       
        public void GetFileList(string FileName, ref ArrayList list)
        {
            InitSQL("FindFile");
            SqlParameter p1 = new SqlParameter("@FILENAME", SqlDbType.VarChar, 50);
            p1.Value = FileName;
            sCom.Parameters.Add(p1);
            sCom.Connection.Open();
            SqlDataReader sr = sCom.ExecuteReader();
            while (sr.Read())
            {
                list.Add(sr.GetValue(0).ToString());
            }
            sr.Close();
            sCom.Connection.Close();
        }
        public void DownLoadFile(string ID, string FileName, ref byte[] Mydata, ref int datasize)
        {
            InitSQL("DownLoadFile");
            SqlParameter p1 = new SqlParameter("@FILENAME", SqlDbType.VarChar, 50);
            p1.Value = FileName;
            sCom.Parameters.Add(p1);
            sCom.Connection.Open();
            SqlDataReader sr = sCom.ExecuteReader();
            while (sr.Read())
            {
                Mydata = (byte[])sr.GetValue(0);
                datasize = Mydata.GetUpperBound(0);
            }
            sr.Close();
            sCom.Connection.Close();
        }

XML파일을 DB에 IMAGE형태의 테이블에 BYTE배열을 사용하여 저장하고
BYTE배열을 사용하여 읽어온 후 파일로 저장한다.

'Sunmoon_BIT > ORACLE SQL' 카테고리의 다른 글

ORACLE TABLESPACE 확인  (0) 2012.06.28
DataBase 검색 [ 검색 쿼리문]  (0) 2010.04.26
LOGICAL OPERATORS  (0) 2010.02.24
SQL DML(데이터조작하기)의 기본  (0) 2010.02.22
:
Sunmoon_BIT/ORACLE SQL 2010. 4. 26. 15:13

ALTER PROCEDURE dbo.FindImage
(
@IMAGENAME varchar(50)
)
 
AS
 SELECT * FROM ImageTable
 WHERE IMAGENAME LIKE @IMAGENAME+'%' OR
   IMAGENAME LIKE '%'+@IMAGENAME OR
   IMAGENAME LIKE '%'+@IMAGENAME+'%'
 RETURN

string을 입력받아 테이블내의 데이터를 검색한다.
LIKE는 같은 값을 검색해주는 내장함수이지만 %가 붙어서 string으로 시작하거나
중간에 string값이 들어간 데이터 혹은 string값으로 끝나는 데이터를 찾을 수 있다.
<소문자 대문자도해줘야 한다고 들은듯한데..더미로 테스트해본 결과 대문자로 쳐도 소문자가 검색이 된다>
 

'Sunmoon_BIT > ORACLE SQL' 카테고리의 다른 글

ORACLE TABLESPACE 확인  (0) 2012.06.28
데이터베이스에 XML파일 저장하기  (0) 2010.04.27
LOGICAL OPERATORS  (0) 2010.02.24
SQL DML(데이터조작하기)의 기본  (0) 2010.02.22
:
Sunmoon_BIT/.NET 2010. 4. 19. 19:39

Microsoft Report Viewer          

Sunmoonbit 19th 황성노

 

Microsoft Report Viewer는 데이터베이스,서비스,개체의 데이터집합을 Viewer형태로 보여준다.

또한 데이터를 보여주고 인쇄,Excel파일 또는 PDF파일로 내보기기능을 제공한다.

텍스트박스,테이블,이미지 등을 사용자가 자신이 원하는 위치에 배치하여 보여줄 수 있고 Excel처럼 속성창을 사용하여 배경색이나 폰트, 텍스트 색을 쉽게 바꿀 수 있어서 효과적으로 데이터를 보여줄 수 있다.

 

예제를 통하여 자세한 사용법을 설명하겠다.

 

먼저 예제의 구성이다.

회원정보 테이블과 제품정보데이블이 존재하고 구매정보테이블이 존재한다.

구매정보테이블에는 ID,NUM,PRICE,QUANTITY항목이 있는데 ID는 회원정보테이블의 ID NUM항목은 제품정보 테이블의 NUM항목과 JOIN 되어있다

 

실습의 순서는 첫번째로 WinForm프로젝트를 생성하고 데이터집합을 추가한다. 이 데이터 집합에는 쿼리문을 사용하여 얻은 결과값을 저장 할 것이다. 데이터 집합에 TableAdapter를 추가하면 데이터 연결 선택이 나오는데 미리 ReportViewer 라는 데이터베이스에 회원정보,제품정보,구매정보를 입력해두었으므로 데이터베이스의 ReportViewer를 선택하고 SQL쿼리문을 사용하여 데이터를 엑세스 할 것 이므로 SQL쿼리문 을 선택한다.

그러면 쿼리문을 입력하는 화면이 나오고 구매정보테이블에 회원정보와 제품정보를 조인하여 구매목록에 추가할 데이터들을 SELECT하는 쿼리문을 입력하고 마침을 누르면 데이터집합에 반환되는 값의 데이터집합이 생성된다.

이제 데이터집합은 모두 설정하였고 Report를 생성해야하므로 추가->보고서->보고서마법사를 선택한다.

보고서의 데이터원본은 미리 설정한 데이터집합을 설정하고 이 Viewer ID마다 구매한 목록을 보여주게 하기 위해서 ID를 페이지값으로 주고 나머지를 자세히항목에 추가하고 마침을 누르면 Report가 생성된다.

이제 Report를 보여주기 위하여 Viewer를 만들어야하는데 Winform을 선택하고 도구상자에 보고탭에 Microsoft

ReportView form에 추가하고 보고서 선택창에 아까만든 Report를 선택하면 Viewer가 완성된다

 



 


'Sunmoon_BIT > .NET' 카테고리의 다른 글

파일경로로 byte배열에 파일을 저장  (0) 2010.04.28
Validation Control <유효성 검사 컨트롤>  (0) 2010.04.19
선비 버젼3.0 [Sunbee]  (0) 2010.04.16
Remoting  (0) 2010.04.06
: