ADO.NET 부산IT직업전문학교 성 명 건.

Slides:



Advertisements
Similar presentations
C# Programming Version 2.0 ADO.NET 김 규 태 (MCSD.Net, MCSE, MCDBA,SCJP)
Advertisements

CUBRID 소개 (Object 개념) 서비스 사업부 / 기술지원팀. 목차 구조 일반적 특징 객체지향 특징 ORDB 개념을 이용한 스키마 ORDB 개념을 이용한 질의.
SQLite 소개 및 안드로이드에서의 사용법
DB Injection과 대응방안 nwkim.
DB2 Information Management DB2 UDB CLP Command Summary.
웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로
DB 프로그래밍 학기.
DB 프로그래밍 학기.
소리가 작으면 이어폰 사용 권장!.
소프트웨어시스템설계(6주) 데이터베이스 연동
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
C#에서 데이터베이스 연동 방법.
C# 05장. 메소드와 인자.
JDBC 프로그래밍 이수지 이동주 1.
델파이7 웹서비스 클라이언트 델파이7에서 C#으로 작성한 웹서비스 함수를 사용하기 위한 간략한 방법을 정리해 보았습니다.
MySQL performance Xhark 김재홍.
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
JDBC 소개 및 설치 슬라이드 노트에 모든 설명을 작성 Database Laboratory.
데이터 베이스 란? 데이터 베이스 기능 데이터 베이스 관리 시스템 정보시스템의 구성 관게형 데이터 베이스
주)INVENTORNICS 노창배 소프트웨어 김 경 순
11장. 데이터베이스 서버 구축과 운영.
Department of Computer Software MyongJi University
C# Programming Version 2.0 ADO.NET.
Visual Studio 2015 을 이용한 오라클 DB 프로그래밍
기초 T-SQL.
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 김연왕
단일 테이블 조회를 위한 SELECT 문을 이해한다. 열 제약조건과 행 제약조건을 이해한다. 결과 집합 변경 방법을 이해한다.
ASP를 이용한 전자상거래 사이트 구축 지도교수님: 이형원 컴퓨터응용과학부 박정선.
ADO컨트롤을 이용하여 데이터를 관리하는 방법과 데이터베이스내의 레코드들을 리포트 형식으로 출력하는 디자인 기능을 알아본다.
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
01 데이터베이스 개론 데이터베이스의 등장 배경 데이터베이스의 발전 과정 데이터베이스의 정의 데이터베이스의 특징
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
주)INVENTORNICS 노창배 소프트웨어 김 경 순
SQL Server 7.0 세미나 (Performance Tuning)
JDBC (Java Database Connectivity)
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
고급 T-SQL.
SQL Query in the SSMS : DB, Table
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
JSP 게시판 구현.
II. XML과 Database 연동 [Beginning XML, 제13장]
View(뷰) 1 가상 테이블(Virtual Relation)
데이터베이스 (Database) SQL 추가 기능: 주장, 뷰, 프로그래밍 기법 문양세 강원대학교 IT대학 컴퓨터과학전공.
연습 문제 풀이 헥사 값의 의미 FTP 응답 코드의 의미 분석 (a) D 0A (b)
11장. GROUP BY와 HAVING 열의 그룹화 2개 이상의 열에 대한 그룹화
ADO.NET (SqlConnection, SqlCommand)
CACM 구현 public class CACM { public CACM(File file)
자바 5.0 프로그래밍.
SQL INJECTION MADE BY 김 현중.
Android -Data Base : 김성록 GyeongSang Univ. IT.
C# 10장. 참조형.
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
상세 개념적 모델링. 상세 개념적 모델링 정규화를 하는 이유 데이터의 중복성 제거 데이터 모형의 단순화 Entity, Attribute의 누락 여부검증 데이터 모형의 안전성 검증.
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
ADO.NET SqlDataReader class
Stored program 장종원
GB ridge 웹 모바일및 빅데이터 응용과정 3주차: 데이터베이스 프로그래밍 [경기도형 대학생 취업브리지 사업]
Presentation transcript:

ADO.NET 부산IT직업전문학교 성 명 건

목차 about ADO.NET 데이터베이스 연결 데이터베이스 조작 데이터 가져오기 DataTable, DataColumn, DataRow 클래스 DataView 클래스 DataSet 클래스 DataAdapter 클래스 2

학습목표 ADO.NET을 쓰는 이유를 배우고, 이전의 ADO와의 차이점을 안다 데이터베이스 연결하는 방법을 배운다 Command 클래스에 대해서 학습한다 Adapter와 DataSet클래스를 통해 비연결 지향 방법 연결에 대해서 배운다 Reader클래스로 연결지향 방법에 대해 배운다 ADO.NET을 통해 데이터베이스 조작 예제를 학습한다

about ADO.NET DB Data Consumers Data Provider DataAdpter DataSet WinForm WebForm Connection Command Other DB DataReader Data Consumers Data Provider 4

about ADO.NET 5

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

데이터베이스 연결 순서 Connection 객체 생성 데이터베이스 연결 문자열 지정(DSN) Connection 객체의 Open메서드로 데이터베이스 연결 Connection 객체의 Close메서드로 데이터베이스 연결 해제 속성 설명 ConnectionString 데이터베이스 연결 문자열 ConnectionTimeout 데이터베이스 연결하는 동안의 대기 시간 Database 현재 연결해 사용할 데이터베이스 이름 DataSource 연결할 MSSQL 인스턴스 이름 ServerVersion 클라이언트가 연결될 SQLServer 인스턴스를 포함한 문자열 State 현재 연결상태 반환 7

데이터베이스 연결 ConnectionString SqlConnection conn = new SqlConnection(); conn.ConnectionString = “Server =localhost;database=Northwind;UID=sa;PWD=;” ; conn.ConnectionString = “Server=localhost;database=Northwind;UID=sa;PWD=;” ; conn.ConnectionString = “Addr=127.0.0.1;database=Northwind;UID=sa;PWD=;” ; conn.ConnectionString = “Data Source=127.0.0.1;database=Northwind;UID=sa;PWD=;” ;

데이터베이스 연결 Connection 클래스 멤버 메서드 메서드 설명 ChangeDatabase 열려있는 SqlConnection에 대해서 현재 DB를 설정 Close DB 연결 종료 CreateCommand SqlCommand 개체 생성 Open DB 연결 Dispose SqlCommand 리소스 해제 9

데이터베이스 연결 MS-SQL 연결 using System.Data; using System.Data.SqlClient; // OleDb class ConsoleConnection { static void Main(string[] args) { SqlConnection conn = new SqlConnection(); // OleDbConnection conn.ConnectionString = "Server=localhost;database=ADO;uid=sa;pwd=;" ; //conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\ado.mdb“; try { conn.Open(); Console.WriteLine("데이터베이스 연결 성공.."); } catch(Exception ex) { Console.WriteLine("데이터베이스 연결 실패.."); } finally { if(conn != null) { conn.Close(); Console.WriteLine("데이터베이스 연결 해제.. "); } 명명된 파이프와 TCP/IP 확인

데이터베이스 조작 순서 Command 클래스 생성자 데이터베이스 연결 : Connection 객체 생성 속성 지정 : 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);

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

