29. 테이블
1.1 소개
데이터베이스는 대용량의 자료를 효율적으로 관리하는 기술로서 현대적인 응용 프로그래밍에서 아주 중요한 분야임
1.2 특징
연결형: 항상 연결 되어있음
비연결형: 필요할 때만 연결함
1.3 구조
1.4 샘플 데이터 베이스
CREATE TABLE K ( Name NVARCHAR(10) PRIMARY KEY, Age INT NOT NULL, Male BIT NOT NULL ); INSERT INTO K VALUES('김소정',20,0); INSERT INTO K VALUES('정창환',23,0); INSERT INTO K VALUES('박상종',25,1); INSERT INTO K VALUES('이상해씨',50,0); |
2. 테이블
2.1 DataTable
프로퍼티 |
타입 |
설명 |
Tablename |
String |
테이블의 이름이다 |
Columns |
Datacolumncollection |
테이블에 속한 열의 집합이며 스키마를 결정한다 |
Rows |
Datarowcollection |
테이블에 속한 행의 집합이다 |
Constraints |
Constraintcollection |
테이블의 제약 조건 집합이다 |
Primarykey |
Datacolumn[] |
기본 키로 사용되는 열의 배열이다 |
Casesensitive |
Bool |
문자열을 비교할 때 대소문자를 구분할 것인가를 지정하여 검색, 정렬, 필터링에 사용된다. 디폴트는 false 이다 |
Namespace |
String |
XML 표현에 대한 네임스페이스이며 테이블의 소속을 구분하기 위해 사용한다 |
Dataset |
Dataset |
테이블이 속한 dataset 이다 |
Defaultview |
Dataview |
테이블과 관련된 뷰이다 |
2.2 스키마
◆DataColunm
테이블 하나에 복수 개의 열이 포함되므로 테이블은 Columns 프로퍼티로 열의 컬렉션을 관리
◆DataType
SQL 서버 타입 |
닷넷의 타입 |
INT |
Int32 |
BIGINT |
Int64 |
NVARCHAR, NCHAR |
String |
DATETIME |
Datatime |
BIT |
Boolean |
DECIMAL |
Decimal |
VARBINARY |
Byte[] |
Mycolumn.datatype = typeof(int32);
2.3 행
테이블의 실제 데이터를 저장하는 것은 행이며 행은 DataRow 클래스로 표현
2.4 테이블 생성
public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {
}
private void button1_Click(object sender, EventArgs e) { DataTable tblPeople = MakePeopleTable(); dataGridView1.DataSource = tblPeople;
}
private DataTable MakePeopleTable() { DataTable tblPeople = new DataTable("tblPeople");
DataColumn col; DataRow row;
col = new DataColumn("name", typeof(String)); col.MaxLength = 10; col.AllowDBNull = false; col.Unique = true; tblPeople.Columns.Add(col);
tblPeople.PrimaryKey = new DataColumn[] { col };
col = new DataColumn("age", typeof(Int32)); col.AllowDBNull = false; tblPeople.Columns.Add(col);
col = new DataColumn("male", typeof(bool)); col.AllowDBNull = false; tblPeople.Columns.Add(col);
row = tblPeople.NewRow(); row["name"] = "김소정"; row["age"] = 20; row["male"] = false; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "정창환"; row["age"] = 23; row["male"] = true; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "박상종"; row["age"] = 25; row["male"] = false; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "이상해씨"; row["age"] = 50; row["male"] = true; tblPeople.Rows.Add(row);
tblPeople.AcceptChanges(); return tblPeople;
}
private void Form1_Load(object sender, EventArgs e) {
}
private void button2_Click(object sender, EventArgs e) { DataTable tblSale = MakeSaleTable(); dataGridView1.DataSource = tblSale;
}
private DataTable MakeSaleTable() {
throw new NotImplementedException();
DataTable tblSale = new DataTable("tblSale");
DataColumn col; DataRow row;
col = new DataColumn("orderno", typeof(Int32)); col.AllowDBNull = false; col.Unique = true; col.AutoIncrement = true; col.ReadOnly = true; tblSale.Columns.Add(col);
tblSale.PrimaryKey = new DataColumn[] { col };
col = new DataColumn("customer", typeof(string)); col.MaxLength = 10; col.AllowDBNull = false; tblSale.Columns.Add(col);
col = new DataColumn("Item", typeof(String)); col.MaxLength = 20; col.AllowDBNull = false; tblSale.Columns.Add(col);
col = new DataColumn("odate", typeof(DateTime)); col.AllowDBNull = false; tblSale.Columns.Add(col);
row = tblSale.NewRow(); row["customer"] = "김소정"; row["Item"] = "화장지"; row["ODate"] = new DateTime(2010, 1, 1); tblSale.Rows.Add(row);
row = tblSale.NewRow(); row["customer"] = "박상종"; row["Item"] = "휘발유"; row["ODate"] = new DateTime(2010, 8, 1); tblSale.Rows.Add(row);
row = tblSale.NewRow(); row["customer"] = "이상해씨"; row["Item"] = "이상해풀"; row["ODate"] = new DateTime(2010, 1, 8); tblSale.Rows.Add(row);
row = tblSale.NewRow(); row["customer"] = "정창환"; row["Item"] = "레깅스"; row["ODate"] = new DateTime(2010, 11, 1); tblSale.Rows.Add(row);
tblSale.AcceptChanges(); return tblSale;
} } |
3. 테이블 편집
3.1 그리드에서의 편집
3.2 검색
public partial class Form1 : Form { private DataTable tblPeople;
public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { tblPeople = MakePeopleTable(); dataGridView1.DataSource = tblPeople;
}
private DataTable MakePeopleTable() { DataTable tblPeople = new DataTable("tblPeople");
DataColumn col; DataRow row;
col = new DataColumn("name", typeof(String)); col.MaxLength = 10; col.AllowDBNull = false; col.Unique = true; tblPeople.Columns.Add(col);
tblPeople.PrimaryKey = new DataColumn[] { col };
col = new DataColumn("age", typeof(Int32)); col.AllowDBNull = false; tblPeople.Columns.Add(col);
col = new DataColumn("male", typeof(bool)); col.AllowDBNull = false; tblPeople.Columns.Add(col);
row = tblPeople.NewRow(); row["name"] = "김소정"; row["age"] = 20; row["male"] = false; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "정창환"; row["age"] = 23; row["male"] = true; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "박상종"; row["age"] = 25; row["male"] = false; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "이상해씨"; row["age"] = 50; row["male"] = true; tblPeople.Rows.Add(row);
tblPeople.AcceptChanges(); return tblPeople;
}
private void button3_Click(object sender, EventArgs e) { string Name = textBox1.Text; DataRow Result = tblPeople.Rows.Find(Name); if (Result == null) { MessageBox.Show("존재안함"); } else { MessageBox.Show(Name + "의나이는" + Result["age"] + "살입니당"); }
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) {
}
private void DisplayResult(DataRow[] Result) { listBox1.Items.Clear(); foreach (DataRow R in Result) { listBox1.Items.Add(R["Name"]); } }
private void button4_Click(object sender, EventArgs e) { string Filter = "Age >=" + textBox2.Text; DataRow[] Restult = tblPeople.Select(Filter);
DisplayResult(Restult);
}
private void button1_Click(object sender, EventArgs e) { DataRow[] Result = tblPeople.Select("", "Name"); DisplayResult(Result);
}
private void button2_Click(object sender, EventArgs e) { DataRow[] Result = tblPeople.Select("", "Name DESC"); DisplayResult(Result); } } |
3.3 수정
public partial class Form1 : Form { private DataTable tblPeople;
public Form1() { InitializeComponent(); }
private DataTable MakePeopleTable() { DataTable tblPeople = new DataTable("tblPeople");
DataColumn col; DataRow row;
col = new DataColumn("name", typeof(String)); col.MaxLength = 10; col.AllowDBNull = false; col.Unique = true; tblPeople.Columns.Add(col);
tblPeople.PrimaryKey = new DataColumn[] { col };
col = new DataColumn("age", typeof(Int32)); col.AllowDBNull = false; tblPeople.Columns.Add(col);
col = new DataColumn("male", typeof(bool)); col.AllowDBNull = false; tblPeople.Columns.Add(col);
row = tblPeople.NewRow(); row["name"] = "김소정"; row["age"] = 20; row["male"] = false; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "정창환"; row["age"] = 23; row["male"] = true; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "박상종"; row["age"] = 25; row["male"] = false; tblPeople.Rows.Add(row);
row = tblPeople.NewRow(); row["name"] = "이상해씨"; row["age"] = 50; row["male"] = true; tblPeople.Rows.Add(row);
tblPeople.AcceptChanges(); return tblPeople;
}
private void Form1_Load(object sender, EventArgs e) { tblPeople = MakePeopleTable(); dataGridView1.DataSource = tblPeople;
}
private void button2_Click(object sender, EventArgs e) { string Filter = "name='" + textBox3.Text + "'"; DataRow[] Result = tblPeople.Select(Filter); if (Result.Length != 0) { Result[0].Delete(); }
}
private void button3_Click(object sender, EventArgs e) { tblPeople.AcceptChanges(); }
private void button4_Click(object sender, EventArgs e) { tblPeople.RejectChanges();
}
private void button1_Click(object sender, EventArgs e) { string Filter = "name='" + textBox1.Text + "'"; DataRow[] Result = tblPeople.Select(Filter); if (Result.Length != 0) { Result[0]["age"] = Convert.ToInt32(textBox2.Text); }
} } |
출처: 소설같은 C#
'프로그래밍언어 > C#' 카테고리의 다른 글
C# 의 개념과 특징, 기초문법 정리 (0) | 2010.12.31 |
---|---|
닷넷의 배경 및 특징, 네임스페이스가 뭐죠? (0) | 2010.12.31 |
C# 컨트롤 (0) | 2010.12.27 |
C#의 클래스 (0) | 2010.12.27 |
Chapter 04 변수 – 정보를 담는 방법 (0) | 2010.12.06 |