1. SqlConnection
: SQL Server에 접속을 하기 위한 클래스
using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); }
- SqlConnection scope 을 나가지 않으면 닫혀 있지 않음으로 꼭 Close 하여 연결을 명시적으로 닫아야 한다.
2. SqlCommad
: SQL 서버에 어떤 명령을 내리기 위해 사용하는 클래스
2_1. SqlCommand.ExecuteNonQuery : INSERT, UPDATE, DELETE 등의 DML 문장을 실행할 때 사용
using(SqlConnection conn = new SqlConnection(strConn)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "INSERT Table1 VALUES(1, N'test1')"; cmd.ExecuteNonQuery(); }
2_2. SqlCommand.ExecuteReader : 데이터를 서버에 가져오는 SELECT 문장을 실행할 때 사용
using(SqlConnection conn = new SqlConnection(strConn)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT * FROM Table1"; SqlDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) { string s = rdr["name"] as string; } rdr.Close(); }
- 조회된 데이터는 SqlDataReader 라는 클래스 객체로 리턴된다
- SqlDataReader s는 한번에 한 행(row)씩 데이터를 가져오는데 사용된다.
SqlReader객체는 첫 행 이전에 포이터를 위치시키기 때문에 SqlDataReader의 Read()를 사용해야 한다.- DataReader는 하나의 Connection 에 하나만 Open 되어 있어야 하여 , 사용이 끝나면 Close()를 호출 하여 닫아줘야 한다.
3_1. SqlDataAdapter를 활용하여 데이터 조회
using(SqlConnection conn = new SqlConnection(strConn)) { conn.Open(); string sql = "SELECT * FROM Table1"; SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); adapter.Fill(ds); // Fill 메서드 실행하여 결과 DataSet을 리턴받음 conn.Close(); return ds; }