데이터베이스 조작 Command 클래스 멤버 메서드 메서드 설명 CreateParameter Prameter 생성 Prepare 데이터베이스 캐시에 쿼리문 저장 Close 데이터베이스 연결 종료 ExecuteNonQuery 데이터 명령 수행(DB 내용 변경시) – 변경된 레코드 수 반환 ExecuteReader 데이터 레코드를 Reader 객체로 읽어옴 – SELECT 쿼리에 주로 ExecuteScalar 쿼리문의 첫번째 열을 반환 – 결과가 하나일때, Object 형 반환 ReSetCommandTimeout CommandTimeout 프로퍼티를 30초로 재설정 Cancel 실행중인 명령을 취소

데이터베이스 조작 CommandText SqlCommand cmd = new SqlCommand(); cmd.CommandText = “SELECT * FROM Employees WHERE LastName = ‘King’”; //cmd.CommandText = “SELECT * FROM Employees WHERE LastName = ‘@LastName’”; cmd.CommandType = CommandType.Text; cmd.Connection = conn;

데이터 가져오기 DataReader 클래스 생성자 DataReader 클래스 속성 속성 설명 FieldCount SqlConnection conn = new SqlConnection(); SqlCommand cmd = new SqlCommand(“SELECT * FROM Employees”, conn); SqlDataReader read = cmd.ExecuteReader(); 속성 설명 FieldCount 현재 레코드의 필드수를 반환 IsClosed DataReader 개체가 닫혀있는지 반환 RecordsAffected 데이터를 조작할 경우 DB에 바뀐 레코드수 반환 Item DataReader 개체의 반환된 필드를 지정하는 배열

