ADO_Example - DB 응용

Download Report

Transcript ADO_Example - DB 응용

ADO.NET
VB.NET 프로그래밍
부경대학교 시스템경영공학과
김민수
내용
• ADO.NET Overview
• ADO.NET classes
• VB.NET 실습
ADO.NET Overview
• DB 접근 서비스를 제공하는 .NET class의 집합
– System.Data 네임스페이스
• DataSet
• DataView
– System.Data.OleDb 네임스페이스
•
•
•
•
OleDbConnection
OleDbDataAdapter
OleDbCommand
OleDbParameter
– 비 접속 아키텍처로 설계됨
ADO.NET classes
• OleDbConnection class
– 접속문자열을 통해 데이터 원본(SQL서버)으로의 접속을
제공
인자
설명
Provider
이용될 OLE DB 공급자를 지정
Data Source
데이터 저장고를 가진 서버의 이름을 지정
Initial Catalog
접속할 데이터베이스의 이름을 지정
User ID, Password
사용자 로그인에 이용될 사용자 ID와 암호를 지정
Integrated Security
SSPI(Security Support Provider Interface )로 값이 지정될 경우
공급자가 운영체제의 보안 공급자를 호출하여 로그인 이름을 얻고, 이
이름을 이용해 데이터 저장고에 접근하도록 함
Dim objConnection As OleDbConncection = New OleDbConncection(
“Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=pubs;” & _
“User ID=sa;Password=vbdotnet;”)
objConnection.Open() ‘데이터베이스 접속을 엶
objConnection.Close() ‘데이터베이스 접속을 닫음
ADO.NET classes
• OleDbDataAdapter class
– OLE DB 데이터원본에서 데이터를 읽거나 저장하는 작업을
수행
– 자체적으로 데이터를 보관하지는 않고, 단지 DataSet
클래스와 데이터 저장고를 연결하는 다리 역할을 함
– 속성
SelectCommand 속성을 이용하여
데이터를 읽어 들임
설명
Connection
데이터 저장고에 접근하는 데 이용될 OleDbConnection 객체를 지정
CommandText
데이터 선택에 이용될 SQL구문이나 저장 프로시저의 이름을 지정
CommandType
CommandText 속성이 해석되는 방법을 결정하는 값을 지정
Dim objDataAdapter As New OleDbDataAdapter()
objDataAdapter.SelectCommand = New OleDbCommand()
objDataAdapter.SelectCommand.Connection = objConnection
objDataAdapter.SelectCommand.CommandText = “SELECT * FROM ARTIST”
objDataAdapter.SelectCommand.CommandType=CommandType.Text
ADO.NET classes
• OleDbDataAdapter class (계속)
– ExecuteNonQuery 메소드
• 지정된 SQL문자열이나 저장 프로시저를 실행
• SQL 문자열이나 저장 프로시저에 영향 받은 행의 수를 리턴함
– SELECT구문의 경우 리턴값을 항상 -1이 됨
– Fill 메소드
• ExecuteNonQuery 메소드를 실행한 다음에 호출하여 데이터
저장고에서 얻은 데이터로 DataSet 객체를 채움
objDataAdapter.SelectCommand = New OleDbCommand()
objDataAdapter.SelectCommand.Connection = objConnection
objDataAdapter.SelectCommand.CommadText = “usp_select_author_titles”
objDataAdapter.SelectCommand.CommandType=CommandType.StoredProcedure
objDataAdapter.SelectCommand.ExecuteNonQuery()
Dim objDataSet As DataSet = New DataSet()
objDataAdapter.Fill(objDataSet, “artist”)
ADO.NET classes
• DataSet class
–
–
–
–
데이터를 보관하기 위한 메모리 내의 공간
XML 형식을 이용하여 내부적으로 데이터를 보관
Data Store로부터 얻은 실제 데이터를 담고 있는 객체 클래스
OleDbDataAdapter의 Fill 메소드에 인자로 전달되어서
데이터로 채워지게 됨
• 함께 전달된 문자열 인자는 데이블의 이름을 지정하며,
OleDbDataAdapter가 다수의 테이블을 리턴하는 경우에는 데이터가
선택되는 기본 테이블인 루트 테이블을 지정함
• DataSet 인자는 데이터로 채워질 DataSet 객체를 뜻한다.
Dim objDataSet As DataSet = New DataSet()
objDataAdapter.Fill(objDataSet, “artist”)
ADO.NET classes
• DataView class
– DataSet의 데이터를 정렬(Sort), 필터링(RowFilter),
검색(Find), 편집, 조회하는 작업에 사용
– DataSet의 DataTable에 포함된 데이터와는 분리되어
있으므로, DataView 내의 데이터를 변경하더라도 DataSet의
데이터에는 영향을 주지 않음
• DataSet 객체의 Tables 컬렉션에 접근하기 위해 Table 속성과
테이블의 이름을 지정함
Dim objDataView = New DataView(objDataSet.Table(“artist”))
objDataView.Sort=“Name ASC, Nationality DESC”
Dim int position = objDataView.Find(“Shagall”)
objDataView.RoFilter = “Name <> ‘Miro’”
ADO.NET classes
• OleDbCommand class
– 데이터 저장고에 대해 실행될 Query를 지정함
• 선택/추가/갱신/삭제 등의 SQL문과 저장 프로시저 모두
사용가능
– Connection, CommandText, CommandType 속성을 사용함
Dim objCommand As OleDbCommand = NEW OleDbCommand()
…
objCommand.Connection = objConnection
objCommand.CommandText = “INSERT INTO ARTIST ” & _
“(Name, Nationality) VALUES(‘Picasso’, ‘Spain’); ”
objCommand.CommandType = CommandType.Text
ADO.NET classes
• OleDbParameter class
– OleDbCommand의 SQL문에 전달할 변수의 값을 표현하는
객체
• SQL 구문 내에서 물음표(?)에 대응되며 OleDbCommand
객체의 Parameters
컬렉션에
추가하여
사용함
objCommand.CommandText
= “INSERT
INTO
ARTIST
”&_
“(Name, Nationality) VALUES(?, ?); ”
objCommand.CommandType = CommandType.Text
objCommand.Parameters.Add(New OleDbParameter())
objCommand.Parameters.Item(0).Direction = ParameterDirection.Input
objCommand.Parameters.Item(0).ParameterName = “Name”
objCommand.Parameters.Item(0).DBType = DbType.String
objCommand.Parameters.Item(0).Size = 6
objCommand.Parameters.Item(0).Value = “Picasso”
objCommand.Parameters.Add(New OleDbParameter())
objCommand.Parameters.Item(1).Direction = ParameterDirection.Input
…
VB.NET 실습
• VB.NET Express 2005 실행
– ‘DataSet Example’이라는 이름의 Windows 응용 프로그램
프로젝트를 작성한다.
VB.NET 실습
– ‘Form1.vb’의 속성을 표와 같이 지정한다.
속성
값
Size
600, 230
StartPosition
CenterScreen
Text
DataSet 연결
– 도구 모음의 [Windows Forms] 탭에서 DataGridView
컨트롤을 찾아 폼으로 드래그한다.
– 추가된 DataGridView 컨트롤의 속성을 표와 같이 지정한다.
속성
값
Name
GrdAuthorTitles
Location
5, 5
Size
584, 192
Anchor
Top, Bottom, Left, Right
– 폼의 여백을 오른 클릭하여 [코드 보기] 창으로 전환한다.
VB.NET 실습
– 코드 창의 맨 위에 필요한 네임스페이스들을 import한다.
Imports System.Data
Imports System.Data.OleDb
– SQL서버로 접속하여 데이터를 가져오는 데 필요한 객체를
선언하고, 적절한 접속문자열을 작성한다.
Dim objConnection As OleDbConnection = New OleDbConnection( _
"Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=chapter7;" & _
"User ID=vbnet;Password=1234567;")
Dim objDataAdapter As New OleDbDataAdapter()
Dim objDataSet As DataSet = New DataSet()
VB.NET 실습
– 상단의 객체 목록에서 ‘Form1’을 선택하고, 우측의 메소드
목록에서는 ‘New’를 선택하여 폼의 생성자를 추가해 넣는다.
– 자동 삽입된 코드의 뒷 부분에 다음 슬라이드에 나와있는
코드를 입력해 넣는다.
VB.NET 실습
'데이터베이스접속을연다.
objConnection.Open()
'SelectCommand 초기화를위해
'SelectCommand를OleDbCommand 클래스로지정한다.
objDataAdapter.SelectCommand = New OleDbCommand()
'SelectCommand의속성들을지정한다.
objDataAdapter.SelectCommand.Connection = objConnection
objDataAdapter.SelectCommand.CommandText = "SELECT * FROM ARTIST;"
objDataAdapter.SelectCommand.CommandType = CommandType.Text
'명령을실행한다.
objDataAdapter.SelectCommand.ExecuteNonQuery()
'DataSet 객체를데이터로채운다.
objDataAdapter.Fill(objDataSet, "artist")
'데이터베이스접속을닫는다.
objConnection.Close()
'정리작업
objDataAdapter = Nothing
objConnection = Nothing
'DataGrid의속성들을지정해데이터와연결한다.
GrdAuthorTitles.DataSource = objDataSet
GrdAuthorTitles.DataMember = "artist"
VB.NET 실습
– 편집 창의 오른쪽 목록에서 Dispose 프로시저를 선택한 다음,
다음의 코드를 삽입하여 사용이 끝난 DataSet 객체를 제거할
수 있도록 한다.
VB.NET 실습
– 프로젝트를 실행하여, 다음의 결과를 확인한다.
– DataGrid 컨트롤은 내장된 정렬 기능을 가지고 있으므로,
열의 헤더를 클릭하면 선택된 열을 이용하여
오름차순(내림차순)으로 격자 내의 데이터를 정렬하는 것을
확인할 수 있다.