我目前正在使用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查询时使AutoNumber函数工作?
谢谢!
答案 0 :(得分:1)
自动编号可以帮助您不必担心获取下一个值。 AutoNumber不应该在insert中提供任何问题,因为你没有使用它字段集,它会自动获得下一个值以便插入。
首先尝试
"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')";
如果你以这种方式获得成功,那么你必须阅读更多关于自动编号的信息,你将很容易解决你的问题,如果你遇到这个问题,我愿意进一步提供帮助。
修改强>
发表评论:将您的Drop
指定字段更改为Drop111
或Drop
以外的其他字段。因为,Drop
是SQL中的关键字。
答案 1 :(得分:0)
我相信您需要设置类似
的自动增量ALTER TABLE MonsterDrops
ALTER COLUMN ID AUTOINCREMENT(1001,1)
基本上用您的上一个ID替换1001,并且您希望将下一个插入增加1