【发布时间】:2012-09-27 15:53:54
【问题描述】:
我有一个 C# windows 应用程序,我正在尝试将数据(已由用户输入)插入到 access 数据库中。我没有收到任何错误,但它没有输入数据。有什么想法吗?
string sqlInsert = "insert into assessment (id) values (@id)";
using (OleDbConnection conn = new OleDbConnection(dsn))
{
OleDbCommand cmd = new OleDbCommand(sqlInsert, conn);
cmd.Parameters.Add("@id", OleDbType.VarChar, 50).Value = iDTextBox.Text.Trim().Length != null ? storedID.Trim() : "";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
id 的数据类型是Text。
编辑: 连接字符串存储在 app.config 中:
<add name="conn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\CADSCUPP.mdb" providerName="System.Data.OleDb"/>
并通过以下方式在代码中访问:
private string dsn = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
如果我手动插入记录(而不是通过代码后面的代码),我可以在程序的其他地方读取记录,以便连接正常工作。
【问题讨论】:
-
OleDbType.VarChar?身份证不是数字吗?
-
你怎么知道记录没有被写入?您是从 ASP.NET 查询数据库,还是查看 Access 中的表来验证它?您可能会检查 ASP.NET 和 VS 是否没有在您的开发机器上的其他地方复制数据库。我不知道 ASP.NET 会发生这种情况,但我已经看到 Win7 上使用 Access dbs 的 WinForms 应用程序会发生这种情况。
-
出于好奇,该查询在 MS Access 中是否按预期工作?
-
@AnnL。幸运的是,没有生成副本。我知道它是从 .net 和 access 写的
-
@Remou 是的,查询在访问中按预期工作