2019. 12. 2. 14:13ㆍC# .NET/C#
우선 C# Windows forms 프로젝트를 하나 생성합니다.
만들어진 프로젝트에 DataGridView를 그려줍니다.
DataGridView의 초기 name은 DataGridView1 입니다.
저는 EXDB라는 이름의 데이터베이스에 STUDENT 테이블을 생성하여 진행하겠습니다.
테이블 생성까지 완료하셨다면
다음으로는 프로그램에서 데이터베이스에 접속할 수 있도록 해주는 클래스를 만들고 코드를 작성해볼게요.
새로 생성한 클래스 파일에 아래의 코드를 입력해주세요.
저는 클래스 파일명을 DBConnector.cs 로 작성했습니다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//제가 만든 프로젝트명입니다.
namespace DBConnector_blog
{
class DBConnector
{
//커넥션 객체
private static SqlConnection conn = null;
public static string DBConnString { get; private set; }
public static bool bDBConnCheck = false;
private static int errorBoxCount = 0;
///<summary>
///생성자
///</summary>
public DBConnector() { }
public static SqlConnection DBConn
{
get
{
if (!ConnectToDB())
{
return null;
}
return conn;
}
}
///<summary>
/// Database 접속 시도
/// </summary>
/// <returns></returns>
public static bool ConnectToDB()
{
if(conn == null)
{
//서버명, 초기 DB명, 인증방법
//string DBConnString = "Data Source = DB_IP주소,포트번호; Initial Catalog=테이블명;
User ID=DB로그인 아이디; Password=비밀번호;";
//저는 로컬DB를 사용했으니 로컬에 연결해보겠습니다.
string DBConnString = "Data Source = (localdb)\\LOCAL_OK; Initial Catalog=EXDB;";
conn = new SqlConnection(DBConnString);
}
try
{
if (!IsDBConnected)
{
conn.Open();
if(conn.State == System.Data.ConnectionState.Open)
{
bDBConnCheck = true;
}
else
{
bDBConnCheck = false;
}
}
}
catch(SqlException e)
{
errorBoxCount++;
if(errorBoxCount == 1)
{
MessageBox.Show(e.Message, "DBConnector - ConnectToDB()");
}
return false;
}
return true;
}
///<summary>
/// Database Open 여부 확인
/// </summary>
public static bool IsDBConnected
{
get
{
if(conn.State != System.Data.ConnectionState.Open)
{
return false;
}
return true;
}
}
/// <summary>
/// Database 해제
/// </summary>
public static void Close()
{
if (IsDBConnected) DBConn.Close();
}
}
}
|
여기까지 잘 따라오셨나요?
그럼 이제 아까 DataGridView를 그려놓은 Form에 아래와 같이 작성해 주세요.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DBConnector_blog
{
public partial class Form1 : Form
{
private DataTable data_table = null;
public Form1()
{
InitializeComponent();
try
{
lock (DBConnector.DBConn)
{
if (!DBConnector.IsDBConnected)
{
MessageBox.Show("Database 연결을 확인하세요.");
return;
}
else
{
//DB연결이 되고 난 후...
String sql = "select * from STUDENT";
SqlDataAdapter adapter = new SqlDataAdapter(sql, DBConnector.DBConn);
data_table = new DataTable();
try
{
adapter.Fill(data_table );
dataGridView1.DataSource = data_table ;
//DataGridView 사이즈에 맞게 자동 조정
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
catch (Exception e)
{
MessageBox.Show(e.Message, "DataGridView_Load Error");
}
DBConnector.Close();
}
}
}
catch (ArgumentNullException ane)
{
MessageBox.Show(ane.Message, "DataGridView_Load Error");
}
}
}
}
|
이제 모든 작업이 완료 되었습니다.
한번 실행을 시켜볼게요.
DataGridView는 DB에서 데이터를 가져온 그대로 표로 정리해서 바로 보여줘서 편하네요.
Header의 이름 즉, 각 필드의 이름을 원하는데로 가져오고 싶다면
쿼리문을 select ID as '아이디', ...(생략)... from STUDENT 이런식으로 수정하면 됩니다.
또는
dataGridView1 의 메서드를 사용하는 방법이 있습니다.
EX) dataGridView1.Columns[0].HeaderText = "아이디";
dataGridView1.Columns[1].HeaderText = "나이";