본문 바로가기

Languague/C#

[C#] .NET MSSql DB 연동, DataReader 데이터 검색

MS-SQL 데이터베이스를 연동해 데이터를 검색하고 데이터 객체에 담아서 리스트로 만들어봤다. 따로 설치할건 없어 어렵진 않다.

 

먼저, 데이터를 받아낼 객체를 getter, setter한다.

    public class DTO
    {
        public int 데이터 객체1 { get; set; }
        public string 데이터 객체2 { get; set; } 
    }

 

 

SqlDataReader 클래스로 검색 결과를 읽어와 DTO 객체에 넣어준다.

 

SqlConnection 클래스 - DB를 열기 위함

sqlCommand 클래스 - 명령을 실행하기 위한 클래스로 Connectin정보와 쿼리를 실행

sqlDataReader 클래스 - 실행 된 결과를 읽기 위함

 

 public class SqlConnect
    {
        public List<DTO> getData()
        {
            
            string query = $@"SELECT  top 10 * FROM 테이블 WITH (NOLOCK)";
            
            var result = new List<DTO>(); // 데이터 객체를 받아서 list로 만들기 위해 선언

            try
            {
                using (SqlConnection conn = new SqlConnection(GetConnectionString_Web()))
                {
                    conn.Open();  // sqlConnection conn객체 열기
                    SqlCommand cmd = new SqlCommand(); //  명령을 실행하기 위한 클래스 선언
                    cmd.Connection = conn; //Connection 정보 
                    cmd.CommandText = query; // 검색을 위한 쿼리
                    SqlDataReader rdr = cmd.ExecuteReader(); // 쿼리 검색 결과 읽기

                    while (rdr.Read()) 
                    {
                        int obj = rdr.GetInt32(0);
                        string obj2 = rdr["컬럼이름"] as string;
                  
                        var SelectData = new DTO //DTO객체를 담고
                        {
                            데이터 객체1 = obj, 
                            데이터 객체2 = obj2,
                        };
                        result.Add(SelectData);  //리스트로 만들어준다.
                    }
               		     rdr.Close();
                }
            }
            catch (Exception e)
            {
                var message = e.ToString();
            }
            return result;
        }

        private string GetConnectionString_Web()
        {
            return "SERVER=; DATABASE=; USER ID=; PASSWORD= "; //본인 DB에 맞춰서 작성
        }
 }

 

디버깅해서 결과값을 찍어보면, 리스트 형태로 객체를 잘 받아왔다. 끝

300x250