如何在ms access数据库c#中插入带有主键的记录
Posted
技术标签:
【中文标题】如何在ms access数据库c#中插入带有主键的记录【英文标题】:How to insert a record with a primary key in ms access database c# 【发布时间】:2011-11-09 03:45:28 【问题描述】:我正在使用以下命令在 MS Access 数据库中插入记录:
OleDbCommand cmd = new OleDbCommand("insert into Table1 values('" + Name + "','" +
Symbol + "','" + D + "','" + Red + "','" + RedBuy + "','" + RedSell + "','" +
SBIntraBuy + "','" + SBTR1Buy + "','" + SBTR2Buy + "','" + SBTR3Buy + "','" +
SBIntraSell + "','" + SBTR1Sell + "','" + SBTR2Sell + "','" + SBTR3Sell + "','" + RSTL
+ "','" + Green + "');", con);
我想在名称之前添加一个名为 CustomerId 的列,并带有一个主键。我不知道如何用主键插入它。我应该在我的主键命令中添加什么?
如果有人可以帮助我,将不胜感激。
提前致谢。
查看this link 获取表格布局的屏幕截图。
【问题讨论】:
CustomerId
字段是否自动递增?我们可以看看你的表结构吗?
请等我截屏一分钟
是的,它是自动增量(或自动编号)。继续尝试我的答案:P
【参考方案1】:
如果您的密钥是自动递增的,那么您不需要这样做。数据库将为您完成。如果您的密钥不是自动递增的,请考虑更改它。真的很漂亮!
另外,请考虑使用binding 而不是构建完整的插入查询。
假设如下表:
表格1 PK(自动增量) 姓名 象征你要做的是:
OleDbCommand cmd = new OleDbCommand("insert into Table1 (Name,Symbol) values (?,?)");
cmd.Parameters.Add(new OleDbParameter("@Name",Name));
cmd.Parameters.Add(new OleDbParameter("@Symbol",Symbol));
或(更安全):
OleDbCommand cmd = new OleDbCommand("insert into Table1 (Name,Symbol) values (@Name,@Symbol)");
cmd.Parameters.Add(new OleDbParameter("@Name",Name));
cmd.Parameters.Add(new OleDbParameter("@Symbol",Symbol));
最后:
cmd.ExecuteNonQuery();
【讨论】:
C#能接受吗?作为参数。我一直看到Parameters.Add()
方法中使用的变量;在这种情况下,@Name
或 @Symbol
。
感谢它的工作,但我不能投票给你,因为我没有足够的声誉
@AdamWenger 它与 ? 一起使用,但如果使用像 @Name
这样的命名变量可能会更安全。而且我只用 dBase 进行了测试,所以也许它依赖于引擎......
@AdamWenger 是的,DbCommands 可以使用不带名称的参数(命令文本中的 ?)。一些 DbCommands,不支持参数名称。在这些情况下,您必须正确排序参数。 IMO,这会增加代码债务,因此对于任何支持参数名称的 DbCommand,请使用它们。以上是关于如何在ms access数据库c#中插入带有主键的记录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符