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

自动编号使您不必费心获取下一个值。AutoNumber 不应该在插入时为您提供任何问题,因为您没有使用它的字段集,它会自动获取下一个值以进行插入。

首先你尝试

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

然后试试这个

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

如果您在第二个中发现问题,那么您获得的值会立即出现问题

否则,如果您在第一次查询中遇到问题,那么您应该尝试这种方式

制作您的 ID 字段Number而不是自动编号并尝试

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

如果您以这种方式成功,那么您必须阅读有关自动编号的更多信息,您将轻松解决您的问题,如果您遇到问题,我愿意提供进一步的帮助。

Edit From comments: Change your Drop named field to Drop111 or something other than Drop. Because, the Drop is keyword in SQL.

于 2012-12-24T06:05:50.870 回答
0

我相信你需要设置自动增量,比如

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

基本上用你的最后一个 ID 替换 1001 并且你想将你的下一个插入增加 1

于 2012-12-24T05:51:55.000 回答