【问题标题】:How to use auto indexing in ACCESS database using OleDb in C# with sql commands如何使用 C# 中的 OleDb 和 sql 命令在 ACCESS 数据库中使用自动索引
【发布时间】:2012-03-06 11:30:08
【问题描述】:

我用 C# 编写了一个基于表单的程序,它使用 MS Access 数据库来存储其数据。

在 MDB 文件中,我有一个名为 __item__ 的表 表中有 7 个字段,其中第一个字段称为 __item_id__,它是表的自动索引器,所以当我添加新条目时,它应该每次自动增加,所以我不会有 2 个条目相同的ID。

在程序中我使用了以下代码(这不是完整的代码,只是相关的):

using System.Data.OleDb;

private OleDbConnection con; // create connection
private OleDbCommand cmd; // create command   

con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\\library0.1\\DB.mdb");
cmd = new OleDbCommand();
cmd.Connection = con;    

cmd.CommandText = "INSERT INTO Item VALUES (@item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication);";
con.Open(); // open the connection  
cmd.ExecuteNonQuery(); 
con.Close();

这段代码会给我一个错误__ExecuteNonQuery__ 声称我的字段太少。 它要我手动输入__item_id__,像这样:

 cmd.CommandText = "INSERT INTO Item VALUES (@item_id, @item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication);";

如何避免手动输入并让程序为每个新条目自动索引item_id

【问题讨论】:

    标签: c# sql ms-access oledb


    【解决方案1】:

    如果您在未指定列列表的情况下使用 INSERT INTO,则应为所有列提供参数。
    为避免错误,请将您的命令文本更改为:

    "INSERT INTO Item " + 
    "(item_name, creator_name publishing_name, item_type, genre, year_publication) " +
    "VALUES " + 
    "(@item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication);";
    

    【讨论】:

    • IT WORKS!!!thx...这就是为什么我喜欢 stackoverflow,9 分钟来解决我昨晚花了 3 个小时试图解决的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多