2016-07-21 10 views
0

でのDataTableに挿入します。私は次のような状況を持っているWebアプリケーション

アンASP.NET AjaxのWebアプリケーションでは、データベースにデータを書き込むためのDataTableを使用しています。テーブルは非常にシンプルで、自動インクリメントIDを含んでいます。

私の質問:

それがデータベースにデータを挿入するときに同じ主キーidが、エラーにつながる(複数でDataRowに与えられている可能性があり、複数のユーザーが今、Webアプリケーションを使用している場合(キーを複製))?私が正しければ、.NewRow()を呼び出すときにidはすでに生成されています。

ありがとうございました!

例:

---------------------------------------------------------- 
| ID (primary, autoincrement) | C1  |  C2 | 
---------------------------------------------------------- 

DataTable dt = new DataTable(name); 

DataReader dr = ...; 

dt.Load(dr); // => Now the data table has the rows from the database, including column definitions. 
DataRow dr = dt.NewRow(); 
// => Now dr["ID"] is already set. 
+0

主キーには一意の値が必要です。 –

+0

したがって、このような状況では例外が発生します。 – pwblnz

答えて

1

私はあなたが望む結果を得ることができませんでしたが、.NewRow()行が自動的にIDを追加しません。

for(int i = 0; i < 10; i++) 
    { 
     row = table.NewRow(); 
     row["id"] = i; 
     row["item"] = "item " + i.ToString(); 
     table.Rows.Add(row); 
    } 

ここでは、新しい行を.NewRow()で追加しますが、独自の値(固有ID ==主キー)を入力する必要があります。

+0

このループをn個の顧客と見なすと、ロジックが正しいと思われます。 :) [私はその一例を知っている] – vish1990

+0

ありがとう、私は私の質問に例を追加しました。実際、IDはすでに設定されています。 – pwblnz

0

IDが生成されて一度しか使用されないため、mssqlユーザーが自動増分をtrueに設定するか、oracleデータベースのユーザー順序オブジェクトまたはユーザーGUIDに設定すると、アプリケーションが失敗した場合は重複IDを、インスタンス、および/またはシングルトンスレッドの場所はありません。

+0

これは、NewRow()メソッドがIDをデータベースから直接取得するか、または捨てられたdataRowのIDであることを意味しますか? – pwblnz

+0

データテーブルはXMLファイルのようなもので、新しいDataRowオブジェクトを作成してDataTableに追加するだけです。 (xmlに行を追加する) –

関連する問題