0

我在使用 .mdb 数据库的 asp.net 项目中执行存储过程时遇到问题。我想使用存储过程,但在执行代码之后......

using (OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString.ToString()))
                {
                    conn.Open();
                    using (OleDbCommand com = new OleDbCommand("Insert", conn))
                    {
                        com.CommandType = CommandType.StoredProcedure;
                        com.Parameters.AddWithValue("@Login", UserName0.Text);
                        com.Parameters.AddWithValue("@Password", Hashing.Hash(ConfirmPassword0.Text));
                        com.Parameters.AddWithValue("@Role", RoleList1.SelectedValue);
                        com.ExecuteNonQuery();
                    }
                    conn.Close();

我有例外:

System.Data.OleDb.OleDbException:EXECUTE 后的预期查询名称。

但是当我在代码下方使用时,一切正常。我也改变了:CommandType.StoredProcedure 到 CommandType.Text 但它仍然不起作用。有人可以帮我吗?

using (OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString.ToString()))
                {
                    conn.Open();
                    using (OleDbCommand com = new OleDbCommand("INSERT INTO Workers ( st_login, st_password, st_role ) VALUES (login, password, role);", conn))
                    {
                        com.Parameters.AddWithValue("@Login", UserName0.Text);
                        com.Parameters.AddWithValue("@Password", Hashing.Hash(ConfirmPassword0.Text));
                        com.Parameters.AddWithValue("@Role", RoleList1.SelectedValue);
                        com.ExecuteNonQuery();
                    }
                    conn.Close();
4

2 回答 2

1

如果您的代码清单是准确的,那么您似乎有一个名为的存储过程Insert,这是不可取的。尝试使用不是保留关键字的名称创建过程,看看是否有帮助。

于 2012-08-06T10:40:44.357 回答
0
using (OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString.ToString()))
                {
                    conn.Open();
                    using (OleDbCommand com = new OleDbCommand("INSERT INTO Workers ( st_login, st_password, st_role ) VALUES (?, ?, ?);", conn))
                    {
                        com.Parameters.AddWithValue("@Login", UserName0.Text);
                        com.Parameters.AddWithValue("@Password", Hashing.Hash(ConfirmPassword0.Text));
                        com.Parameters.AddWithValue("@Role", RoleList1.SelectedValue);
                        com.ExecuteNonQuery();
                    }
                    conn.Close();

请注意 Ms-Access 不支持存储过程。如果您需要这样或复杂的查询,请使用 Sql Server。由于您的应用程序正在使用 asp.net。我会推荐使用 Sql Server 作为后端的 ASP.Net。无论如何,对于您的答案,将参数替换为?使用 MS-Access 时。看上面。

于 2012-08-06T10:41:08.247 回答