【发布时间】:2016-10-27 17:56:00
【问题描述】:
我正在用 C# 编写一个 asp.net 页面。我有一个包含 3 列(FirstName、CLNum、LastName)的表。我正在尝试使用简单的 SQL 查询来防止用户在 CLNum 中输入重复数据。这是我尝试过的...
INSERT INTO tblClock ([FirstName],[CL],[LastName]) VALUES (@FirstName, @CL, @LastName) WHERE @CL NOT IN (SELECT CL FROM tblClock)
页面编译正常,但是当我尝试提交数据时,我收到此错误:
关键字“WHERE”附近的语法不正确。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:关键字“WHERE”附近的语法不正确。
来源错误:
第 67 行:cmd.Connection = sqlCon;
第 68 行:sqlCon.Open();
第 69 行:IsAdded = cmd.ExecuteNonQuery() > 0;
第 70 行:sqlCon.Close();
第 71 行:}
以下是我正在处理的代码部分:
//Insert click event to insert new record to database
protected void btnInsert_Click(object sender, EventArgs e)
{
bool IsAdded = false;
string FirstName = txtFirstName.Text.Trim();
int CL = Convert.ToInt32(txtCL.Text);
string LastName = txtLastName.Text;
using (SqlConnection sqlCon = new SqlConnection(conn))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "INSERT INTO tblClock ([FirstName],[CL],[LastName]) VALUES (@FirstName, @CL, @LastName) WHERE @CL NOT IN (SELECT CL FROM tblClock)";
cmd.Parameters.AddWithValue("@FirstName", FirstName);
cmd.Parameters.AddWithValue("@CL", CL);
cmd.Parameters.AddWithValue("@LastName", LastName);
cmd.Connection = sqlCon;
sqlCon.Open();
IsAdded = cmd.ExecuteNonQuery() > 0;
sqlCon.Close();
}
}
if (IsAdded)
{
lblMsg.Text = "'" + FirstName + " " + LastName + "' has been successfully added!";
lblMsg.ForeColor = System.Drawing.Color.Green;
BindSubjectData();
}
else
{
lblMsg.Text = "Error while adding '" + FirstName + " " + LastName + "' subject details";
lblMsg.ForeColor = System.Drawing.Color.Red;
}
ResetAll();//to reset all form controls
}
有什么想法吗?
【问题讨论】: