SQL Connect

S:)·2024년 2월 15일

DB Connection

목록 보기
3/3

SqlConnection

  • SqlConnection 와 SqlDataAdapterSqlCommand 은 함께 사용 되어 데이터베이스에 연결할때 성능을 향상
  • 서버와 접속하기 위해서는 ConnectionString이 필요
  • ConnectionString 에는 서버명 , 인증방법 , 초기DB명 등 지정

1. SqlConnection
: SQL Server에 접속을 하기 위한 클래스

using (SqlConnection connection = new SqlConnection(connectionString))
{
        connection.Open();      
}
  • SqlConnection scope 을 나가지 않으면 닫혀 있지 않음으로 꼭 Close 하여 연결을 명시적으로 닫아야 한다.

2. SqlCommad
: SQL 서버에 어떤 명령을 내리기 위해 사용하는 클래스

  • 테이블로부터 SELECT, INSERT, UPDATE, DELETE 하기 위해 이 클래스를 사용할 수 있다.
  • 저장 프로시져 (Stored Procedure)를 사용할 때도 SqlCommand 를 사용한다.

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. SqlDataAdapter vs SqlDataReader

  1. 연결
  • SqlDataAdapter : 데이터를 가져온 후 연결을 끊고 데이터 사용
  • SqlDataReader : 연결을 유지
  1. 데이터 형태
  • SqlDataAdapter : DataSet (그리드 같은 컨트롤에 데이터 바인딩 소스로 활용)
  • SqlDataReader : 한 행씩(row)

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;
}
profile
일단 저장

0개의 댓글