-
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に格納されているデータを確認します。
データテーブル 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 内の 2 つの DataTable オブジェクト間にリレーションシップが作成されるときに作成されるため、通常はわざわざ作成する必要はありません。
③.SqlDataAdapter.Fillメソッドを使用してメソッド情報を取得します。
5. コードをコンパイルして DataTable オブジェクトを作成する
① DataTable オブジェクトを作成します: DataTable tbl = new DataTable("TableName");
②. DataSet オブジェクトの Table convergence に DataTable を追加します。
DataSet ds = 新しい DataSet();
DataTable tbl = new DataTable("顧客");
ds.Tables.Add(tbl);
DataSet ds = 新しい DataSet();
DataTable tbl = ds.Tables.Add("顧客");
DataTable オブジェクトは、最大 1 つの DataSet オブジェクトにのみ存在できます。 DataTable を複数の DataSet に追加する場合は、コピー ステップまたはクローン ステップを使用する必要があります。コピー ステップでは、元の DataTable と同じ構造を持ち、同様の行を含む新しい DataTable が作成されます。Clone ステップでは、元の DataTable と同じ構造を持つが行を含まない新しい DataTable が作成されます。
③.DataTableに列を追加します。
DataTable tbl = ds.Tables.Add("注文");
DataColumn Col =tbl.Columns.Add("OrderID",typeof(int));
Col.AllowDBNull = false;
列の最大長 = 5;
Col.Unique = true;
tbl.PrimaryKey = new DataColumn[]{tbl.Columns["顧客ID"]};
主キーを設定する必要がある場合、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("商品合計",typeof(10進数),"数量*単価");
6. DataTableの内容を変更①、新規DataRowを追加
DataRow 行 = ds.Tables["顧客"].NewRow();
row["顧客ID"] = "ALFKI";
ds.Tables["顧客"].Rows.Add(row);
object[] aValues ={"ALFKI","アルフレッド","アンダース","030-22222"};
da.Tables["顧客"].LoadDataRow(aValues,false);
②現在修正中です。
行の内容を変更しても、データベース内の対応する内容は自動的に変更されません。行への変更は保留中の変更とみなされ、後で SqlDataAdapter オブジェクトを使用してデータベースに配信されます。
データ行行顧客;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
if(rowCustomer == null)
//顧客を検索していません
それ以外
{
rowCustomer["会社名"] = "新しい会社名";
rowCustomer["連絡先名"] = "新しい連絡先名";
}
//このフォームの使用を推奨します
データ行行顧客;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
if(rowCustomer == null)
//顧客を検索していません
それ以外
{
rowCustomer.BeginEdit();
rowCustomer["会社名"] = "新しい会社名";
rowCustomer["連絡先名"] = "新しい連絡先名";
rowCustomer.EndEdit();
}
//null は、この列のデータを変更しないことを意味します
obejct[] aCustomer ={null, "新しい会社名", "新しい連絡先名", null}
データ行行顧客;
rowCustomer = ds.Tables["顧客"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer;
③.DataRowのnull値を処理します。
// 空かどうかを確認する
データ行行顧客;
rowCustomer = ds.Tables["顧客"].Rows.Find("ALFKI");
if(rowCustomer.IsNull("電話"))
Console.WriteLine("NULL です");
それ以外
Console.WriteLine("Null ではありません");
//null値を付与する
rowCustomer["電話"] = DBNull.Value;
④.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 プロパティを使用します: Unchanged、Detached、Added、Modified、Deleted
private void DemonstrateRowState()
{ // 1 つの列を持つ 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 の保留中の変更を確認します。
データ行行顧客;
rowCustomer = ds.Tables["顧客"].Rows.Find("ALFKI");
rowCustomer["会社名"] = "新しい会社名";
文字列 strNewCompanyName、strOldCompanyName;
Console.WriteLine(rowCustomer["会社名", DataRowVersion.Current]);
Console.WriteLine(rowCustomer["会社名", DataRowVersion.Original]);
1. データセット
①、属性
CaseSensitive: DataTable 内の文字列比較で大文字と小文字を区別するかどうかを制御するために使用されます。
トップ
この記事の出典:
私の異常なネットワーク
Java例外
ドットネット例外
オラクル