|
|
@ -0,0 +1,167 @@ |
|
|
|
|
|
|
|
using System; |
|
|
|
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
|
|
|
using System.Data; |
|
|
|
|
|
|
|
using System.Diagnostics; |
|
|
|
|
|
|
|
using System.Linq; |
|
|
|
|
|
|
|
using System.Text; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace MainApp |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
class Client |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
public static void Create_Insert() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DataTable table = new DataTable(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 컬럼 생성 |
|
|
|
|
|
|
|
table.Columns.Add("no", typeof(int)); |
|
|
|
|
|
|
|
table.Columns.Add("name", typeof(string)); |
|
|
|
|
|
|
|
table.Columns.Add("date", typeof(DateTime)); |
|
|
|
|
|
|
|
table.Columns.Add("food", typeof(string)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 데이터 삽입 방법1 |
|
|
|
|
|
|
|
DataRow row = table.NewRow(); |
|
|
|
|
|
|
|
row["no"] = 1; |
|
|
|
|
|
|
|
row["name"] = "Joe"; |
|
|
|
|
|
|
|
row["date"] = DateTime.Now; |
|
|
|
|
|
|
|
row["food"] = "Apple"; |
|
|
|
|
|
|
|
table.Rows.Add(row); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 데이터 삽입 방법2 |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 2, "Jane", DateTime.Now.AddDays(-1), "Tomato" }); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 데이터 추출: DataRow 내부에 ojbect 형태로 반환되며, 형변환 필요함 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// for |
|
|
|
|
|
|
|
for (int i = 0; i < table.Rows.Count; i++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int no = Convert.ToInt32(table.Rows[i]["no"]); |
|
|
|
|
|
|
|
string name = Convert.ToString(table.Rows[i]["name"]); |
|
|
|
|
|
|
|
DateTime date = Convert.ToDateTime(table.Rows[i]["date"]); |
|
|
|
|
|
|
|
string food = Convert.ToString(table.Rows[i]["food"]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Debug.WriteLine($"get1: {no} | {name} | {date} | {food}"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Console.WriteLine(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//foreach |
|
|
|
|
|
|
|
foreach (DataRow item in table.Rows) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int no = Convert.ToInt32(item["no"]); |
|
|
|
|
|
|
|
string name = Convert.ToString(item["name"]); |
|
|
|
|
|
|
|
DateTime date = Convert.ToDateTime(item["date"]); |
|
|
|
|
|
|
|
string food = Convert.ToString(item["food"]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Debug.WriteLine($"get2: {no} | {name} | {date} | {food}"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void Handling() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DataTable table = new DataTable(); |
|
|
|
|
|
|
|
table.Columns.Add("no", typeof(int)); |
|
|
|
|
|
|
|
table.Columns.Add("name", typeof(string)); |
|
|
|
|
|
|
|
table.Columns.Add("date", typeof(DateTime)); |
|
|
|
|
|
|
|
table.Columns.Add("food", typeof(string)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 1, "Joe", DateTime.Now, "Apple" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 2, "Jane", DateTime.Now.AddDays(-1), "Tomato" }); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Clone: DataRow를 제외한 스키마 전체를 복사 |
|
|
|
|
|
|
|
DataTable clonedTable = table.Clone(); |
|
|
|
|
|
|
|
Console.WriteLine("Clone"); |
|
|
|
|
|
|
|
PrintTable(clonedTable); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ImportRow: DataRow를 가져옴 |
|
|
|
|
|
|
|
DataTable importedTable = table.Clone(); |
|
|
|
|
|
|
|
importedTable.ImportRow(table.Rows[0]); |
|
|
|
|
|
|
|
Console.WriteLine("ImportRow"); |
|
|
|
|
|
|
|
PrintTable(importedTable); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Select: 조건에 맞는 Row 선택 |
|
|
|
|
|
|
|
DataRow[] selectedRows = table.Select("no = 1"); |
|
|
|
|
|
|
|
Console.WriteLine("Select"); |
|
|
|
|
|
|
|
PrintDataRows(selectedRows); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Copy: 테이블 복사 |
|
|
|
|
|
|
|
DataTable copiedTable = table.Copy(); |
|
|
|
|
|
|
|
Console.WriteLine("Copy"); |
|
|
|
|
|
|
|
PrintTable(copiedTable); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Reset: 테이블 초기화 (new 와 동일) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Clear: 테이블 내부 DataRow 지움 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Compute: 연산 수행 |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 3, "Jany", DateTime.Now.AddDays(-3), "Steak" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 4, "Tony", DateTime.Now.AddDays(-2), "Steak" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 5, "Carl", DateTime.Now.AddDays(-4), "Coke" }); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
object sum = table.Compute("sum(no)", "food = 'Steak'"); |
|
|
|
|
|
|
|
Console.WriteLine($"steak no sum: {sum.ToString()}"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
object count = table.Compute("count(no)", "food = 'Steak'"); |
|
|
|
|
|
|
|
Console.WriteLine($"steak count: {count.ToString()}"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
count = table.Compute("count(no)", "no < 5"); |
|
|
|
|
|
|
|
Console.WriteLine($"no < 5 count: {count.ToString()}"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
object avg = table.Compute("avg(no)", ""); |
|
|
|
|
|
|
|
Console.WriteLine($"no avg: {avg.ToString()}"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static DataTable GetSampleTable() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DataTable table = new DataTable(); |
|
|
|
|
|
|
|
table.Columns.Add("no", typeof(int)); |
|
|
|
|
|
|
|
table.Columns.Add("name", typeof(string)); |
|
|
|
|
|
|
|
table.Columns.Add("date", typeof(DateTime)); |
|
|
|
|
|
|
|
table.Columns.Add("food", typeof(string)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Random rnd = new Random(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 1, "Joe", DateTime.Now.AddDays(rnd.Next(-10, 1)), "Apple" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 2, "Jane", DateTime.Now.AddDays(rnd.Next(-10, 1)), "Tomato" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 3, "Jany", DateTime.Now.AddDays(rnd.Next(-10, 1)), "Steak" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 4, "Tony", DateTime.Now.AddDays(rnd.Next(-10, 1)), "Steak" }); |
|
|
|
|
|
|
|
table.Rows.Add(new object[] { 5, "Carl", DateTime.Now.AddDays(rnd.Next(-10, 1)), "Coke" }); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return table; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void PrintTable(DataTable table) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Console.WriteLine("-------------------------------------"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (DataRow item in table.Rows) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int no = Convert.ToInt32(item["no"]); |
|
|
|
|
|
|
|
string name = Convert.ToString(item["name"]); |
|
|
|
|
|
|
|
DateTime date = Convert.ToDateTime(item["date"]); |
|
|
|
|
|
|
|
string food = Convert.ToString(item["food"]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Debug.WriteLine($"{no} | {name} | {date} | {food}"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("-------------------------------------"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void PrintDataRows(DataRow[] rows) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Console.WriteLine("-------------------------------------"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (DataRow item in rows) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int no = Convert.ToInt32(item["no"]); |
|
|
|
|
|
|
|
string name = Convert.ToString(item["name"]); |
|
|
|
|
|
|
|
DateTime date = Convert.ToDateTime(item["date"]); |
|
|
|
|
|
|
|
string food = Convert.ToString(item["food"]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Debug.WriteLine($"{no} | {name} | {date} | {food}"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("-------------------------------------"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |