-
C# DataSet 및 DataTable에 대한 자세한 설명
2009-목요일-21
1. DataSet 객체를 생성합니다:
DataSet ds = new DataSet("DataSetName");
2. SqlDataAdapter.Fill을 호출하여 생성된 구조를 봅니다.
da.Fill(ds,"주문");
DataTable tbl = ds.Table[zero];
foreach(tbl.Columns의 DataColumn 열)
Console.WriteLine(col.ColumnName);
3. SqlDataAdapter ①, DataRow 개체에서 반환된 데이터를 봅니다.
DataTable tbl = ds.Table[zero];
DataRow 행 = tbl.Row[zero];
Console.WriteLine(ros["OrderID"]);
② DataRow에 저장된 데이터를 확인합니다.
DataTable tbl = 행.테이블;
foreach(tbl.Columns의 DataColumn 열)
Console.WriteLine(행[열]);
③ DatTable에서 DataRow 개체를 확인합니다.
foreach(tbl.Rows의 DataRow 행)
DisplayRow(행);
4. DataSet의 데이터 확인 ① DataColumn의 속성 확인: ReadOnly, AllowDBNull, MaxLength, Unique
② DataTable 객체의 집합을 제한합니다: UiqueConstraints, Primarykey, ForeignkeyConstraints
일반적으로 ForeignkeyConstraint는 DataSet의 두 DataTable 개체 간에 관계가 생성될 때 생성되므로 귀찮게 생성할 필요가 없습니다.
③. SqlDataAdapter.Fill 메소드를 사용하여 메소드 정보를 검색합니다.
5. 코드를 컴파일하여 DataTable 개체 만들기
①.DataTable 객체를 생성합니다: DataTable tbl = new DataTable("TableName");
② DataSet 개체의 Table 수렴에 DataTable을 추가합니다.
DataSet ds = 새로운 DataSet();
DataTable tbl = new DataTable("고객");
ds.테이블.추가(tbl);
DataSet ds = 새로운 DataSet();
DataTable tbl = ds.Tables.Add("고객");
DataTable 개체는 최대 하나의 DataSet 개체에만 존재할 수 있습니다. 여러 DataSet에 DataTable을 추가하려면 복사 단계 또는 복제 단계를 사용해야 합니다. 복사 단계에서는 원본 DataTable과 구조가 동일하고 유사한 행을 포함하는 새 DataTable을 생성합니다. 복제 단계에서는 원본 DataTable과 구조가 동일하지만 행을 포함하지 않는 새 DataTable을 생성합니다.
③ DataTable에 열을 추가합니다.
DataTable tbl = ds.Tables.Add("주문");
DataColumn col =tbl.Columns.Add("OrderID",typeof(int));
col.AllowDBNull = 거짓;
col.MaxLength = 5;
col.Unique = true;
tbl.PrimaryKey = new DataColumn[]{tbl.Columns["CustomersID"]};
기본 키를 설정해야 하는 경우 AllowDBNull은 자동으로 False로 설정됩니다.
④ 자동 증분 열을 폐기합니다.
DataSet ds = 새로운 DataSet();
DataTable tbl = ds.Tables.Add("주문");
DataColumn col = tbl.Columns.Add("OrderID",typeof(int));
col.AutoIncrement = true;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = true;
⑤ 표현식을 기반으로 열을 추가합니다.
tbl.Columns.Add("ItemTotal",typeof(Decimal),"수량*단가");
6. DataTable 내용 수정 ①, 새로운 DataRow 추가
DataRow 행 = ds.Tables["Customers"].NewRow();
row["CustomerID"] = "ALFKI";
ds.Tables["고객"].Rows.Add(row);
object[] aValues ={"ALFKI","Alfreds","Anders","030-22222"};
da.Tables["고객"].LoadDataRow(aValues,false);
② 현재 수정이 진행 중입니다.
행 내용을 수정해도 데이터베이스의 해당 내용은 자동으로 수정되지 않습니다. 행에 대한 수정 사항은 나중에 SqlDataAdapter 개체를 사용하여 데이터베이스에 전달될 보류 중인 변경 사항으로 간주됩니다.
DataRow 행고객;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
if(rowCustomer == null)
//고객을 검색하지 않음
또 다른
{
rowCustomer["CompanyName"] = "새회사이름";
rowCustomer["ContactName"] = "새연락처 이름";
}
//이 양식을 사용하는 것이 좋습니다.
DataRow 행고객;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
if(rowCustomer == null)
//고객을 검색하지 않음
또 다른
{
rowCustomer.BeginEdit();
rowCustomer["CompanyName"] = "새회사이름";
rowCustomer["ContactName"] = "새연락처 이름";
rowCustomer.EndEdit();
}
//null은 이 열의 데이터를 수정하지 않음을 의미합니다.
obejct[] aCustomer ={null, "NewCompanyName", "NewContactName", null}
DataRow 행고객;
rowCustomer = ds.Tables["고객"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer;
③ DataRow의 null 값을 처리합니다.
//비어있는지 확인
DataRow 행고객;
rowCustomer = ds.Tables["고객"].Rows.Find("ALFKI");
if(rowCustomer.IsNull("전화"))
Console.WriteLine("Null입니다.");
또 다른
Console.WriteLine("Null이 아닙니다.");
//널값 부여
rowCustomer["전화"] = DBNull.Value;
④ DataRow를 제거합니다.
DataRow 행고객;
rowCustomer = ds.Tables["고객"].Rows.Find("ALFKI");
rowCustomer.Delete();
⑤ DataRow를 제거합니다.
DataRow rowCustomer = ds.Tables["Customers"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer;
da.Tables["고객"].Remove(rowCustomer);
아마도
ds.Tables["고객"].RemoveAt(intIndex);
⑥ DataRow.RowState 속성 사용: 변경되지 않음, 분리됨, 추가됨, 수정됨, 삭제됨
개인 무효 DemonstrateRowState()
{ // 하나의 열이 있는 DataTable을 생성하는 함수를 실행합니다. DataTable myTable = MakeTable();
// 새 DataRow를 만듭니다. myRow = myTable.NewRow(); // 분리된 행. Console.WriteLine("New Row " + myRow.RowState);
myTable.Rows.Add(myRow); // 새 행 Console.WriteLine("AddRow " + myRow.RowState);
myTable.AcceptChanges(); // 변경되지 않은 행. Console.WriteLine("AcceptChanges " + myRow.RowState);
myRow["FirstName"] = "Scott"; // 수정된 행. Console.WriteLine("Modified " + myRow.RowState);
myRow.Delete(); // 삭제된 행. Console.WriteLine("Deleted " + myRow.RowState);
⑦ DataRow에서 보류 중인 변경 사항을 확인합니다.
DataRow 행고객;
rowCustomer = ds.Tables["고객"].Rows.Find("ALFKI");
rowCustomer["CompanyName"] = "새회사이름";
문자열 strNewCompanyName, strOldCompanyName;
Console.WriteLine(rowCustomer["회사 이름", DataRowVersion.Current]);
Console.WriteLine(rowCustomer["회사 이름", DataRowVersion.Original]);
1. 데이터세트
①、속성
CaseSensitive: DataTable의 문자열 비교에서 대소문자를 구분하는지 여부를 제어하는 데 사용됩니다.
맨 위
이 기사의 출처:
나의 비정상적인 네트워크
자바예외
닷넷예외
신탁