2017-02-15 39 views
1

別の表のC#に自動インクリメントデータ型を挿入する方法 は、私は別のテーブルここ</p> <p>にインクリメントID PRIMARY KEYを追加したい

  int id = null; //this id is public 

      OleDbCommand command = new OleDbCommand("insert into Table1([ID], [Name] values (@ID, @Name)", connection); 
      command.Parameters.AddWithValue("@ID", id); 
      command.Parameters.AddWithValue("@ID", txtName.Text); 
      command.ExecuteNonQuery(); 
      command.Parameters.Clear(); 

このデータベース add to this database

に追加私のコードです私はワン
  OleDbCommand command2 = new OleDbCommand("insert into Table2([TableID], [OtherInfo], [OtherDocument] values (@TableID, @OtherInfo, @OtherDocument)", connection); 
      command2.Parameters.AddWithValue("@TableIDID", id); 
      command2.Parameters.AddWithValue("@OtherInfo", txtOtherInfo.Text); 
      command2.Parameters.AddWithValue("@OtherDocument", txtOtherDocument.Text); 
      command2.ExecuteNonQuery(); 
      command2.Parameters.Clear(); 

TAble2

毎回私は新しい名前を追加するidフィールドも他のテーブルに追加する私の悪い英語のおかげで申し訳ありません。

+1

私は、その列のデータ型自体にその値を追加する必要はないと思うのですが、その自動増分だけがID列 – Dandy

+0

を残します。どのように私は他のテーブルにautoincrementデータ型を追加するのですか? –

+0

2番目のテーブルを増やす必要はありません。あなたができることは、最初のテーブルに何かを挿入してmax(id)を取得し、それを2番目のテーブルに挿入することです。 – Nitin

答えて

2

あなたのIDフィールドがオートナンバーですので、あなたが挿入したとき、あなたはそれのために価値を与えるべきではありません、あなたは、データベースが

OleDbCommand command = new OleDbCommand("insert into Table1([Name] values (@Name)", connection); 

command.Parameters.AddWithValue("@Name", txtName.Text); 
command.ExecuteNonQuery(); 

のためにそれを作成してみましょう今の問題は、それを取得する方法です。これは、SELECT @@ IDENTITY

command.Parameters.Clear(); 
command.CommandText = "SELECT @@IDENTITY"; 
int id = Convert.ToInt32(command.ExecuteScalar()); 

最後にこれはないMS-Accessで必要なパターンであり、他のテーブルのためにあなたの挿入時に

を検索したIDを使用することができますコマンドを使用して行うことができますバッチコマンドを理解する。他のデータベースシステムでは、2つではなく1つのデータベースへのトリップを使用するより良いパターンがあります。 (もちろん、主にデスクトップデータベースにアクセスすると、これは大きな違いにはなりません)

+0

私の質問にお答えいただき、ありがとうございました。 :) –

関連する問題