C# Programming Version 2.0 ADO.NET.

Slides:



Advertisements
Similar presentations
Transaction ㅇ Transaction 을 직접 구현하려면, 까다로운 설계와 복잡한 코드를 필요로 하고 수정에 공수가 많이 들게 된다. ㅇ 스프링에서 제공하는 Transaction Manager 를 사용하여 쉽고 간편하게 어려운 트랜잭션을 해결할 수 있다. xml.
Advertisements

C# Programming Version 2.0 ADO.NET 김 규 태 (MCSD.Net, MCSE, MCDBA,SCJP)
CUBRID 소개 (Object 개념) 서비스 사업부 / 기술지원팀. 목차 구조 일반적 특징 객체지향 특징 ORDB 개념을 이용한 스키마 ORDB 개념을 이용한 질의.
1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
SQLite 소개 및 안드로이드에서의 사용법
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
DB Injection과 대응방안 nwkim.
웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로
DB 프로그래밍 학기.
DB 프로그래밍 학기.
소리가 작으면 이어폰 사용 권장!.
ADO.NET 부산IT직업전문학교 성 명 건.
김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실
7장 배열 ②.
소프트웨어시스템설계(6주) 데이터베이스 연동
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
C#에서 데이터베이스 연동 방법.
SQL*Plus - Oracle ISQL -
C# 05장. 메소드와 인자.
JDBC 프로그래밍 이수지 이동주 1.
델파이7 웹서비스 클라이언트 델파이7에서 C#으로 작성한 웹서비스 함수를 사용하기 위한 간략한 방법을 정리해 보았습니다.
MySQL performance Xhark 김재홍.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
JDBC 소개 및 설치 슬라이드 노트에 모든 설명을 작성 Database Laboratory.
주)INVENTORNICS 노창배 소프트웨어 김 경 순
11장. 데이터베이스 서버 구축과 운영.
Department of Computer Software MyongJi University
Visual Studio 2015 을 이용한 오라클 DB 프로그래밍
XML WEB SERVICE PDA WEB HARD
MySQL 기본 사용법.
Visual Studio 2005와 SQL Server 2005 최상의 만남: SQLCLR vs. T-SQL
ER-Win 사용 방법.
SQL Server 2000 세미나 Profiler를 이용한 문제해결
차례 튜닝 - 프로필러를 이용한 튜닝 프로필러 친해지기 프로필러 결과 테이블로 만들기 프로필러 결과 분석하기
ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)
Hadoop 김연왕
ADO컨트롤을 이용하여 데이터를 관리하는 방법과 데이터베이스내의 레코드들을 리포트 형식으로 출력하는 디자인 기능을 알아본다.
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
01 데이터베이스 개론 데이터베이스의 등장 배경 데이터베이스의 발전 과정 데이터베이스의 정의 데이터베이스의 특징
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
주)INVENTORNICS 노창배 소프트웨어 김 경 순
ㅇ 스프링 설정파일 (dispatcher-servlet.xml)
JDBC (Java Database Connectivity)
SQL Query in the SSMS : DB, Table
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
JSP 게시판 구현.
II. XML과 Database 연동 [Beginning XML, 제13장]
JSP Programming with a Workbook
데이터베이스 (Database) SQL 추가 기능: 주장, 뷰, 프로그래밍 기법 문양세 강원대학교 IT대학 컴퓨터과학전공.
Database 중고차 매매 DB 비즈니스IT 윤동섭.
연습 문제 풀이 헥사 값의 의미 FTP 응답 코드의 의미 분석 (a) D 0A (b)
ADO.NET (SqlConnection, SqlCommand)
ODBC &DAO 안명상.
자바 5.0 프로그래밍.
SQL INJECTION MADE BY 김 현중.
Android -Data Base : 김성록 GyeongSang Univ. IT.
주)INVENTORNICS 노창배 소프트웨어 김 경 순
JSP 빈즈 1.JSP 빈즈? JSP와 연동을 위해 만들어진 컴포넌트 클래스를 말한다. JSP 빈즈는 컨테이너에 위치하며, 데이터 처리와 공용화된 기능을 제공하기 때문에 빈즈를 잘 활용하면 프로그램의 중복을 줄이고 좀더 원할한 유지보수가 가능한다. 물론 , 모든 JSP를.
자바 5.0 프로그래밍.
C# 10장. 참조형.
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
상세 개념적 모델링. 상세 개념적 모델링 정규화를 하는 이유 데이터의 중복성 제거 데이터 모형의 단순화 Entity, Attribute의 누락 여부검증 데이터 모형의 안전성 검증.
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
ADO.NET SqlDataReader class
Stored program 장종원
Presentation transcript:

C# Programming Version 2.0 ADO.NET

학 습 목 표 ADO.NET 개요 ADO.NET 관련 네임스페이스 Data Provider DataBase 연결(Connection) DataBase 조작(Command) Data 가져오기 (DataReader) DataTable, DataColumn, DataRow Class DavaView Class DataSet Class DataAdapter Class

1. ADO.NET 개요 (1/2) Data Provider Data Consumers DataAdpter DataSet WinForm DB WebForm Connection Command Other DataReader Data Provider Data Consumers

1. ADO.NET 개요 (2/2) ADO.NET 아키텍처

2. ADO.NET 관련 네임스페이스 3. Data Provider 네임스페이스 포함하고 있는 클래스 System.Data System.Data.Common 데이터 공유 클래스 (Data Provider간에 공유되는 타입) System.Data.OleDb OleDb 제공 클래스 System.Data.SqlClient MSSQL 서버 제공 클래스 System.Data.SqlTypes MSSQL 서버 기본 데이터 형식 클래스 3. Data Provider 역할 OleDB SQL 데이터베이스 연결 OleDbConnection SqlConnection SQL명령수행 OleDbCommand SqlCommand 데이터 읽어오기 OleDbDataReader SqlDataReader 데이터 전송 OleDbDataAdapter SqlDataAdaper

4. 데이터베이스 연결(Connection) 1/5 ② 데이터베이스 연결 문자열 지정(DNS) ③ Connection 객체의 Open메서드를 호출해 데이터베이스 연결 ④ Connection 객체의 Close메서드를 호출해 데이터베이스 연결해제 속 성 설 명 ConnectionString 데이터베이스 연결 문자열 ConnectionTimeout 데이터베이스를 연결하려는 동안 대기시간 Database 현재 연결해 사용할 데이터베이스 이름 DataSource 연결한 SQL Server 인스턴스 이름 ServerVersion 클라이언트가 연결될 SQL Server인스턴스 버전을 포함한 문자열 State 현재 연결 상태 반환

4. 데이터베이스 연결(Connection) 2/5 ConnectionString ConnectionTimeout - 연결할 동안 기다리는 시간(기본값은 15초) - 0으로 설정하면 연결시도를 무기한 대기 SqlConnection conn = SqlConnection(); conn.ConnectionString = “Server =localhost;database=PUBS;UID=sa;PWD=;” ; conn.ConnectionString = “Server =localhost;database=PUBS;UID=sa;PWD=;” ; conn.ConnectionString = “Addr=127.0.0.1;InitialCatalog=PUBS;uid=sa;pwd=;“ ; conn.ConnectionString = “dataSource=127.0.0.1;database=PUBS;uid=sa;pwd=;” ;

4. 데이터베이스 연결(Connection) 3/5 메서드 설명 ChangeDatabase 열려있는 SqlConnection에 대해 현재 DB를 변경 Close DB 연결 종료 CreateCommand SqlCommand 개체 생성 Open DB 연결 Dispose SqlConnection 리소스 해제

4. 데이터베이스 연결(Connection) 4/5 ex) MS-SQL 연결 using System; using System.Data; using System.Data.SqlClient; class ConsoleConnection { static void Main(string[] args) SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Server=localhost;database=ADO;uid=sa;pwd=;" ; try conn.Open(); Console.WriteLine("데이터베이스 연결 성공.."); } catch(Exception ex) Console.WriteLine("데이터베이스 연결 실패.."); finally if(conn != null) conn.Close(); Console.WriteLine("데이터베이스 연결 해제.. ");

4. 데이터베이스 연결(Connection) 5/5 ex) OLE DB 연결 using System; using System.Data; using System.Data.OleDb; class ConsoleConnection2 { static void Main(string[] args) string source = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\ado.mdb" ; OleDbConnection conn = new OleDbConnection(source); try { conn.Open(); Console.WriteLine("데이터베이스 연결 성공..."); } catch(Exception ex) { Console.WriteLine("데이터베이스 연결 실패..."); finally { if(conn != null) conn.Close(); Console.WriteLine("데이터베이스 연결 해제...");

5. 데이터베이스 조작(Command) 1/5 Command 클래스 생성자 public SqlCommand(); ① 데이터베이스연결 : Connection 객체생성 ② 명령 수행 준비 : Command 객체 생성 ③ 속성지정 : Command객체의 CommandText 속성지정 (쿼리, 저장프로시저, 테이블) ④ SQL쿼리문 실행 : Execute() 를 통해 쿼리문 실행 Command 클래스 생성자 public SqlCommand(); public SqlCommand(string commandText); public SqlCommand(string commandText, SqlConnection connection); public SqlCommand(string commandText, SqlConnection connection, SqlTransaction transaction );

5. 데이터베이스 조작(Command) 2/5 Command 클래스 속성 속 성 설 명 CommandText 속 성 설 명 CommandText 실행할 SQL 쿼리문이나 저장프로시저 CommandTimeout DB 명령 실행 대기 시간 CommandType CommandText 타입을 지정(쿼리,저장프로시저,테이블) Parameters 쿼리문이나 저장프로시저에 사용할 매개변수가 포함된 ParameterCollection을 가져옴 Transaction 트랜잭션 처리 속성 Connection 연결되어 있는 Connection 인스턴스

5. 데이터베이스 조작(Command) 3/5 CommandText SqlCommand cmd = new SqlCommand(); cmd.CommandText = “select * from member where user =“david”; cmd.CommandType = CommandType.Text; CommandType (Text;StroreProcedure;TableDirect) OleDB전용 cmd.CommandText = “member”; cmd.CommandType = CommandType.TableDirect; cmd.CommandText = “select * from member”; cmd.CommandType = CommandType.Text;

5. 데이터베이스 조작(Command) 4/5 Command 클래스 멤버 메소드 메서드 설명 CreateParameter Prepare 데이터베이스 캐쉬에 쿼리문저장 Close 데이터베이스 연결 종료 ExecuteNonQuery 데이터 명령 수행(DB의 내용변경시) (변경된 레코드 수를 반환) ExcuteReader 데이터 레코드를 Reader 게체로 읽어옴 (주로 select 쿼리 수행) ExecuteScalar 쿼리문의 첫번째 열을 반환 (반환되는 결과값이 하나만 요구될때 , object형 으로 반환됨) ReSetCommadnTimeout CommandTimeout 프로퍼티를 30초로 재설정 Cancel 실행중인 명령을 취소함

5. 데이터베이스 조작(Command) 5/5 CreateParameter 매개변수를 사용하는 쿼리문, 저장 프로시저를 위해 매개변수를 지정할 수 있는 Parameter 개체를 생성할 때 호출 SqlCommand cmd = new SqlCommand(); ........ SqlParameter param = cmd.CreateParameter(); param.ParameterName = “@name”; param.SqlDbType = SqlDbType.Varchar; param.Size = 10; param.Value = “korea”;

6. 데이터 가져오기 (DataReader) 1/4 public SqlDataReader ExecuteReader(); SqlConnection conn = new SqlConnection(); SqlCommand cmd = new SqlCommand (“selelct * from member”, conn); SqlDataReader read = cmd.ExecuteReader();

6. 데이터 가져오기 (DataReader) 2/4 속 성 설 명 FieldCount 현재 레코드의 필드(수)를 반환 IsClosed DataReader 개체가 닫혀있는지 반환 RecordsAffected 데이터를 조작할 경우 DB에서 바뀐 레코드 수 반환 Item DataReader개체의 반환된 필드를 지정하는 배열 FieldCount SqlCommand cmd = new SqlCommand(“select * from memner”, conn); SqlDataReader read = cmd.ExcuteReader(); Console.WriteLine(“member의 전체칼럼 개수 : {0}”, read.FieldCount); RecordsAffected SqlCommand cmd = new SqlCommand(“update member set id=david”, conn); SqlDataReader read = cmd.ExcuteReader(); Console.WriteLine(“변경된 레코드 개수 : {0}”, read.RecordsAffected);

6. 데이터 가져오기 (DataReader) 3/4 Item public object this [string name] {get;} //칼럼(필드)명 사용 public object this [int i] {get;} //서수 사용 -> 서수는 0부터 사용 SqlCommand cmd = new SqlCommand(“select * from memner”, conn); SqlDataReader read = cmd.ExcuteReader(); while(read.Read()) { Console.WriteLine(read[“id”] + “\t” + read[“pwd”] + “\t” + read[“name”]); Console.WriteLine(read[0] + “\t” + read[1] + “\t” + read[2]); } read[칼럼명] or read[서수] 두가지 형식으로 사용가능

6. 데이터 가져오기 (DataReader) 4/4 메서드 설명 Read 레코드 커서를 다음 레코드로 이동 NextResult 여러개의 레코드 셋에서 다음 레코드셋으로 이동 GetName 레코드셋의 필드이름을 반환 GetOrdinal 레코드셋의 필드 서수 값 반환 GetValue 특정필드의 값을 출력함 GetValues 현재 레코드의 모든 필드 값을 배열 형태로 반환 GetXXX 레코드셋의 레코드를 XXX(데이터형)함수를 이용해서 가져옴 Close DataReader 개체를 닫음

7. DataTable, DataColumn, DataRow 클래스 1/5 System.Data 타입 설명 DataTable 데이터 테이블 DataCoumn DataTable에서 특정 Column을 나타낼 때 사용 DataRow DataTable에서 특정 Row을 나타낼 때 사용 DataColumn User칼럼을 만들고 Type을 System.String형으로 지정할 경우 (1) DataColumn col = new DataColumn(“User”, Type.GetType(“System.String”));

7. DataTable, DataColumn, DataRow 클래스 2/5 User칼럼을 만들고 Type을 System.String형으로 지정할 경우 (2) DataColumn col = new DataColumn(); col.DataType = Type.GetType(“System.String”); col.Caption = “데이터칼럼”; col.ColumnName = “User”; col.AllowDBNull = false; col.ReadOnly = true; col.Unique = true; 이름이 NUM이며 Primary Key 속성과 자동증가 속성을 갖는 칼럼 DataColumn col = new DataColumn(); col.ColumnName = “NUM”; col.AutoIncrement = true; col.AutoIncrementSeed = 100; //자동증가초기값을 100으로 col.AutoIncrementStep = 10; //한번에 증가되는 값을 10으로

7. DataTable, DataColumn, DataRow 클래스 3/5 DataRow row = DataTable.NewRow(); //단독생성 불가 DataRow 클래스 속성 ms-help:// MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ko/cpref4/html/T_System_Data_DataRow_Properties.htm DataRowState 열거형 해당 레코드의 상태를 표시할 때 사용 ms-help:// MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ko/cpref4/html/T_System_Data_DataRowState.htm DataRowState를 사용한 예제 (ex)DataRowExam.cs

7. DataTable, DataColumn, DataRow 클래스 4/5 DataTable은 직접작성가능하나, Sql서버나 OLE DB에서 만들어진 데이블정보를 DataAdapter 클래스와 DataSet클래스를 참고해 작성 DataTable 클래스 생성자 DataTable table = new DataTable(“Member”); DataTable 클래스 속성 ms-help:// MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ko/cpref4/html/T_System_Data_DataTable_Properties.htm PrimaryKey DataTable table = new DataTable(“member”); DataColumn[] pk = new DataColumn[3]; pk[0] = table.Columns[“ID”]; pk[1] = table.Columns[“PWD”]; pk[2] = table.Columns[“NAME”]; table.PrimaryKey = pk;

7. DataTable, DataColumn, DataRow 클래스 5/5 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ko/cpref4/html/T_System_Data_DataTable_Methods.htm AcceptChanges() DataTable에 레코드를 추가/갱신/삭제할 경우 내부 데이터는 실제 변경되지 않음 다만, DataRow의 RowState 값만이 변경. 실제 테이블에 변경된 내용을 적용하기 위해 AcceptChanges() 호출

8. DataView 클래스 DataTable 클래스 생성자 View는 DB안에 실제로 존재하는 Table이 아니라 select쿼리문 형태로 저장되어 있다가 필요할 경우에만 메모리에 생겼다 소멸되는 임시 테이블 View를 이용하면 복잡한 쿼리문을 단순화시켜 개발가능 DB에서의 View 기능을 DataView클래스를 통해 구현 DataView는 DataTable로부터 특정 필드와 레코드 정보를 가져오고, DataGrid 같은 Data Binding 컨트롤에 출력 DataTable 클래스 생성자 public DataView DataView(DataTable tbl);

9. DataSet 클래스 DataRelation클래스를 이용한 Table간의 관계설정 DataSet = 메모리 DataBase DataSet을 통해 실제 DB의 종류와 상관없이 DataAdapter객체를 통해 메모리상에 해당자료 (테이블, 칼럼, 레코드정보)를 저장 가능 DB에 하나이상의 Table이 있듯이, DataSet은 1개 이상의 DataTable개체를 소유 DataRelation클래스를 이용한 Table간의 관계설정 DataSet data = new DataSet(); DataColumn col_Parents = data.Tables[0].Columns[0]; DataColumn col_Child = data.Tables[1].Columns[0]; DataRelation relation = new DataRelation(“Relation”, col_Parents, col_Child); data.Relation.Add(relation); //data.Relations.Add(“Relation”,data.Tables[0].Columns[0]), data.Tables[1].Columns[0]);

10. DataAdapter 클래스 DataAdapter는 DB에서 data를 가져와 DataSet의 DataTable을 생성하고 레코드를 추가 ADO.NET에서 DB의 자료를 가져오는 두가지 방법(DataReader / DataAdapter) 쿼리문을 통해 읽어오는 data는 주로 DataReader사용 비 연결지향(DataSet)을 사용할 때 DataAdapter/DataSet을 사용하면 초기 Data 로딩은 느린편 DB에서 읽어오는 시간은 상대적으로 빠름 DB와의 연결상태 유지로 인해 시스템자원 낭비 필요한 경우에만 DB와 연결됨으로 인해 시스템 자원 낭비 최소화 DataAdapter / DataSet 은 N-Tier 응용프로그램 개발 / 웹서비스 사용 / 여러 테이블 정보를 동적으로 처리할 경우 Data Cache(메모리 데이터베이스)로 사용할 경우 / XML 문서를 이용한 데이터 처리 등의 경우 주로 사용

10. DataAdapter 클래스 DataReader 클래스 생성자 속 성 설 명 DeleteCommand public SqlDataAdapter(); public SqlDataAdapter(SqlCommand selectCommand); public SqlDataAdapter(string selectCommandText, SqlConnection selectConnection); public SqlDataAdapter(string selectCommandText, string selectConnectionString) 속 성 설 명 DeleteCommand 데이터를 삭제할 경우 InsertCommand 데이터를 입력할 경우 SelectCommand 데이터를 검색할 경우 UpdateCommand 데이터를 갱신할 경우

10. DataAdapter 클래스 DataSet 클래스 멤버 메소드 DeleteCommand 메소드 설 명 string sql = “select * from member”; SqlConnection conn = new SqlConnection(“Server=localhost;DataBase=Pubs;uid=sa;pwd=;”); SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); adapter.DeleteCommand = new SqlCommand(“Delete from member where id = “david”, conn) DataSet 클래스 멤버 메소드 메소드 설 명 Fill 데이터 원본 테이블을 DataSet안에 DataTable에 입력 FillSchema 데이터 원본 스키마에 맞게 DataSet의 DataTable을 생성 Update DataSet의 DataTable에서 변경된 데이터를 원본테이블에 반영

http://msdn.microsoft.com/vs2005