728x90

C# 에서 SQLite DB에 있는 테이블을 가져오는 쿼리문이며 dataGridView1 에 뿌려주는 코드이다.

dataGridView1_Display(ds.Tables[0]); 함수는 없어도 된다. dataGridView1 의 특정 칼럼을 readonly 로 한다든지, hidden 으로 처리할 칼럼을 지정한다든지 이런 화면 구성상의 옵션처리를 위해서 만든 함수이다.


string ConnectionString = @"Data Source=test.db;Version=3;";
SQLiteConnection sqliteConn;
SQLiteDataAdapter adapter;
DataTable dt;
DataTable GetSqliteItems()
{
    try
    {
        sqliteConn = new SQLiteConnection(ConnectionString);
        if (sqliteConn.State == ConnectionState.Closed)
        {
            sqliteConn.Open();
        }

        string strqry = "select * from items ";
        if (searchBox.Text.Length > 0)
        {
            strqry += "where Quantity='" + searchBox.Text + "' ";
        }
        strqry += "order by uid";
        adapter = new SQLiteDataAdapter(strqry, sqliteConn);  //
SQLiteDataAdapter 객체 생성

        DataSet ds = new DataSet();  // DataSet 객체 생성
        adapter.Fill(ds); // 생성된 DataSet ds에 데이터 채우기 : select * from items 의 결과물을 채우겠다.

        sqliteConn.Close();  // SQLite 연결해제
        dataGridView1.DataSource = ds.Tables[0];  //바인딩부분
        dataGridView1_Display(ds.Tables[0]); 
// 화면 구성/제어에 필요한 사용자 함수
         
        return ds.Tables[0];
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        return null;
    }
    finally
    {
        //always close the connection
        if (sqliteConn.State == ConnectionState.Open)
        {
            sqliteConn.Close();
        }
    }
}


또다른 방법으로는


string ConnectionString = @"Data Source=test.db;Version=3;";

public void Read()
{
    try
    {
        using (var Conn = new SQLiteConnection(ConnectionString))
        {
            Conn.Open();
            string strqry = "select * from items ";
            if (searchBox.Text.Length > 0)
            {
                strqry += "where ItemName LIKE '%" + searchBox.Text + "%' or Price LIKE '%" + searchBox.Text + "%' or Quantity='" + searchBox.Text + "' ";
            }
            strqry += "order by uid";

            using (var cmd = new SQLiteCommand(strqry,Conn))
            {
                using(SQLiteDataReader reader = cmd.ExecuteReader())
                {
                    DataTable dataTable = new DataTable();
                    dataTable.Load(reader);
                    dataGridView1.DataSource = dataTable;
                    dataGridView1_Display(dataTable);  // 화면 구성/제어에 필요한 사용자 함수
                }
            }
            Conn.Close();
        }
           
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        throw;
    }
}



728x90
블로그 이미지

Link2Me

,