首先,是的,我知道还有其他几个问题。我已经审查并尝试了其中提出的不同解决方案;但是,当我单击提交按钮运行该函数时,我仍然收到“语法错误 INSERT INTO 语句”消息。
我正在运行 VS 2015 和 Access 2010 数据库。完整错误信息如下:
Data.OleDb.OleDbException (0x80040E14): Syntax error in INSERT INTO statement. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at createAcc.btnCreateAccount_Click(Object sender, EventArgs e) in e:\Documents\Visual Studio 2015\WebSites\OneStopFurniture\createAcc.aspx.cs:line 43
我的按钮处理程序代码如下:
protected void btnCreateAccount_Click(object sender, EventArgs e)
{
connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\\Documents\\Visual Studio 2015\\WebSites\\OneStopFurniture\\App_Data\\OneStopFur.accdb";
string InsertQuery;
try
{
connection.Open();
OleDbCommand cmdInsert = new OleDbCommand();
cmdInsert.Connection = connection;
InsertQuery= "INSERT INTO [userInfo] (
userName, password, firstName, lastName, userAddress, userCity, userZip, userPhone, userEmail
) VALUES (
@userName, @password, @firstName, @lastName, @userAddress, @userCity, @userState, @userZip, @userPhone, @userEmail
)";
cmdInsert.Parameters.AddWithValue("@userName", txtUserName.Text);
cmdInsert.Parameters.AddWithValue("@password", txtPassword.Text);
cmdInsert.Parameters.AddWithValue("@firstName", txtFirstName.Text);
cmdInsert.Parameters.AddWithValue("@lastName", txtLastName.Text);
cmdInsert.Parameters.AddWithValue("@userAddress", txtAddress.Text);
cmdInsert.Parameters.AddWithValue("@userCity", txtCity.Text);
cmdInsert.Parameters.AddWithValue("@userState", txtState.Text);
cmdInsert.Parameters.AddWithValue("@userZip", txtZip.Text);
cmdInsert.Parameters.AddWithValue("@userPhone", txtPhone.Text);
cmdInsert.Parameters.AddWithValue("@userEmail", txtEmail.Text);
cmdInsert.CommandText = InsertQuery;
cmdInsert.ExecuteNonQuery();
lblConfirm.Visible = true;
lblConfirm.Text = "Account creation successful.";
}
catch (Exception ex)
{
lblConfirm.Visible = true;
lblConfirm.Text = "Unable to create" + ex;
}
}
有人可以告诉我我在这里忽略了什么吗?在这一点上,我完全迷失了方向。
谢谢。
最佳答案
列列表中缺少 UserState。
InsertQuery= "INSERT INTO [userInfo]
([userName], [password], [firstName], [lastName], [userAddress], [userCity], [userState], [userZip], [userPhone], [userEmail])
VALUES(@userName, @password, @firstName, @lastName, @userAddress, @userCity, @userState, @userZip, @userPhone, @userEmail)";
最好的做法是引用所有内容以避免与关键字冲突。
关于c# - INSERT INTO 语句 ASP.Net C# 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32953772/