【问题标题】:System.Data.SqlClient.SqlException: 'Incorrect syntax near ')'.' Any Advice?System.Data.SqlClient.SqlException:'')' 附近的语法不正确。'有什么建议吗?
【发布时间】:2021-06-30 06:13:47
【问题描述】:

这是我的第一篇文章,这个问题确实持续存在,我的代码遇到了这个问题,当我尝试点击“发布评论”按钮时它会中断。

public partial class add_review : System.Web.UI.Page
{
    protected void btnSub_Click(object sender, EventArgs e)
    {
        String myConStr = System.Configuration.ConfigurationManager.ConnectionStrings["myDBCon"].ConnectionString;

        using (SqlConnection myCon = new SqlConnection(myConStr))
        {
            string mySQL = "INSERT INTO Reviews (rTitle, rDate";

            mySQL += "rAuthor, rStar, rFull,) ";
            mySQL += "VALUES (@rTitle, @rDate, @rAuthor, rStar ";
            mySQL += "  @rFull, GETDATE())  ";

            using (SqlCommand myCom = new SqlCommand(mySQL,myCon))
            {
                myCom.Parameters.AddWithValue("@rTitle", txtTitle.Text);
                myCom.Parameters.AddWithValue("@rDate", txtDate.Text);
                myCom.Parameters.AddWithValue("@rAuthor", txtAuthor.Text);
                myCom.Parameters.AddWithValue("@rStar", txtStar.Text);
                myCom.Parameters.AddWithValue("@rFull", txtFull.Text);

                myCon.Open();
                myCom.ExecuteNonQuery();
            }
        }

        pnlForm.Visible = false;
        pnlThanks.Visible = true;
        String myOut = "<p>Thank you for your submission; remember to double check your grammar!</p>";
        myOut += "<h2>" + txtTitle.Text + "</h2>";
        myOut += "<span class='rDate'>" + txtDate.Text + "</span> by <strong>";
        myOut += txtAuthor.Text + "</strong><br/>";
        myOut += txtFull.Text + "</div>";

        lblOut.Text = myOut;
    }
}

我试图准确地确定它是什么,但我找不到任何东西,我想知道是否有一些简单的东西我正在寻找?非常感谢。

【问题讨论】:

  • 我已经更新了我的代码,非常感谢你们所有的帮助,这是我在 GETDATE() 中的混合,缺少 @rStar ,我还将 INSERT 语句压缩为: ``` 字符串 mySQL = "插入评论 (rTitle, rDate, rAuthor, rStar, rFull)"; mySQL += "值 (@rTitle, @rDate, @rAuthor, rStar, @rFull)"; ```
  • string mySQL = "插入评论 (rTitle, rDate, rAuthor, rStar, rFull)"; mySQL +=“值(@rTitle,@rDate,@rAuthor,@rStar,@rFull)”; using (SqlCommand myCom = new SqlCommand(mySQL,myCon)) -------------- 这是最终工作的最终产品
  • prnt.sc/113ejax 这是一个链接,可以看到有效的方法
  • 不要使用addwithvalue

标签: sql-server visual-studio asp.net-core


【解决方案1】:
string mySQL = "INSERT INTO Reviews (rTitle, rDate";
mySQL += "rAuthor, rStar, rFull,) ";
mySQL += "VALUES (@rTitle, @rDate, @rAuthor, rStar ";
mySQL += "  @rFull, GETDATE())  ";

试试

string mySQL = "INSERT INTO Reviews (rTitle, rDate, rAuthor, rStar, rFull) ";
mySQL += "VALUES (@rTitle, @rDate, @rAuthor, @rStar, @rFull) ";

【讨论】:

  • 谢谢你,但我仍然得到一个错误,它突出显示 myCom.ExecuteNonQuery(); prnt.sc/113e6b8
  • 您是否将 6 个值传递给 5 个字段?并且 rStar 的值应该是 @rStar?
  • 看起来有多个问题,已在上面进行了编辑。您要么错误地拥有getdate(),要么在插入列表中缺少一列。
【解决方案2】:

美好的一天, 我注意到你这样声明命令字符串:

string mySQL = "INSERT INTO Reviews (rTitle, rDate";

您需要在 rDate 之后或在 rAuthor 之前的字符串完成之前放置一个 , 。 因此,要么将声明行更改为string mySQL = "INSERT INTO Reviews (rTitle, rDate,"; 或者完成语句行来

mySQL += ", rAuthor, rStar, rFull,) ";

另外你需要改变这一行

mySQL += "VALUES (@rTitle, @rDate, @rAuthor, rStar ";

mySQL += "VALUES (@rTitle, @rDate, @rAuthor, @rStar, ";

【讨论】:

  • 谢谢,但还是不行,prnt.sc/113e9w2
  • 如果更新解决了问题,请告诉我
  • 确实如此,这些答案的组合很有帮助,非常感谢大家!
【解决方案3】:

像这样在 C# 中嵌入静态 SQL:

            string mySQL = @"
INSERT INTO Reviews (rTitle,  rDate,  rAuthor,  rStar,  rFull) 
             VALUES (@rTitle, @rDate, @rAuthor, @rStar, @rFull);
";

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2019-07-17
    • 2017-12-08
    • 2014-05-09
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多