记录未插入访问数据库

时间:2012-09-27 15:53:54

标签: c# asp.net ms-access

我有一个C#windows应用程序,我正在尝试将数据(已由用户输入)插入到访问数据库中。我没有收到任何错误,但它没有输入数据。有什么想法吗?

        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;

如果我手动插入记录(而不是通过代码后面的代码),我可以读取程序中其他地方的记录,以便连接起作用。

5 个答案:

答案 0 :(得分:2)

在编译和运行WinForms应用程序时,Windows 7已知在其他地方制作Access数据库的副本。我不知道它是用ASP.NET应用程序做到的,但它有可能。可能值得验证应用程序访问的数据库是否位于您认为的位置。

答案 1 :(得分:1)

在Sql Text中使用问号而不是@。参数名称与访问无关。只有订单才算。我在相当长的一段时间内没有使用过访问权限 - 但这是我记得的一件事,它曾经让我发疯。使用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();
        }

答案 2 :(得分:0)

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

示例:

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

答案 3 :(得分:0)

我没有在您的连接字符串中看到任何身份验证。试试其中一个字符串:

http://www.connectionstrings.com/access-2007

答案 4 :(得分:0)

我认为您缺少提及命令类型。添加如下所示的另一行:

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