0

現在、C# で記述された Windows フォーム アプリケーションからデータを入力しています。マイ データベースは Microsoft Access データベースです。主キーの値を複製するとエラーが発生し続けます。私はしばらくの間インターネットを掘り下げてきましたが、私の問題に関連するものはあまり見つかりませんでした.

私の現在のテーブル設定は以下のとおりです。

Field Name     Data
-------------------
ID             AutoNumber
MonsterName    Text
Drop           Text
AmountDropped  Text

そして、私の現在のSQLクエリは以下の通りです:

"INSERT INTO MonsterDrops (MonsterName, Drop, AmountDropped) VALUES ('" +
Monsters.SelectedCells[0].Value.ToString() + "','" + DropName + "'," + Amount + ")"

これにより、「INSERT INTOステートメントの構文エラー」というエラーが表示されます

私はこの関数でクエリを実行しています:

private void executeNonQuery(string query)
    {
        //create a new connection and pass in config settings for it
        OleDbConnection db = new OleDbConnection(Properties.Settings.Default.DFUWDBConnectionString);
        try
        {
        //Open the DB
        db.Open();

            try
            {
            //create a new command object
            OleDbCommand command = new OleDbCommand();

            //set the command to be your query
            command.CommandText = query;

            //set the DB for the query to be performed on
            command.Connection = db;

            //execute the insert
            command.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
    }
    finally
    {
        db.Close();
    }
}

Identity が true に設定されている場合、AutoNumber フィールドを含める必要はないことを読みました。私の設定がそのように設定されているかどうかはわかりません。SQLクエリの実行中にオートナンバー機能を機能させるにはどうすればよいですか???

ありがとう!

4

2 に答える 2

1

自動付番により、次の値を取得することを気にする必要がなくなります。フィールドセットを使用していないため、オートナンバーは挿入時に問題を提供するべきではありません。挿入のために次の値を自動的に取得します。

まずあなたが試してみてください

"INSERT INTO MonsterDrops (MonsterName, Drop, AmountDropped) VALUES 
('BOOGYMAN', 'BOOGERS', '1')";

次に、これを試してください

"INSERT INTO MonsterDrops (MonsterName, Drop, AmountDropped) VALUES
 ('" + Monsters.SelectedCells[0].Value.ToString() + "','" + DropName + "'
,'" + Amount + ")"'"

2番目に問題が見つかった場合は、取得している値にすぐに問題があります

それ以外の場合、最初のクエリでも問題が発生する場合は、この方法を試してください

Number自動採番の代わりにIDフィールドを作成して試してください

"INSERT INTO MonsterDrops (ID,MonsterName, Drop, AmountDropped) VALUES 
(2222, 'BOOGYMAN', 'BOOGERS', '1')";

この方法で成功した場合は、自動採番についてもっと読む必要があり、簡単に問題を解決できます。これでも問題が発生した場合は、さらに支援する準備ができています.

コメントから編集Drop:名前付きフィールドを に変更するDrop111か、 以外の何かに変更しますDrop。なぜなら、DropSQL の is キーワードです。

于 2012-12-24T06:05:50.870 に答える
0

次のように自動インクリメントを設定する必要があると思います

ALTER TABLE MonsterDrops
   ALTER COLUMN ID AUTOINCREMENT(1001,1)

基本的に 1001 を最後の ID に置き換え、次の挿入を 1 増やしたい

于 2012-12-24T05:51:55.000 に答える