티스토리 뷰

[도서관 책 관리 프로그램] 개발

 

* SqlCommand 클래스 : CRUD를 수행할 수 있다.

SqlDataReader클래스 SqlDataAdapter클래스
연결된 상태에서 데이터를 읽어온다. ( 연결형 ) 순간적으로 데이터베이스와 연결 후 데이터를 읽어와 이후 연결을 끊는다. ( 비연결형 ) 
계속 연결되어 있기 때문에 비연결형보다 속도가 빠르다.  
계속 연결되어 있기 때문에 접속자 수가 많으면 라이센스 비용이 많이 들 수 있다. 클라이언트 측의 메모리에 데이터 사본을 저장하여 메모리에 부담이 될 수 있다.
conn.Open(); 연결을 해야 함. conn.Open(); 할 필요가 없음.
연결이 안되었으면 자동적으로 연결을 하고 끊음.
DataTable dt = new DataTable();
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM BOOKS";
command.Connection = conn;

SqlDataReader reader = command.ExecuteReader();
dt.Load(reader);
dataGridView1.DataSource = dt;
string sql = "SELECT * FROM BOOKS(NOLOCK)";
SqlDataAdapter adpt = new SqlDataAdapter(sql, conn);
adpt.Fill(ds, "BOOKS"); //테이블명을 명시하지 않아도 된다.
dataGridView1.DataSource = ds.Tables[0];

 

DataSet은 DataTable을 여러 개 저장할 수 있다.

 

 

SELECT * FROM BOOKS(NOLOCK)

동일한 행에 대한 접근의 우선순위가 있음.

조회할 때는 다른 사람의 접근을 막을 필요가 없기 때문에, LOCK를 걸지 않는다.

(LOCK을 걸어서 다른 사람이 조회를 할 수 없게 할 필요가 없다)

단순 SELECT할 때, 생략해서 실행해도 된다.

 

using 문을 사용하면

conn.Close(); 자동적으로 호출하여 데이터베이스와 연결을 자동적으로 끊어준다.

using (SqlConnection conn = new SqlConnection(connectionString))
{
...
}

 


form 디자인

 

전체 조회

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells["BOOKNO"].Value.ToString();
    textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells["NAME"].Value.ToString();
    textBox4.Text = dataGridView1.Rows[e.RowIndex].Cells["BOOKNO"].Value.ToString();
}

 

추가

private void button3_Click(object sender, EventArgs e)
{
    string bookNo = textBox6.Text;
    string bookName = textBox5.Text;
    string bookCode = textBox7.Text;

    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();

        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "INSERT INTO BOOKS(BOOKNO,NAME,CODE) VALUES("+ bookNo + ",'"+ bookName +"','"+ bookCode +"')";
        command.ExecuteNonQuery();

        button4_Click(null, null);
    }
}

 

수정

private void button2_Click(object sender, EventArgs e)
{
    string bookNo = textBox4.Text;
    string bookName = textBox3.Text;

    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();

        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "UPDATE BOOKS SET NAME = '"+bookName+"' WHERE BOOKNO = " + bookNo;
        command.ExecuteNonQuery();

        button4_Click(null, null);
    }
}

 

삭제

private void button1_Click(object sender, EventArgs e)
{
    string bookNo = textBox1.Text;

    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();

        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "DELETE FROM BOOKS WHERE BOOKNO = " + bookNo;
        command.ExecuteNonQuery();

        button4_Click(null, null);
    }
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함