繁体   English   中英

ODBC插入不适用于Access数据库

[英]ODBC Insert not working on Access Database

现在,我正在使用Access数据库作为虚拟ODBC数据库(因此在开发过程中不会损坏任何有价值的信息),并且在向其中插入记录时遇到了麻烦。

我可以从该数据库中读取数据,并且可以执行插入命令,但是当我尝试向后读取记录时,它不存在

    using (OdbcConnection conn = new OdbcConnection(@"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=" + Directory.GetCurrentDirectory() + @"\Setup DB.accdb"))
    {
        conn.Open();
        int ID;

        //Autoincrement doesn't work, so new ID is LASTID++
        using (OdbcCommand query = new OdbcCommand("SELECT MAX(ID) AS LASTID FROM Setups", conn))
        {
            using (var reader = query.ExecuteReader())
            {
                reader.Read();
                ID = int.Parse(reader["LASTID"].ToString()) + 1;
            }
        }

        transaction = conn.BeginTransaction();
        using (OdbcCommand insert = new OdbcCommand("INSERT INTO Setups (ID, PartNumber,LeafSide,Width) VALUES (?, ?, ?, ?)", conn))
        {
            //If ID is left out ^ then an error is thrown about the ID being null
            insert.Parameters.Add("@ID", OdbcType.Int).Value = ID;
            insert.Parameters.Add("@PartNumber", OdbcType.VarChar).Value = PartNo;
            insert.Parameters.Add("@LeafSide", OdbcType.VarChar).Value = AorB;
            insert.Parameters.Add("@Width", OdbcType.Double).Value = Width;

            insert.Transaction = transaction;

            //This temp shows that 1 record is modified
            int temp = insert.ExecuteNonQuery();

            transaction.Commit();
        }
    }
    //try catch and rollback removed for display

我感觉自己缺少了一些非常简单的东西,但是对于我的一生,我不知道它是什么。

原来,我缺少一些简单的东西。 因为我使用Directory.GetCurrentDirectory()+ @“ \\ Setup DB.accdb”作为我的位置,所以我正在修改/ bin / Debug文件夹中的数据库,而不是我正在检查的数据库。

感谢这个答案使我意识到了这一点:

如果您的c#代码无例外地执行,它也会更新数据库。可能您在ConnectionString中使用了AttachDbFilename = | DataDirectory | \\ yourDB.mdf,这意味着更新的数据库位于项目的子文件夹BIN \\ DEBUG文件夹中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM