C# 记录未插入access数据库

C# 记录未插入access数据库,c#,asp.net,ms-access,C#,Asp.net,Ms Access,我有一个C#windows应用程序,我正在尝试将数据(由用户输入)插入access数据库。我没有收到任何错误,但是它没有输入数据。有什么想法吗 string sqlInsert = "insert into assessment (id) values (@id)"; using (OleDbConnection conn = new OleDbConnection(dsn)) { OleDbCommand cmd =

我有一个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"/>

如果我手动插入记录(而不是通过代码隐藏代码),我可以在程序的其他地方读取记录,以便连接正常。

您可以验证字符串连接是否正确

样本:

connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabasename.mdb;"

在Sql文本中使用问号而不是@。参数名称与访问权限无关。只有订单才有价值。我已经有一段时间没有使用access了——但我记得有一件事,它曾经让我发疯。使用Access时,参数名称无关紧要

string sqlInsert = "insert into assessment (id) values (?)";

        using (OleDbConnection conn = new OleDbConnection(dsn))
        {

            OleDbCommand cmd = new OleDbCommand(sqlInsert, conn);

            cmd.Parameters.Add("?", OleDbType.VarChar, 50).Value = iDTextBox.Text.Trim().Length == 0 ? storedID.Trim() : "";

            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }

我在你的连接字符串中看不到任何身份验证。请尝试以下字符串之一:


众所周知,Windows 7在编译和运行WinForms应用程序时会在其他地方复制Access数据库。我不知道它在ASP.NET应用程序中是否能做到这一点,但这是可能的。验证应用程序访问的数据库是否位于您认为的位置可能是值得的

我想你没有提到命令类型。添加另一行,如下所示:

OleDbCommand cmd = new OleDbCommand(sqlInsert, conn);
cmd.CommandType = CommandType.Text; 

OleDbType.VarChar?ID不是一个数字吗?你怎么知道记录没有被写入?您是从ASP.NET查询数据库,还是查看Access中的表来验证它?您可以检查ASP.NET和VS是否在您的开发机器上的其他地方复制了数据库。我不知道ASP.NET会发生这种情况,但我见过Win7上使用Access dbs的WinForms应用程序会发生这种情况。好奇的是,这种查询在MS Access中是否像预期的那样工作?@AnnL。幸运的是,没有生成副本。我知道它是从.net和access@Remou是的,查询在中按预期工作access@peroija-查看我的更新--表评估是什么样子的?结果显示,在调试下的几个文件夹中,它正在重新创建数据库并将其保存在其中。是的,它将其复制到可执行文件所在的bin文件夹中。在每个构建中,它都会用解决方案文件夹中的副本替换它。因此,如果不生成并执行exe文件,则可以查看数据。
OleDbCommand cmd = new OleDbCommand(sqlInsert, conn);
cmd.CommandType = CommandType.Text;