(Microsoft PowerPoint - ADONET [\310\243\310\257 \270\360\265\345])

Similar documents
VS_chapter10

한국 컴퓨터그래픽스(디지털컨텐츠)의 현황과 미래 위기인가? 기회인가?

DBMS & SQL Server Installation Database Laboratory

ALTIBASE 사용자가이드 Templete

Microsoft PowerPoint - CSharp-12-데이터베이스

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

untitled

10.ppt

윈도우시스템프로그래밍

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 07-C#-13-ADO.ppt [호환 모드]

untitled

윈도우시스템프로그래밍

초보자를 위한 ADO 21일 완성

쉽게 풀어쓴 C 프로그래밊

문서 템플릿

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

13주-14주proc.PDF

PowerPoint Presentation

MS-SQL SERVER 대비 기능

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

빅데이터분산컴퓨팅-5-수정

MySQL-.. 1

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

untitled

Microsoft PowerPoint Python-DB

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Ç¥Áö

03. ADO 닷넷 ADO 닷넷이란? ADO(ActiveX Data Objects) 의닷넷버전 비연결방식 (Discected Mdel) 제공 데이터베이스와연결후필요한데이터를가져온후에, 접속을바로끊고나서도데이터를계속해서처리할수있는방법이필요 자원을계속많이확보가능 자료의처리

Microsoft SQL Server 2005 포켓 컨설턴트 관리자용

FileMaker 15 ODBC 및 JDBC 설명서

ALTIBASE 사용자가이드 Templete

슬라이드 1

FileMaker ODBC 및 JDBC 가이드

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

untitled

PowerPoint 프레젠테이션

MySQL-Ch10

개발문서 Oracle - Clob

6장. SQL

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

강의 개요

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

슬라이드 1

untitled

목 차

untitled

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

ETL_project_best_practice1.ppt

PowerPoint 프레젠테이션

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

Microsoft PowerPoint - 04-UDP Programming.ppt

(Microsoft PowerPoint - hci2-lecture12 [\310\243\310\257 \270\360\265\345])

Portal_9iAS.ppt [읽기 전용]

PowerPoint 프레젠테이션

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

untitled

슬라이드 제목 없음

Relational Model

NeoDEEX Deveoper Guide

초보자를 위한 C# 21일 완성

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

TITLE

<성진수의 C# 활용 2>

SQL

Lec. 2: MySQL and RMySQL

ALTIBASE HDB Patch Notes

NoSQL

슬라이드 제목 없음

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

금오공대 컴퓨터공학전공 강의자료

DocsPin_Korean.pages

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

PowerPoint Presentation

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

PowerPoint 프레젠테이션

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

JDBC 소개및설치 Database Laboratory

Microsoft PowerPoint - QVIZMVUMWURI.pptx

DW 개요.PDF

초보자를 위한 분산 캐시 활용 전략

뇌를자극하는 SQL Server 2012 (1 권 ) 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr

어댑터뷰

교육2 ? 그림

C++Builder ADO Programming (5) - ADO Transaction, Errors

PowerPoint Presentation

PowerPoint Presentation

thesis

Oracle Database 10g: Self-Managing Database DB TSC

歯sql_tuning2

Transcription:

- 1 - ADO.NET & XML & LINQ 이현정 hjyi@hotmail.com MCT/MCSD/MCAD/MCSD.NET

- 2-20장데이터베이스와 ADO.NET 데이터베이스에대하여 관계형데이터베이스의기본적인구조 SQL(Structured Query Langauge) DBMS ADO.NET ADO.NET의구성 System.Data Data Provider DataSet 클래스 21장 ADO.NET과함꼐하는 MyFriends 프로젝트

- 3 - ADO.NET ADO.NET 개요 DataSet 사용하기 DataReader 사용하기 저장프로시저사용하기

ADO.NET 개요 - 4-1. Microsoft SQL Server 2005 Express 설치 2. 관계형데이터베이스의기초 3. ADO.NET 개요 3.1 ADO.NET 객체모델 3.2.NET Data Provider란? 3.3 DataSet 이란? 3.4 DataSets과 DataReaders 4. Visual C# 2005 Windows 응용프로그램에서데이터사용하기 4.1 데이터소스구성마법사 4.2 데이터소스창

1. Microsoft SQL Server 2005 Express 설치 - 5 - Visual C# 2005 Express Edition 설치시같이설치됨 SQL Server 2005 Express Edition http://www.microsoft.com/korea/msdn/vstudio/express/sql/ SQL Server Management Studio Express 설치해야됨 http://www.microsoft.com/korea/msdn/vstudio/express/sql/download/ SQL Server 2000 Sample Databases 설치해야됨 http://www.microsoft.com/downloads/details.aspx?familyid=06616212-0356-46a0-8da2-eebc53a68034&displaylang=en

Record 2. 관계형데이터베이스의기초 Table Base Shapes Shape# Center.x Center.y Pen Style... Ellipses Shape# Major Minor Triangles Shape# V1.x V1.y Rectangles Shape# Width Height... - 6 - Primary Key 기본키 Field=Column Relation - Join Foreign Key 외래키

2. 관계형데이터베이스의기초 - 7 - Pubs Sample DB- Microsoft SQL Server 2000

2. 관계형데이터베이스의기초 - 8 - 기본 SQL문 DDL(Data Definition Language) CREATE object_name ALTER object_name DROP object_name CREATE DATABASE Northwind ON default = 256 USE northwind CREATE TABLE customer (cust_id int, company varchar(40), contact varchar(30), phone char(12) ) GO

2. 관계형데이터베이스의기초 - 9 - 기본 SQL문 DML(Data Manipulation Language ) SELECT INSERT UPDATE DELETE USE northwind SELECT categoryid, productname, productid, unitprice FROM products INSERT INTO customer (cust_id, company, contact, phone) VALUES (1,'HP','Manager','34702114') UPDATE customer SET company = 'AAA' WHERE cust_id = 1 DELETE FROM sales WHERE DATEDIFF(Year,ord_date,GETDATE()) >= 3

3. ADO.NET 개요 - 10 - 데이터베이스연결하는사용하는클래스들 ADO(Active Data Object) 의다음버전 Disconnected 환경에초점 네임스페이스 System.Data System.Data.SqlClient System.Data.OleDb System.Data.OracleClient System.Data.Odbc System.Common System.Data.SqlTypes 설명 DataSet, DataTable, DataRow 등의중요클래스들을가지고있다. NET Framework Data Provider for SQL Server는 SQL Server에있는데이터를사용하는데필요한클래스들을가지고있다. NET Framework Data Provider for OLE DB는 OLE DB Provider를사용하여 OLE DB 데이터를액세스하는데필요한클래스를가지고있다..NET Framework Data Provider for Oracle은 Oracle 8.1.7 이상의 Oracle 데이터소스를사용하는데필요한클래스들을가지고있다..NET Framework Data Provider for ODBC는관리되는공간의 Driver를사용하여데이터에액세스하는데사용되는클래스를가지고있다..NET Data Provider에의해공유된클래스가있다. SQL Server 에서사용되는고유데이터타입들을가지고있다.

3.1 ADO.NET의구성 (p383) - 11 - 데이터베이스.NET Data Provider Connection Transaction Command Parameters DataReader DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand DataSet DataTable DataRowCollection DataColumnCollection

3.2.NET Data Provider 란? - 12 - 데이터베이스 데이터베이스와의연결을관리한다 Connection 데이터베이스쿼리를수행한다 Command DataAdapter DataReader 데이터집합 (Data Set) 과데이터베이스와의데이터를교환한다읽기전용데이터를효율적으로사용할수있게해준다

3.3 DataSet 이란? - 13 - DataSet Tables DataTable Relations Columns DataColumn Constraints Rows DataRelation Constraint DataRow Object DataSets은하나또는여러개의테이블과관계로이루어짐 In-memory Cache of Data 하나또는여러개의 Data Adapter 로부터생성됨 XML 로부터생성됨 다른 DataSets 으로부터생성됨 Tables은 Columns, Constraints, 와 Rows로구성됨 모두다 Collection 임!!! Collection

3.4 DataSets 과 DataReaders - 14 - DataSet DataReader 데이터를읽고쓰기가가능 서로다른데이터베이스에서여러개의테이블들로구성할수있음 비연결 여러개의컨트롤에바인딩가능 데이터를앞으로 (Forward), 뒤로 (Backward) 읽을수있다 접근속도가느리다 Visual Studio.NET 도구를사용 읽기전용 하나의데이터베이스에서하나의 SQL 문을수행해서생성 연결 하나의컨트롤에만바인딩가능 앞으로만 (Forward-only) 접근속도가빠르다 일일이코딩해야함

- 15-4. Visual C# 2005 Windows 응용프로그램에서데이터사용하기 IDE 특징 데이터소스구성마법사 데이터소스창 DataSet 디자이너 새로추가되거나향상된컴포넌트와컨트롤들 BindingSource 컨트롤 DataGridView 컨트롤 Typed DataSets과 Typed DataAdapters(TableAdapter)

4.1 데이터소스구성마법사 - 16 - 데이터메뉴에서새데이터소스추가 데이터창에서새테이터소스추가

4.2 데이터소스창 - 17 - 테이블이나컬럼을폼위로드래깅 사용자가선택한 UI 컨트롤을생성 DataGridView 컨트롤을생성 각컨트롤을생성

DataSet 사용하여데이터베이스연결하기 - 18-1 ADO.NET 객체모델 1.1.NET Data Provider란? 1.2 DataSet 이란? 2. DataSet 사용하기 2.1 데이터베이스연결하기 2.2 DataSets 생성하기 2.3 DataSet으로부터데이터베이스수정하기 3. DataView 사용하기 4. XML 데이터바인딩하기

1 ADO.NET 객체모델 - 19 - 데이터베이스.NET Data Provider Connection Transaction Command Parameters DataReader DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand DataSet DataTable DataRowCollection DataColumnCollection

1.1.NET Data Provider 란? - 20 - 데이터베이스 데이터베이스와의연결을관리한다 Connection 데이터베이스쿼리를수행한다 Command DataAdapter DataReader 데이터집합 (Data Set) 과데이터베이스와의데이터를교환한다읽기전용데이터를효율적으로사용할수있게해준다

1.2 DataSet 이란? - 21 - DataSet Tables DataTable Relations Columns DataColumn Constraints Rows DataRelation Constraint DataRow Object DataSets은하나또는여러개의테이블과관계로이루어짐 In-memory Cache of Data 하나또는여러개의 Data Adapter 로부터생성됨 XML 로부터생성됨 다른 DataSets 으로부터생성됨 Tables은 Columns, Constraints, 와 Rows로구성됨 모두다 Collection 임!!! Collection

2. DataSet 사용하기 - 22 - Visual C# 2005 데이터소스창 Coding Connection DataAdapter - Command DataSet

2.1 데이터베이스연결하기 - 23 - SqlConnection 사용 SqlConnection mysqlconnection = new SqlConnection( data source=.\\sqlexpress;initial catalog=northwind; + Integrated security=true"); OleDbConnection 사용 OleDbConnection myoledbconnection = new OleDbConnection( provider=sqloledb; + data source=localhost;initial catalog=northwind; + initial catalog=true ); Data Source 서버이름 Initial catalog 데이터베이스이름 SQL Server 인증 - Windows 인증 Integrated security = TRUE or SSPI - Mixed 인증 User ID=sa;Password=password

2.2 DataSets 생성하기 - 24 - Client SelectCommand Server DataSet DataAdapter Data DataTable Fill Update Database Data InsertCommand UpdateCommand DeleteCommand

2.2 DataSets 생성하기 - 25 - void Form_Load (Object sender, EventArgs e) { SqlConnection connection = new SqlConnection ( data source=.\\sqlexpress;initial catalog=northwind; + integrated security=true"); SqlDataAdapter da = new SqlDataAdapter ("select * from customers,connection); DataSet ds = new DataSet(); da.fill(ds, Customers ); datagridview1.datasource = ds.tables[0]; }

2.3 DataSet 으로부터데이터베이스수정하기 - 26 - Client SelectCommand Server DataSet DataAdapter Data DataTable Fill Update Database Data InsertCommand UpdateCommand DeleteCommand

2.3 DataSet 으로부터데이터베이스수정하기 - 27 - DataAdapter.Update() 호출 InsertCommand,UpdateCommand, DeleteCommand 가필요 Visual Studio Wizard로자동생성 SqlCommandBuilder 사용 SqlCommandBuilder scb = new SqlCommandBuilder(mySqlDataAdapter);

2.3 DataSet 으로부터데이터베이스수정하기 - 28 - 새로운 Row 추가하기 (p399) DataRow mydatarow = mydataset.tables("customers").newrow(); mydatarow["customerid ] = "NewID ; //... mydataset.tables["customers ].Rows.Add(myDataRow); mysqldataadapter.update(mydataset, Customers ); 수정하기 DataRow mydatarow =mytabels[ Customers ].Rows[0]; mydatarow[1] = New CustomerName ; // mysqldataadapter.update(mydataset, "Customers"); 삭제하기 mytabels[ Customers ].Rows[0].Delete(); mysqldataadapter.update(mydataset, "Customers"); mydataset.acceptchanges();

3. DataView 사용하기 - 29 - DataSet의 DataTable에있는데이터를정렬해서보여주거나필터링해서보여줌 DataView mydataview = new DataView( mydataset.tables["customers ]); mydataview.sort = Country ; mydataview.rowfilter = Country= Mexio ;

4. XML 데이터바인딩하기 - 30 - DataSet 으로 XML 데이터읽어오기 DataSet ds = new DataSet(); ds.readxml( c:\\temp\\filename.xml"); datagrid1.datasource = ds.tables[0]; DataSet을 XML 파일로저장하기 DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter ("select * from Employees", conn); da.fill(ds); ds.writexml( c:\\temp\\filename.xml");

DataReader 사용하여데이터베이스연결하기 1 ADO.NET 객체모델 1.1.NET Data Provider 란? 2 DataReader 사용하기 2.1 데이터베이스연결하기 2.2 Command 사용하기 2.3 DataReader 로부터데이터읽기 2.4 수정, 삭제, 추가하기 3. 저장프로시저사용하기 - 31 -

1 ADO.NET 객체모델 - 32 - 데이터베이스.NET Data Provider Connection Transaction Command Parameters DataReader DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand DataSet DataTable DataRowCollection DataColumnCollection

2. DataReader 사용하기 - 33 - DataReader 개요 연결환경 (Connected Environment) Read-only Forward-Only DataReader 생성하기 데이터베이스수정, 추가, 삭제하기 Command사용

2.1 데이터베이스연결하기 - 34 - SqlConnection 사용 SqlConnection mysqlconnection = new SqlConnection( data source=.\\sqlexpress;initial catalog=northwind; + Integrated security=true"); OleDbConnection 사용 OleDbConnection myoledbconnection = new OleDbConnection( provider=sqloledb; + data source=localhost;initial catalog=northwind; + initial catalog=true ); Data Source 서버이름 Initial catalog 데이터베이스이름 SQL Server 인증 - Windows 인증 Integrated security = TRUE or SSPI - Mixed 인증 User ID=sa;Password=password

2.2 Command 사용하기 - 35 - SQL 문이나저장프로시저를실행 SqlCommand cmd = new SqlCommand( "select * from customers" mysqlconnection ); SqlDataReader dr = cmd.executereader()); Command 객체를수행하기위해서는다음중하나를호출 단일값 ( 예 : 집계값 ) 레코드들 DataReader 생성데이터베이스변경 Insert,Update,Delete문 Command 객체 ExecuteScalar() ExecuteReader() ExecuteNonQuery() 데이터베이스

2.3 DataReader 로부터데이터읽기 - 36 - Read() 를호출하여각레코드를읽기 명확하게 Connection을 Open/Close 해주어야한다 while( myreader.read()) { ListBox1.Items.Add(myReader["CustomerID ] + + myreader[1] + + myreader.getint32(2) ); }

2.4 수정, 삭제, 추가하기 - 37 - Command 객체를사용 SqlCommand cmd = new SqlCommand( delete from customers where CustomerID= AAAAA, mysqlconnection ); int result= cmd.executenonquery()); Command 객체 데이터베이스변경 Insert,Update,Delete문 ExecuteNonQuery() 데이터베이스

3. 저장프로시저사용하기 - 38 - Command 객체사용 CommandType = CommandType.StoredProcedure CommandText = 저장프로시저이름 단일값 ( 예 : 집계값 ) 레코드들 DataReader 생성데이터베이스변경 Insert,Update,Delete문 Command 객체 ExecuteScalar() ExecuteReader() ExecuteNonQuery() 데이터베이스 Parameter 사용 ParameterDirection = Input or Output

3. 저장프로시저사용하기 - 39 - SqlConnection con = new SqlConnection ("data source=.\\sqlexpress; + integrated security=true;initial catalog=northwind"); SqlCommand cmdsp = new SqlCommand( Employee Sales by Country", con); cmdsp.commandtype = CommandType.StoredProcedure; SqlParameter p1 = new SqlParameter("@Beginning_Date",SqlDbType.DateTime); p1.direction = ParameterDirection.Input; p1.value = 96/1/1 ; SqlParameter p2 = new SqlParameter("@Ending_Date", SqlDbType.DateTime); p2.direction = ParameterDirection.Input ; P2.Value = 96/12/31 ; cmdsp.parameters.add(p1); cmdsp.parameters.add(p2); //SqlDataReader dr = cmdsp.executereader(); DataReader 사용 //DataSet 사용 SqlDataAdapter da = new SqlDatAdapter(); da.selectcommand = com; DataSet ds = new DataSet(); da.fill(ds); datagridview1.datasource = ds.tables[0];

여러개테이블작업하기 - 40 - DataSet에테이블여러개넣기 테이블간에관계 (Relation) 설정하기 관련있는데이터가져오기

1. DataSet에테이블여러개넣기 - 41 - 첫번째테이블넣기 dacustomers = new SqlDataAdapter _ ("select * from Customers", conn1) dacustomers.fill(ds, "Customers"); 두번째테이블넣기 daorders = New SqlDataAdapter _ ("select * from Orders", conn2) daorders.fill(ds, "Orders"); Customers conn1 conn2 DataSet Orders

2. 테이블간에관계 (Relation) 설정하기 - 42 - DataColumn parentcol = ds.tables["customers ].Columns["CustomerID ]; Identify parent column DataColumn Identify child childcol column = ds.tables["orders ].Columns["CustomerID ]; parentcol Customers table DataRelation DataRelation Create DataRelation dr = new ("name", parentcol, childcol) ds.datarelations.add(dr); DataSet Orders table childcol

3. 관련있는데이터가져오기 - 43 - ds.tables[index].rows[index].getchildrows("relation"); ds.tables[index].rows[index].getparentrow("relation"); Customers GetChildRows Orders DataSet GetParentRow

3. 관련있는데이터가져오기 - 44 - DataView tableview; DataRowView currentrowview; tableview = new DataView(ds.Tables["Customers"]); currentrowview = tableview[dgcustomers.selectedindex]; dgchild.datasource = currentrowview.createchildview("custorders"); Customers DataRowView Orders DataView CreateChildView DataSet

DB에 Image 데이터저장하기 - 45 - DataSet 사용 Image를 DB에저장하기 DB에서 Image 가져오기 DataReader 사용 Command 사용 - Image를 DB에저장하기 DB에서 Image 가져오기 DB 에서원하는 Image 읽어오기

DataSet 사용 - Image를 DB에저장하기 - 46 - SqlConnection con = new SqlConnection ("data source=.;initial catalog=northwind;integrated security=true"); SqlDataAdapter da = new SqlDataAdapter("Select * From MyImages", con); SqlCommandBuilder MyCB = new SqlCommandBuilder(da); DataSet ds = new DataSet("MyImages"); da.missingschemaaction = MissingSchemaAction.AddWithKey; FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Read); byte[] MyData = new byte[fs.length]; fs.read(mydata, 0, System.Convert.ToInt32(fs.Length)); fs.close(); da.fill(ds, "MyImages"); DataRow myrow; myrow = ds.tables["myimages"].newrow(); myrow["description"] = "This would be description text"; myrow["imgfield"] = MyData; ds.tables["myimages"].rows.add(myrow); da.update(ds, "MyImages");

DataSet 사용 - DB 에서 Image 읽어오기 - 47 - //DB에저장된이미지를읽어와서파일로저장하고 PictureBox 에보여줌 SqlConnection con = new SqlConnection ("data source=.;initial catalog=northwind;integrated security=true"); SqlDataAdapter da = new SqlDataAdapter("Select * From MyImages", con); SqlCommandBuilder MyCB = new SqlCommandBuilder(da); DataSet ds = new DataSet("MyImages"); byte[] MyData = new byte[0]; da.fill(ds, "MyImages"); DataRow myrow; myrow = ds.tables["myimages"].rows[0]; MyData = (byte[])myrow["imgfield"]; int ArraySize = new int(); ArraySize = MyData.GetUpperBound(0); FileStream fs = new FileStream(@"C:\db.jpg", FileMode.OpenOrCreate, FileAccess.Write); fs.write(mydata, 0, ArraySize); fs.close(); picturebox1.image = Image.FromFile(newFilename);

Command 사용 - Image를 DB에저장하기 1-48 - FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Read); byte[] bs = new byte[fs.length]; fs.read(bs, 0, System.Convert.ToInt32(fs.Length)); fs.close(); SqlConnection con = new SqlConnection ("data source=.;initial catalog=northwind;integrated security=true"); SqlCommand com = new SqlCommand ("INSERT INTO MyImages(Description, + ImgField) VALUES (@Description, @ImgField)", con); SqlParameter p = new SqlParameter("@Description",System.Data.SqlDbType.VarChar); p.value = "Sample"; com.parameters.add(p);

Command 사용 - Image를 DB에저장하기 2-49 - SqlParameter binparam = new SqlParameter("@ImgField", System.Data.SqlDbType.Image); binparam.direction = ParameterDirection.Input; binparam.offset = 0; binparam.size = bs.length; binparam.value = bs; com.parameters.add(binparam); con.open(); com.executenonquery(); con.close();

DataReader 사용 - DB 에서 Image 읽어오기 - 50 - // DB 에저장된이미지를가져와서 newfilename 으로저장하고 PictureBox에보여주기 SqlConnection con = new SqlConnection ("data source=.;initial catalog=northwind;integrated security=true"); SqlCommand com = new SqlCommand(" SELECT ImgField FROM MyImages", con); con.open(); SqlDataReader OutputReader = com.executereader(); byte[] bs = new byte[0]; if (OutputReader.Read()) { } bs = (byte[])outputreader.getvalue(0); int ArraySize = new int(); ArraySize = bs.getupperbound(0); FileStream fs = new FileStream(newFilename, FileMode.OpenOrCreate, FileAccess.Write); con.close(); fs.write(bs, 0, ArraySize); fs.close(); picturebox1.image = Image.FromFile(@"C:\db.jpg");

DB 에서원하는 Image 읽어오기 - DataReader 사용 // id 에해당하는이미지 (ImgField) 읽어와서 PictureBox 에보여주기 String sql = "select ImgField from MyImages where id= @id"; SqlConnection con = new SqlConnection( "data source=.;initial catalog=northwind;integrated security=true"); SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader reader = null; SqlParameter param = new SqlParameter("@id", SqlDbType.VarChar); param.value = textbox1.text; cmd.parameters.add(param); con.open(); reader = cmd.executereader(); reader.read(); if (reader.getvalue(0)!= null) { } byte[] imgarray = (byte[])reader.getvalue(0); MemoryStream stream = new MemoryStream(imgArray); picturebox1.image = System.Drawing.Image.FromStream(stream); reader.close(); con.close(); - 51 -