如何在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 图表?

如何将数据插入具有自动递增主键的 MySQL?

如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符

如何使用 SQL 在 MS Access 中“删除”和未命名的关系/约束?

MS Access 主键自动编号变得混乱

使用 c#ExecuteNonQuery 插入后 MS Access 表未正确刷新