ODBC插入不能在Access数据库上工作
问题描述:
现在我使用Access数据库作为虚拟ODBC数据库(所以我不会在开发期间损坏任何有价值的信息),并且在插入记录时遇到问题。ODBC插入不能在Access数据库上工作
我可以从该DB就好了Insert命令经历,但是当我尝试读取记录回它不存在
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文件夹中的数据库而不是正在检查的数据库。
感谢this answer让我认识到这一点:
如果你的C#代码的执行没有任何例外,它更新数据库也一样,也许你正在使用AttachDbFilename = | DataDirectory目录| \ yourDB.mdf在你的ConnectionString表示更新的数据库位于项目的子文件夹BIN \ DEBUG文件夹中。