Presentation is loading. Please wait.

Presentation is loading. Please wait.

C# 17장. ADO.NET.

Similar presentations


Presentation on theme: "C# 17장. ADO.NET."— Presentation transcript:

1 C# 17장. ADO.NET

2 DB 사용하기 위한 방법(초기) SQL 서버 오라클 DBLib OCI SQL 서버용 응용 프로그램 ORACLE 응용 프로그램

3 DB 사용하기 위한 방법 ADO ADO.NET OLE DB ODBC
ODBC : 열린 접속 환경 제공 C 언어 위주의 함수 호출 구조 OLE DB : COM 프로토콜에 기반하며 메일이나 파일 시스템 등 비관계형 데이터에도 접속할 수 있는 방법 제공 기능적으로 완벽하였으나, 너무 복잡함 ADO : OLE DB를 쉽게 쓸 수 있도록 래핑한 것(성능에 문제 발생) ActiveX Data Objects ADO.NET : ADO 가 닷넷 환경에 맞게 업그레이드 된 것

4 ADO.NET 구조 SQL Server Provider SQL 서버 ORACLE Provider 오라클 ADO.NET
응용 프로그램 오라클 ORACLE Provider ODBC Provider MySQL OLE DB Provider Access

5 ADO.NET 개요 ADO.NET ADO.NET의 개선 사항 ADO.NET 관련 네임스페이스
ADO(ActiveX Data Objects) + .NET ADO.NET의 개선 사항 닷넷 기반의 다양한 언어 지원 XML 지원 프레임웍 상에서 일관된 포맷으로 지원 단절된 데이터 구조를 표준으로 사용 컨넥션(Connection)이 끊어진 상태에서 작업, 소형 메모리 데이터베이스 모델 지원 ADO.NET 관련 네임스페이스 System.Data System.Data.Common System.Data.Oledb System.Data.SqlClient

6 ADO.NET 의 기본 구조 1 .NET Data Provider DataSet Command DataReader
연결지향 DataReader Database Connection DataAdapter 비연결지향 DataSet XML DataSet

7 ADO.NET 의 기본 구조 2 Database Connection 공급자(Provider) Command DataSet
XML 문서 Connection 공급자(Provider) Command DataSet SqlClient OleDb OracleClient Odbc Database DataReader DataAdapter 7

8 Connection과 데이터 공급자 SqlClient 공급자 OleDb 공급자
SQL Server 공급자(SqlClient)는 OLE와 ODBC와 같은 중간계층 없이 MS-SQL 전용으로 직접 연결되기 때문에 간단하며 효율적으로 동작한다. Microsoft SQL Server 버전 7.0 이상에 연결한다. OleDb 공급자 OLE DB 공급자는 OLE DB를 사용해서 노출된 데이터 소스 및 Microsoft SQL Server 버전 6.x 또는 그 이전 버전에 SQLOLEDB 즉 SQL Server용 OLE DB 공급 자를 통해 연결한다. ODBC 공급자(.NET Framework 2.0에 추가된 공급자) ODBC를 사용해서 노출된 데이터 소스에서 사용한다. System.Data.Odbc Oracle 공급자(.NET Framework 2.0에 추가된 공급자) 오라클 데이터 소스에서 사용한다.(오라클 클라이언트 소프트웨어 버전 이 상에서 지원) System.Data.Oracle

9 연결 문자열 using System.Data.SqlClient; SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=ADOTest; User ID=sa;Password=csharp777"); conn.open(); using System.Data.OleDb; OleDbConnection con = new Data Source=C:/NWind.mdb");

10 연결 설정 SQL DB 연결 순서 Connection의 속성 1. 네임스페이스 명시
using System.Data.SqlClient; 2. Connection 객체 생성(연결 프로퍼티 설정) SqlConnection conn; conn = new SqlConnection("Server=localhost; user id=sa;password=csharp777; database=ADOTest"); 3. Connecton 연결 conn.Open(); 4. 작업수행( SQL 쿼리 작업) 5. 연결 닫기 conn.Close(); Connection의 속성 conn.Database conn.DataSource conn.ServerVersion conn.State conn.WorkstationId

11 DB 생성(ADOTest) SQL Server Management Studio 클릭

12 연결 클릭

13 새 데이터베이스 클릭

14 테이터베이스 이름 : ADOTest 입력 확인 클릭

15 데이터베이스 확장 추가된 ADOTest DB 확인

16 sa 패스워드 변경 속성 클릭(sa)

17 sa 패스워드 변경 암호 입력(csharp777) 확인 클릭

18 연결 테스트 /** SqlClient Connection 설정 테스트 **/ using System; using System.Data; using System.Data.SqlClient; class ConnectionTest { public static void Main(string[] args) string strConn = "server=brain;database=ADOTest;user id=sa; password=csharp777"; SqlConnection conn = new SqlConnection(strConn); conn.Open();// Open Connection Console.WriteLine("1. Database = " + conn.Database); Console.WriteLine("2. DataSource = " + conn.DataSource); Console.WriteLine("3. DataServerVersion = " + conn.ServerVersion); Console.WriteLine("4. State = " + conn.State); Console.WriteLine("5. WorkstationID = " + conn.WorkstationId); conn.Close();// Close Connection Console.WriteLine("6. State = " + conn.State); }

19 sqlCommand 클래스 SqlCommand 클래스 SqlCommand에서 사용할 수 있는 명령들
DB에 필요한 명령을 전달하거나 그 결과를 받아올 때 사용하는 클래스 SqlCommand에서 사용할 수 있는 명령들 단일 값 및 레코드 셋을 반환하는 SELECT, CREATE, ALERT, DROP 같은 DLL(Data Definition Language) 명령 GRANT, DENY, REVOKE 같은 DCL(Data Control Language) 명령 INSERT, UPDATE, DELETE 같은 DML(Data Modification Language) 명령 SqlCommand 클래스 주요 함수 ExecuteNonQuery() SQL 문을 실행하고 처리된 행의 개수를 반환 ExecuteReader() 쿼리를 Connection에 보내고 SqlDataReader를 생성 ExecuteScalar() 쿼리를 실행하고 쿼리에서 반환된 결과 집합의 첫번째 행의 첫번째 열 반환 ExecuteXmlReader() 쿼리를 Connection에 보내고 XmlReader 객체를 생성

20 sqlCommand 의 ExecuteNonQuery
데이터베이스의 쿼리(Query) 중 Select 명령을 제외한 대부분의 명령을 처리할 수 있다. ExecuteNonQuery()의 사용 Connection 생성 및 Open string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); SqlCommnad 생성 string createQuery = "create table Address ( id int, name char(20), addr char(40))"; SqlCommand comm = new SqlCommand(createQuery, conn); SqlCommand 실행 comm.ExecuteNonQuery(); Connection Close conn.Close();

21 sqlCommand 의 ExecuteNonQuery ( Address 테이블 생성후 자료 입력)
/** SqlCommand의 ExecuteNonQuery() **/ using System; using System.Data; using System.Data.SqlClient; class CommandNonQueryTest { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string createQuery = "create table Address ( id int, name char(20), addr char(40))"; string query1 = "Insert into Address values (1, '김삿갓', '서울시')"; string query2 = "Insert into Address values (2, '홍길동', '부산시')"; string query3 = "Insert into Address values (3, '춘향이', '광주시')"; string query4 = "Insert into Address values (4, '개똥이', '대구시')"; string query5 = "Insert into Address values (5, '김선달', '대전시')"; //1. Connection 생성과 Open SqlConnection conn = new SqlConnection(conStr); conn.Open(); //2. Command 생성 SqlCommand comm = new SqlCommand(createQuery, conn); SqlCommand comm1 = new SqlCommand(query1, conn); SqlCommand comm2 = new SqlCommand(query2, conn); SqlCommand comm3 = new SqlCommand(query3, conn); SqlCommand comm4 = new SqlCommand(query4, conn); SqlCommand comm5 = new SqlCommand(query5, conn); //3. Command 수행 comm.ExecuteNonQuery(); comm1.ExecuteNonQuery(); comm2.ExecuteNonQuery(); comm3.ExecuteNonQuery(); comm4.ExecuteNonQuery(); comm5.ExecuteNonQuery(); //4. Connection Close conn.Close(); }

22 결과 확인 새 쿼리 클릭

23 쿼리문 입력 USE ADOTest; select * from dbo.Address;
실행 클릭 결과 확인

24 sqlCommand의 Parameter(Insert문장)
반복적인 쿼리 작업이나 쿼리가 복잡할 경우에 주로 사용한다. Parameter 변수를 선언하는 방법 string query ="Insert into SqlCommand comm = new SqlCommand(query, conn); Parameter 타입을 지정하는 예 SqlDbType.TinyInt); SqlDbType.Char); SqlDbType.Char); Parameter의 값 설정 = 6; = "HongGilDDong"; = "Seoul"; SqlCommand의 실행 comm.ExecuteNonQuery();

25 sqlCommand의 Parameter(Insert문장)
멤버 .NET Type 설명 BigInt Int64 64비트 부호화 정수 Binary Byte[ ] 1~ 8,000바이트 이진 데이터의 고정 길이 스트림 Bit Boolean 0,1 및 null 참조일 수 있는 부호 없는 숫자값 Char String 1~8,000자 유니코드 제외 문자의 고정 길이 스트림 DateTime 정확성 3.33밀리초, ~ 일 날짜 및 시간 데이터 Decimal ~ 고정 전체 자릿수 및 소수 자릿수값 Float Double -1.79E+308~1.79E +308 부동 소수점 숫자 Image 0~ 바이트 이진 데이터의 가변 길이 스트림 Int Int32 32비트 부호 있는 정수 Money 정확성 통화 단위의 10000분의 1 -263(또는 -922,337,203,685, )~263-1 통화값 NChar 1~4.000자 유니코드 문자의 고정 길이 스트림 NText 230 – 1까지 유니코드 데이터의 가변 길이 스트림 NVarChar 1~4.000자 유니코드 문자의 가변 길이 스트림 Real Single -3.40E+38 ~3.40E +38 부동 소수점 숫자 SmallDateTime 정확성 1초, ~ 일인 날짜 및 시간 데이터 SmallInt Int16 16비트 부호 있는 정수 SmallMoney 정확성이 통화 단위의 1000분의 10 범위 -214, ~+214, 까지인 통화값 Text 최대 231-1자 유니코드 제외 데이터의 가변길이 스트림 Timestamp yyyymmddhhmmss 형식의 날짜 및 시간 데이터 TinyInt Byte 8비트 부호 없는 정수 UniqueIdentifier Guid GUID(Globally Unique IDentifier) VarBinary 1~8,000바이트 이진 데이터의 가변 길이 스트림 VarChar 1~8,000문자 비유니코드 문자의 가변 길이 스트림 Variant Object SQL Server 값 Empty 및 Null, 숫자, 문자열, 이진 또는 날짜 데이터를 포함할 수 있는 특수 데이터 형식 sqlCommand의 Parameter(Insert문장)

26 sqlCommand의 Parameter(Insert문장)
/** SqlCommand의 Parameter 이용 I **/ using System; using System.Data; using System.Data.SqlClient; public class CommandParamTest { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=A DOTest"; string query = "Insert into //1. Connection 생성과 Open SqlConnection conn = new SqlConnection(conStr); conn.Open(); //2. Command 생성 SqlCommand comm = new SqlCommand(query, conn); //3. Command의 Parameter Type설정 SqlDbType.TinyInt); SqlDbType.Char); SqlDbType.Char); //4. Command의 Parameter 값설정과 명령 실행1 = 6; = "HongGilDDong"; = "Seoul"; comm.ExecuteNonQuery(); //5. Command의 Parameter 값설정과 명령 실행2 = 7; = "MR.Kim"; = "Pusan"; //6. Connection Close conn.Close(); }

27 결과 조회

28 비주얼 스튜디오에서 새 쿼리 클릭

29 SqlCommand의 ExecuteReader
Select 쿼리를 처리할 때 사용하는 함수 SqlDataReader를 얻기 위한 절차 1. 네임스페이스 명시 using System.Data.SqlClient; 2. Connection 객체 생성 : 생성자에게 연결 정보 전달, 연결 프로퍼티 설정 SqlConnection conn = new SqlConnection(Server=localhost; user id=sa; password=; database=northwind"); 3. Connecton 연결 conn.Open(); 4. Command 객체 생성 : 실행할 쿼리와 Connection을 인수로 함 SqlCommand comm = new SqlCommand("select * from 테이블명", conn); 5. 데이터 읽어오기 SqlDataReader reader = comm.ExecuteReader(); 6. 작업수행 7. 연결 닫기 conn.Close(); Connection Database SqlCommand (Select 문장) SqlDataReade r SqlCommand의 SqlDataReader ExecuteReader()의 호출

30 ExecuteReader() 예제 /** ExecuteReader()를 테스트하는 예제 **/ using System; using System.Data.SqlClient; public class CommandReader { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string query = "select * from Address"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); SqlCommand comm = new SqlCommand(query, conn); SqlDataReader sr = comm.ExecuteReader(); while (sr.Read()) Console.Write(sr.GetInt32(0) + "|"); Console.Write(sr.GetString(1).Trim() + "|"); Console.Write(sr.GetString(2)); Console.WriteLine(); } sr.Close(); conn.Close();

31 SqlCommand의 Parameter(Select문장)
데이터베이스 Connection 생성과 Open string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string query = "select * from Address where or SqlConnection conn = new SqlConnection(conStr); conn.Open(); Command 생성과 Parameter 타입 지정 SqlCommand comm = new SqlCommand(query, conn); SqlDbType.Char); SqlDbType.Char); Command의 Parameter 값 설정 = "서울시"; = "대전시"; 데이터 읽어오기 SqlDataReader sr = comm.ExecuteReader(); while(sr.Read()){ Console.WriteLine(sr.GetInt32(0)+"|"+ sr.GetString(1).Trim()+"|"+ sr.GetString(2) ); } SqlDataReader와 Connection 닫기 sr.Close(); conn.Close();

32 SqlCommand의 Parameter(Select문장)
/** SqlCommand의 파라미터 이용 **/ using System; using System.Data; using System.Data.SqlClient; public class CommandParamTest2 { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string query = "select * from Address where or SqlConnection conn = new SqlConnection(conStr); conn.Open(); SqlCommand comm = new SqlCommand(query, conn); SqlDbType.Char); SqlDbType.Char); = "서울시"; = "대전시"; SqlDataReader sr = comm.ExecuteReader(); while (sr.Read()) Console.Write(sr.GetInt32(0) + "|"); Console.Write(sr.GetString(1).Trim() + "|"); Console.Write(sr.GetString(2)); Console.WriteLine(); } sr.Close(); conn.Close();

33 SqlCommand를 이용한 XmlReader
Connection 생성과 Open string conStr = "Server=localhost;user id=sa;password=;database=northwind"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); Command 생성 및 처리 그리고 XmlReader 얻기 string xquery = "select * from Address FOR XML AUTO, ELEMENTS"; SqlCommand xcomm = new SqlCommand(xquery, conn); XmlReader reader = reader = xcomm.ExecuteXmlReader(); 그 외의 작업 while (reader.Read()){ //작업 } reader.Close(); conn.Close(); 컬럼 이름을 태그의 이름을 사용해서 XML 데이터를 구축한다.(RAW, AUTO, EXPLICIT) SqlCommand로 작업후 Reader들 SqlDataReader SqlConnection Database SqlCommand XmlReader

34 SqlCommand를 이용한 XmlReader
/** XMLReader를 사용하는 예제 **/ using System; using System.Data; using System.Data.SqlClient; using System.Xml; class CommandXmlTest { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string xquery = "select * from Address FOR XML AUTO, ELEMENTS"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); SqlCommand xcomm = new SqlCommand(xquery, conn); XmlReader reader = null; try { reader = xcomm.ExecuteXmlReader(); while (reader.Read()) switch (reader.NodeType) case XmlNodeType.Element: Console.Write("<{0}>", reader.Name); break; case XmlNodeType.Text: Console.Write(reader.Value.Trim()); case XmlNodeType.EndElement: Console.WriteLine("</{0}>", reader.Name); } catch (Exception e) Console.WriteLine(e.Message); finally reader.Close(); conn.Close();

35 DataSet과 DataAdapter

36 DataSet 과 DataAdapter .NET 데이터 공급자 DataSet DataTableCollection
Connection DataAdapter DataTableCollection Transaction SelectCommand DataTable DataRowCollection InsertCommand Command DataColumnCollection Transaction UpdateCommand ConstraintCollection DeleteCommand DataReader DataRelationCollection Database XML

37 .Net에서 이용되는 데이터 구조 DataReader Command Database DataSet DataAdapter
연결지향 Database Connection DataSet DataAdapter 비연결지향

38 DataAdapter 속성과 함수 DataAdapter 속성 DataAdapter 주요 함수 DeleteCommand
InsertCommand 입력 명령을 사용하는 Command 필드 SelectCommand 조회 명령을 사용하는 Command 필드 UpdateCommand 수정 명령을 사용하는 Command 필드 DataAdapter 주요 함수 Fill() 데이터 원본에 있는 데이터를 DataSet의 DataTable에 넣어준다. FillSchema() 데이터 원본의 스키마에 맞게 DataSet에 DataTable을 생성한다. Update() DataSet의 DataTable에서 변경된 데이터를 원본에 반영시킨다. DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand DataSet Fill() FillSchema() update()

39 DataColumnCollection
DataSet의 구성요소 .Net DataSet 구성요소 Constraint DataColumn DataRow DataTable DataRelation DataColumn DataRow DataSet의 개념상의 구성요소 DataSet DataTable DataColumnCollection DataRowCollection DataTableCollection 39

40 DataSet의 계층구조 DataSet DataTable DataColumn DataRow
DataColumnCollection DataTableCollection DataColumnCollection DataTable DataColumnCollection DataColumnCollection DataColumnCollection DataColumnCollection DataRowCollection DataColumnCollection DataColumn DataRow

41 DataSet을 만드는 방법 I Connection 생성 및 Open DataAdapter 생성 SqlCommand 할당
string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); DataAdapter 생성 SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand 할당 string query = "select * from Address"; adapter.SelectCommand = new SqlCommand(query, conn); DataSet 생성 DataSet ds = new DataSet(); DataAdapter를 이용해서 DataSet 채우기 adapter.Fill(ds); 작업수행 연결 닫기 conn.Close(); 41

42 DataSet 만들기 /** DataAdapter를 이용해서 DataSet 만들기 I **/ using System; using System.Data; using System.Data.SqlClient; public class AdapterHandleTest { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string query = "select * from Address"; //1. Connenction 생성과 Open SqlConnection conn = new SqlConnection(conStr); conn.Open(); //2. SqlDataAdapter 생성 SqlDataAdapter adapter = new SqlDataAdapter(); //3. Adapter에 SelectCommand 할당 adapter.SelectCommand = new SqlCommand(query, conn); //4. DataSet 생성 DataSet ds = new DataSet(); //5. Adapter를 통해서 DataSet 채우기 adapter.Fill(ds); //6. Connection 닫기 conn.Close(); }

43 DataSet으로 작업하기 DataAdapter를 생성할 때 디폴트 생성자를 사용한 후 sqlCommand를 할당
Connenction 생성과 Open string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); SqlDataAdapter 생성 SqlDataAdapter adapter = new SqlDataAdapter(); Adapter에 SelectCommand 할당 string query = "select * from Address"; adapter.SelectCommand = new SqlCommand(query, conn); DataSet 생성 DataSet ds = new DataSet(); Adapter를 통해서 DataSet 채우기 adapter.Fill(ds); Connection 닫기 conn.Close(); DataSet으로 작업하기 DataTable table= ds.Tables[0]; DataRowCollection rows = table.Rows; foreach (DataRow dr in rows){ for (int i = 0; i<table.Columns.Count; i++) Console.Write("{0,15}",dr[i]); Console.WriteLine(); } DataSet의 계층구조 DataSet Tables DataTableCollection DataColumnCollection DataColumnCollection DataTable DataColumnCollection DataColumnCollection DataColumnCollection DataColumnCollection DataColumnCollection DataRowCollection DataColumn DataRow Rows Columns 43

44 DataSet의 사용을 보여주는 예제 /** DataSet의 사용을 보여주는 예제 **/ using System; using System.Data; using System.Data.SqlClient; public class DataSetHandleTest { public static void Main() string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; string query = "select * from Address"; //1. Connenction 생성과 Open SqlConnection conn = new SqlConnection(conStr); conn.Open(); //2. SqlDataAdapter 생성 SqlDataAdapter adapter = new SqlDataAdapter(); //3. Adapter에 SelectCommand 할당 adapter.SelectCommand = new SqlCommand(query, conn); //4. DataSet 생성 DataSet ds = new DataSet(); //5. Adapter를 통해서 DataSet 채우기 adapter.Fill(ds); //6. Connection 닫기 conn.Close(); //7. DataSet으로 작업하기 DataTable table = ds.Tables[0]; DataRowCollection rows = table.Rows; foreach (DataRow dr in rows) { for (int i = 0; i < table.Columns.Count; i++) Console.Write("{0,15}", dr[i]); Console.WriteLine(); }

45 DataSet을 만드는 방법 II DataAdapter에 SQL 쿼리와 Connection을 매개 변수로 사용하는 방법
Connection 생성 및 Open string conStr = "Server=localhost;user id=sa;password=;database=northwind"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); DataSet 만들기 SqlDataAdapter adapter = new SqlDataAdapter("select * from Address", conn); DataSet ds = new DataSet("MyAddressDataSet");//DataSet의 이름 adapter.Fill(ds);//테이블의 이름 conn.Close(); DataSet으로 작업하기 DataTable table = ds.Tables[0]; DataRowCollection rows = table.Rows; foreach (DataRow dr in rows){ for (int i = 0; i<table.Columns.Count; i++) Console.Write("{0,15}",dr[i]); Console.WriteLine(); } SqlDataAdapter adapter = new SqlDataAdapter(); string query = "select * from Address"; adapter.SelectCommand = new SqlCommand(query, conn); DataSet ds = new DataSet(); 45

46 DataSet을 만드는 방법 2 /** DataAdapter를 이용해서 DataSet 만들기 II **/ using System; using System.Data; using System.Data.SqlClient; public class AdapterHandleTest2 { public static void Main(string[] args) string conStr = "Server=localhost;user id=sa;password=csharp777;database=ADOTest"; SqlConnection conn = new SqlConnection(conStr); conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter("select * from Address", conn); DataSet ds = new DataSet("MyAddressDataSet");//DataSet의 이름 adapter.Fill(ds);//테이블의 이름 conn.Close(); DataTable table = ds.Tables[0]; DataRowCollection rows = table.Rows; foreach (DataRow dr in rows) for (int i = 0; i < table.Columns.Count; i++) Console.Write("{0,15}", dr[i]); Console.WriteLine(); }

47 DataSet에서 InsertCommand 명령을 수행하는 방법
DataSet의 Update() DataSet에서 InsertCommand 명령을 수행하는 방법 DataSet 자체에 레코드를 삽입한다. DataAdapter에 SqlCommand를 지정한다. DataAdapter를 이용해서 DataSet을 데이터베이스로 업데이트한다. DataSet의 InsertCommand 명령 수행 DataSet DataColumnCollection DataTableCollection Database DataAdapter에 SqlCommand 지정 DataRow 2 1 DataTable (Insert 문장) 새로운 Row 삽입 DataRow row = table.NewRow(); row["id"] = "8"; row["name"] = "Uncle"; row["addr"] = "Ameria"; table.Rows.Add(row); 3 DataAdpater를 이용해서 Update() 47

48 연결형으로 처리하는 것 고려 모든 자료를 client로 down하여 1건을 입력하여 처리하는 것은 비효율적임
SqlDataAdapter adapter = new SqlDataAdapter("select * from Address", conn); DataSet ds = new DataSet("MyAddressDataSet");//DataSet의 이름 adapter.Fill(ds, "Address");//테이블의 이름 conn.Close(); DataTable table = ds.Tables["Address"]; //1. DataRow 생성하여 Row를 삽입하기 DataRow row = table.NewRow(); row["id"] = "8"; row["name"] = "Uncle"; row["addr"] = "Ameria"; table.Rows.Add(row); //2. SqlCommand 지정하기 conn.Open(); string strSql="Insert into adapter.InsertCommand = new SqlCommand(strSql, conn); SqlDbType.TinyInt, 0, "id"); SqlDbType.Char, 20, "name"); SqlDbType.Char, 40, "addr"); //3. DataAdapter를 이용하여 DataSet 업데이트하기 adapter.Update(ds, "Address"); 연결형으로 처리하는 것 고려 모든 자료를 client로 down하여 1건을 입력하여 처리하는 것은 비효율적임


Download ppt "C# 17장. ADO.NET."

Similar presentations


Ads by Google