본문 바로가기

프로그래밍언어/C#

C# 테이블

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#