2016-04-27 12 views
0

私の質問は、テーブルのプライマリキーの最大値を取得し、+1してその結果を特定のテキストボックスに入れる方法は、後で挿入する新しいレコードとしてデータベースに追加します。ありがとうC#プライマリキーの最大値を取得する方法

+4

それは主キーがID列である必要があり、データベースがそれを更新するの世話をできるようにする方が簡単ではないでしょうか? – Tim

+1

これには危険があります。たとえば、2人とも同じページにアクセスし、同じ最大IDを取得します。もう1つは他のものの前に投稿し、最大IDは今変更されました。 2人目は、更新しようとすると主キーの競合が発生します。私はTimのコメント –

+0

の後にお勧めしたいと思います。これは、ユーザーが複数のレコードを編集できるようにしたり、同時に複数のレコードを編集することを許可したりすると、うまく拡張されません。キーが重複します。 –

答えて

1

これはデータベースにたくさんのレコードが含まれているとプログラムが遅くなることがありますが、それは私のためにうまくいきます。

DataTable myDataTable = new DataTable(); 
/* 
Add record from primary key column to datatable 
*/ 

//Add primary key from datatable to List<int> 
List<int> primaryKeyList = new List<int>(); 
foreach (DataRow row in myDataTable.Rows) 
{ 
    primaryKeyList.Add(Int32.Parse(row[0].ToString())); 
} 

int maxKey = primaryKeyList.Max(); 
primaryKeyList.Clear(); 
myDataTable.Dispose(); 
/* 
Do whatever you want with maxKey 
*/ 

または

DataTable myDataTable = new DataTable(); 
/* 
Add record from primary key column to datatable 
*/ 

int maxKey = 0; 
//Find max key 
foreach (DataRow row in myDataTable.Rows) 
{ 
    if(Int32.Parse(row[0].ToString()) > maxKey) maxKey = Int32.Parse(row[0].ToString()); 
} 

myDataTable.Dispose(); 
/* 
Do whatever you want with maxKey 
*/ 
+0

これは質問に答えていますが、上記のコメントの理由から、アプリケーションが主キーを生成することは実際には良い考えではありません。 – Tim

関連する問題