如何在插入语句中从访问数据库中获取下一个自动增量值
本文关键字:下一个 获取 访问 插入 语句 数据库 | 更新日期: 2023-09-27 17:49:18
我目前正在从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();
}
}
我读到,如果身份设置为true,您不必包括自动编号字段,不确定我是否设置为这种方式。我怎么能得到自动号码功能的工作,而运行一个SQL查询??
谢谢!
自动编号使您不必为获取下一个值而烦恼。自动编号应该不会在插入中给你带来任何问题,因为你没有使用它的字段集,它会自动获取插入的下一个值。
你先试试
"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
,而不是auto-number,然后尝试
"INSERT INTO MonsterDrops (ID,MonsterName, Drop, AmountDropped) VALUES
(2222, 'BOOGYMAN', 'BOOGERS', '1')";
如果你以这种方式获得成功,那么你必须阅读更多关于自动编号的知识,你将很容易解决你的问题,如果你甚至在这个问题上遇到问题,我随时准备进一步帮助。
编辑从评论:更改您的Drop
命名字段为Drop111
或Drop
以外的东西。因为,Drop
是SQL中的关键字。
我认为你需要设置autoincrement,比如
ALTER TABLE MonsterDrops
ALTER COLUMN ID AUTOINCREMENT(1001,1)
基本上将1001替换为您的最后一个ID并且您希望将下一个插入增加1