데이터베이스 조작 CreateParameter SqlCommand cmd = new SqlCommand(); … 1) SqlParameter param = cmd.CreateParameter(); // 파라미터 생성 param.ParameterName = “@LastName”; // 파라미터 이름 지정 param.SqlDbType = SqlDbType.NVarchar; // 파라미터 타입형 param.Size = 20; // 타입형의 사이즈 Varchar(10) param.Value = “King”; // 들어가는 값 2) cmd.Parameters.Add(“@LastName”, SqlDbTypeNVarchar, 20).Value = “King”; // 권장권장

데이터 가져오기 FieldCount RecordsAffected SqlCommand cmd = new SqlCommand(“SELECT * FROM Employees”, conn); SqlDataReader read = cmd.ExecuteReader(); Console.WriteLine(“Employees 의 전체 컬럼 개수 : {0}”, read.FieldCount); SqlCommand cmd = new SqlCommand(“Update Employees SET Country = ‘USA’ WHERE EmployeeID = 9”, conn); SqlDataReader read = cmd.ExecuteReader(); Console.WriteLine(“Employees의 변경된 레코드 개수 : {0}”, read.RecordsAffected);

데이터 가져오기 Item SqlCommand cmd = new SqlCommand(“SELECT * FROM Employees”, conn); SqlDataReader read = cmd.ExecuteReader(); while (read.Read()) { Console.WriteLine(read[“EmployeeID”] + “\t” + read[“LastName”] + “ “ + read[“FirstName”]); // 권장 Console.WriteLine(read[0] + “\t” + read[1] + “ “ + reate[2]); // 권장하지 않음 }

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

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

DataTable, DataColumn, DataRow 클래스 // User 컬럼을 만들고 Type을 System.String형으로 지정할 경우 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 속성과 자동증가 속성을 가지는 컬럼 col.ColumnName = “Num”; col.AutoIncrement = true; col.AutoIncrementSeed = 100; // 자동 증가 초기값 100 으로 col.AutoIncrementStep = 10; // 자동 증가 값 10

DataTable, DataColumn, DataRow 클래스 DataRow row = DataTable.NewRow(); 속성 설명 HasErrors 행의 오류 여부 확인 Item 지정된 열에 저장된 데이터를 가져오거나 설정 ItemArray 배열을 통해 이 행의 모든 값을 가져오거나 설정 RowError 행에 대한 사용자 지정 오류 설명을 가져오거나 설정 RowState DataRowCollection과의 관계와 관련, 행의 현재 상태 가져옴 Table 스키마가 있는 DataTable을 가져옴

DataTable, DataColumn, DataRow 클래스 DataRowState 열거형 속성 설명 HasErrors 행의 오류 여부 확인 Item 지정된 열에 저장된 데이터를 가져오거나 설정 ItemArray 배열을 통해 이 행의 모든 값을 가져오거나 설정 RowError 행에 대한 사용자 지정 오류 설명을 가져오거나 설정 RowState DataRowCollection과의 관계와 관련, 행의 현재 상태 가져옴 Table 스키마가 있는 DataTable을 가져옴

DataTable, DataColumn, DataRow 클래스 메모리 내에 존재하는 테이블 테이블 정보를 DataAdapter나 DataSet 클래스를 참고해 작성 DataTable 클래스 생성자 DataTable 클래스 속성 / 메서드 http://msdn.microsoft.com/ko-kr/library/system.data.datatable_properties(VS.80).aspx DataTable table = new DataTable(“Member”);

DataTable, DataColumn, DataRow 클래스 DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("Key"), new DataColumn("Index"), new DataColumn("Value")}); dt.Rows.Add(1, 10, "홍길동"); dt.Rows.Add(2, 20, "박길동"); dt.Rows.Add(3, 30, "김길동"); dt.PrimaryKey = new DataColumn[] { dt.Columns["Index"] }; //1. 일반검색 DataRow[] rows = dt.Select("Key=" + 2); Console.WriteLine(rows[0]["Value"].ToString()); //2. 키로검색 DataRow row = dt.Rows.Find(30); Console.WriteLine(row["Value"].ToString()); //3. Index 로검색 DataRow row2 = dt.Rows[0]; Console.WriteLine(row2["Value"].ToString());

