【问题标题】:SQL WHERE clause error in ASP.netASP.net 中的 SQL WHERE 子句错误
【发布时间】: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
    }

有什么想法吗?

【问题讨论】:

标签: c# sql asp.net


【解决方案1】:

试试这个方法

INSERT INTO tblClock
            ([FirstName],[CL],[LastName])
SELECT @FirstName,
       @CL,
       @LastName
WHERE  NOT EXISTS (SELECT 1
                   FROM   tblClock
                   WHERE  CL = @CL) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2014-02-08
    • 2017-12-22
    • 2022-12-02
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多