次の方法で共有


DataRow.ItemArray プロパティ

配列を使用してこの行のすべての値を取得または設定します。

Public Property ItemArray As Object ()
[C#]
public object[] ItemArray {get; set;}
[C++]
public: __property Object* get_ItemArray();public: __property void set_ItemArray(Object* __gc[]);
[JScript]
public function get ItemArray() : Object[];
public function set ItemArray(Object[]);

プロパティ値

Object 型の配列。

例外

例外の種類 条件
ArgumentException 配列がテーブルの列数を超えています。
InvalidCastException 配列内の値が、各値の DataColumn 内の DataType と一致していません。
ConstraintException 編集が制約に違反しています。
ReadOnlyException 編集によって読み取り専用の列の値を変更しようとしています。
NoNullAllowedException 編集によって、 DataColumn オブジェクトの AllowDBNull が false である列に null 値を入力しようとしています。
DeletedRowInaccessibleException 行が削除されています。

解説

DataColumnDefaultValue プロパティが設定されている場合は、配列で null 参照 (Visual Basic では Nothing) を渡して、その列に既定値を設定します。同様に、列の AutoIncrement プロパティが true に設定されている場合は、配列で null 参照 (Nothing) を渡して、その行に自動生成値を設定します。

ユーザーの操作によって ColumnChanging イベントまたは RowChanging イベントで例外が生成された場合は、例外が発生することがあります。

使用例

[Visual Basic, C#, C++] ItemArray プロパティを使用して値を取得および設定する方法を次の例に示します。

 
Private Sub CreateRowsWithItemArray()
    ' Make a DataTable using the function below.
    Dim dt As DataTable = MakeTableWithAutoIncrement()
    Dim dr As DataRow
    ' Declare the array variable.
    Dim myArray(1) As Object
    ' Create 10 new rows and add to DataRowCollection.
    Dim i As Integer
    For i = 0 to 9
       myArray(0) = DBNull.Value
       myArray(1)= "item " & i.ToString()
       dr = dt.NewRow()
       dr.ItemArray = myArray
       dt.Rows.Add(dr)
    Next
    PrintTable(dt)
 End Sub
 
 Private Function MakeTableWithAutoIncrement() As DataTable
    ' Make a table with one AutoIncrement column.
    Dim myTable As DataTable = New DataTable("myTable")
    Dim dcID As DataColumn = New DataColumn("id", Type.GetType("System.Int32"))
    dcID.AutoIncrement = True
    dcID.AutoIncrementSeed = 10
    myTable.Columns.Add (dcID)
    
    Dim dcFirstName As DataColumn = New DataColumn("Item", Type.GetType("System.String"))
    myTable.Columns.Add(dcFirstName)
    MakeTableWithAutoIncrement = myTable
 End Function
 
 Private Sub PrintTable(myTable As DataTable)
    Dim myRow As DataRow
    Dim myColumn As DataColumn
    For Each myRow in myTable.Rows
       For Each myColumn in myTable.Columns
          Console.WriteLine(myRow(myColumn))
       Next
    Next
 End Sub

[C#] 
private void CreateRowsWithItemArray(){
    // Make a DataTable using the function below.
    DataTable dt = MakeTableWithAutoIncrement();
    DataRow dr;
    // Declare the array variable.
    object [] myArray = new object[2];
    // Create 10 new rows and add to DataRowCollection.
    for(int i = 0; i <10; i++){
       myArray[0]=null;
       myArray[1]= "item " + i;
       dr = dt.NewRow();
       dr.ItemArray = myArray;
       dt.Rows.Add(dr);
    }
    PrintTable(dt);
 }
 
 private DataTable MakeTableWithAutoIncrement(){
    // Make a table with one AutoIncrement column.
    DataTable myTable = new DataTable("myTable");
    DataColumn dcID = new DataColumn("id", Type.GetType("System.Int32"));
    dcID.AutoIncrement = true;
    dcID.AutoIncrementSeed = 10;
    myTable.Columns.Add(dcID);
    
    DataColumn dcFirstName = new DataColumn("Item", Type.GetType("System.String"));
    myTable.Columns.Add(dcFirstName);
    return myTable;
 }
 
 private void PrintTable(DataTable myTable){
    foreach(DataRow myRow in myTable.Rows){
       foreach(DataColumn myColumn in myTable.Columns){
          Console.WriteLine(myRow[myColumn]);
       }
    }
 }

[C++] 
private:
void CreateRowsWithItemArray(){
    // Make a DataTable using the function below.
    DataTable* dt = MakeTableWithAutoIncrement();
    DataRow* dr;
    // Declare the array variable.
    Object* myArray[] = new Object*[2];
    // Create 10 new rows and add to DataRowCollection.
    for(int i = 0; i <10; i++){
       myArray[0]=0;
       myArray[1]= String::Format( S"item {0}", __box(i));
       dr = dt->NewRow();
       dr->ItemArray = myArray;
       dt->Rows->Add(dr);
    }
    PrintTable(dt);
 }
 
 DataTable* MakeTableWithAutoIncrement(){
    // Make a table with one AutoIncrement column.
    DataTable* myTable = new DataTable(S"myTable");
    DataColumn* dcID = new DataColumn(S"id", Type::GetType(S"System.Int32"));
    dcID->AutoIncrement = true;
    dcID->AutoIncrementSeed = 10;
    myTable->Columns->Add(dcID);
    
    DataColumn* dcFirstName = new DataColumn(S"Item", Type::GetType(S"System.String"));
    myTable->Columns->Add(dcFirstName);
    return myTable;
 }
 
 void PrintTable(DataTable* myTable){
    System::Collections::IEnumerator* myEnum = myTable->Rows->GetEnumerator();
    while (myEnum->MoveNext())
    {
       DataRow* myRow = __try_cast<DataRow*>(myEnum->Current);
       System::Collections::IEnumerator* myEnum1 = myTable->Columns->GetEnumerator();
       while (myEnum1->MoveNext())
       {
          DataColumn* myColumn = __try_cast<DataColumn*>(myEnum1->Current);
          Console::WriteLine(myRow->Item[myColumn]);
       }
    }
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

DataRow クラス | DataRow メンバ | System.Data 名前空間 | AcceptChanges | AutoIncrement | DataColumn