我在使用.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();
答案 0 :(得分:1)
如果您的代码清单准确无误,那么您似乎有一个名为Insert
的存储过程,这是不可取的。尝试使用非保留关键字的名称创建过程,看看是否有帮助。
答案 1 :(得分: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。我建议将ASP.Net与Sql Server一起作为后端。无论如何你的答案,用?替换参数?使用MS-Access时。见上文。