티스토리 뷰
[도서관 책 관리 프로그램] 개발
* 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);
}
}
'2023~ > c#(.net framework)' 카테고리의 다른 글
C# 윈폼_응용프로그램 개발 13 (0) | 2024.01.28 |
---|---|
C# 윈폼_응용프로그램 개발 12 (0) | 2024.01.28 |
C# 윈폼_응용프로그램 개발 10 (0) | 2024.01.27 |
C# 윈폼_응용프로그램 개발 09 (0) | 2024.01.23 |
C# 윈폼_응용프로그램 개발 08 (0) | 2024.01.21 |