DataView 클래스 임시 테이블 DataView 클래스 생성자 필요한 경우 메모리에 생성 복잡한 쿼리문을 단순화 시켜 개발 가능 DB에서의 View 기능을 DataView 클래스를 통해 구현 DataView는 DataTable로 부터 특정 필드와 레코드 정보를 가져오고, GridView 같은 Data Binding 컨트롤에 출력 DataView 클래스 생성자 public DataView DataView(DataTable tbl);

DataTable, DataColumn, DataRow 클래스 DataTable & DataView 예제

DataSet 클래스 비연결 지향 DataRelation을 이용한 Table간의 관계설정 DataSet = 메모리 DataBase DataSet을 통해 실제 DB의 종류에 상관없이 DataAdapter 객체를 통해 메모리상의 해당자료(테이블, 컬럼, 레코드정보)를 저장 가능 DB에 하나 이상의 Table이 있듯이, DataSet은 하나 이상의 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);

DataAdapter 클래스 DB에서 데이터 가져와 DataSet의 DataTable 생성후 레코드 추가 ADO.NET DB 연결방법 두가지 DataReader 와 DataAdapter 쿼리문을 통해 읽어오는 data는 주로 DataReader사용 DB에서 읽어오는 시간은 상대적으로 빠름 DB와의 연결상태 유지로 인해 시스템자원 낭비 비 연결지향(DataSet)을 사용할 때 DataAdapter/DataSet을 사용하면 초기 Data 로딩은 느린편 필요한 경우에만 DB와 연결됨으로 인해 시스템 자원 낭비 최소화

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

DataAdapter 클래스 DeleteCommand 속성 DataAdapter 클래스 멤버 메서드 메서드 설명 Fill string sql = “SELECT * FROM Emplyoees”; SqlConnection conn = new SqlConnection(“Server=localhost;DataBase=Northwind;uid=sa;pwd=;”); SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); adapter.DeleteCommand = new SqlCommand(“DELETE FROM Employees WHERE EmployeeID = 10”, conn); 메서드 설명 Fill 데이터원본 테이블을 DataSet안에 DataTable에 입력 FillSchema 데이터 원본 스키마에 맞게 DataSet의 DataTable을 생성 Update DataSet의 DataTable에서 변경된 데이터를 원본 테이블에 반영

DataAdapter 클래스 DataAdapter, DataSet 예제

학습정리 ADO.NET이 이전 방식인 ADO보다 좋은 점은 무엇인가? OleDB에서 사용할 연결 개체는 무엇인가? Command 클래스에 ExecuteReader() 메서드는 어디에서 많이 쓰는가? Read 클래스에 데이터가 있는 지 확인하는 방법은? Adapter와 DataSet을 이용하여 윈폼 예제를 작성할 수 있는가?