【问题标题】:INSERT query OleDB C#插入查询 OleDB C#
【发布时间】:2011-02-21 13:37:47
【问题描述】:

我知道这已经是 1000000000 次了,但没有一个解决方案对我有帮助。 我想使用 OleDB 在 C# 中插入数据。我尝试了 mln 解决方案,但这是最简单的解决方案,它应该可以工作,但它没有:

 SQLCONNECTION = @"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\dbScenariusz.mdb";

 using (OleDbConnection connection = new OleDbConnection(SQLCONNECTION))
            {
                string sql = "INSERT INTO Table (content) VALUES('lala')";
                connection.Open();
                OleDbCommand command = new OleDbCommand(sql, connection);
                command.ExecuteNonQuery();
                connection.Close();
            }

SQLCONNECTION 没问题。它适用于 SELECT 查询。

string sql - 我在 Access 中试过这个查询,它工作正常。

我得到没有错误。它只是没有向数据库中插入任何内容。 当我在 Access(同一个数据库)中运行查询时,会插入行。

奇怪的是 command.ExecuteNonQuery(); 返回 1!这意味着有 1 行受到影响!

我真的不知道问题出在哪里,所以我非常感谢任何帮助。 对不起我的英语。

更新: 另一个奇怪的事情。我将查询更改为更新,它工作正常!真的吗? :)

【问题讨论】:

  • 只是猜测,因为您的代码看起来不错。你是在 64 位系统上运行的吗?
  • 你确定你正在处理好文件吗?
  • 子屯,1) 我通过 Microsoft Access 插入行(使用相同的查询) 2) 我在 Visual Studio 中打开表,我看到通过 Access 插入的行!但同样的事情在 Visual 中不起作用。我真的不知道出了什么问题。

标签: c# insert oledb


【解决方案1】:

您正在连接到 DataDirectory。 .mbd 文件是否在构建后被复制?换句话说,您是否在每次构建时都重新部署数据库,从而丢失插入?

快速测试可以使用相同的代码和相同的连接在插入后进行选择。

【讨论】:

  • 我希望这是问题,但不是。 1)我运行插入查询并获得返回值=1(受影响的 1 行)2)我运行选择查询(来自同一个表)成功 3)我检查表并且没有插入任何内容 4)难以置信!
  • 你是对的 Erno!这是问题所在:我在主目录中有数据库,.mdb 文件被复制到 bin/Debug/ 并且所有更改都在这个文件上进行。因此,当我再次运行应用程序时,数据库中的所有更改都消失了。我应该如何改变它?
  • 只需不要每次都重新部署数据库,并将数据库放在不会更新的目录中。
【解决方案2】:

在解决方案资源管理器中,检查app.config。双击app.config,然后重新输入connectionString。给出你的数据库的路径。 例如,在我的项目中,connectionString 的默认位置是:

connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\App_Data\database.accdb;Persist Security Info=True"

假设数据库存储在这个位置:

C:\Documents and Settings\Amuk\My Documents\Visual Studio 2010\Projects\insertion\insertion\App_Data

因此,将 connectionString 替换为

connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Amuk\My Documents\Visual Studio 2010\Projects\insertion\insertion\App_Data\database.accdb;保持安全信息=真”

您的问题将得到解决,我希望这对您有帮助,我也遇到了同样的问题,通过将connectionString 替换为原始路径,数据库正在存储所有记录。

【讨论】:

    【解决方案3】:

    您可以尝试使用事务来提交您的更改。

    command.Transaction = connection.BeginTransaction(); //after connection.open()
    

    然后添加

    command.Transaction.Commit(); //Before connection.close()
    

    【讨论】:

    • 我完全按照你的建议做了,但没有任何改变。
    • @arczi - 你检查正确了吗?根本没有错误吗?除此之外,我认为您的代码没有任何问题。
    • 没有错误和警告。 1)我通过 Microsoft Access 插入行(使用相同的查询) 2)我在 Visual Studio 中打开表,我看到通过 Access 插入的行!我真的不知道出了什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多