2011-05-17 63 views
0

我是个新手,可能是因为自从昨天早上起床,但在这个插入语句中找不到我的错误。我的处理程序要求我不要为这个培训项目进行参数化(它不会被部署),所以不要担心注入漏洞。无论如何,查询的权利,数据类型是正确的,并且表和字段名拼写正确。我在这里错过了什么?有没有更好的方法来找到它,而不是只是盯着屏幕,直到它来到你?靠近WHERE的SQL语法?

protected void BtnSubmit_Click(object sender, EventArgs e) 
{ 
    string x = Request.QueryString["SubId"]; 
    string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; 
    string comQuery = "INSERT INTO Submission (Status, StatusComment, StatusValue) VALUES ('" + "decline" + "', '" + TbComments.Text + "', 2) WHERE SubmissionId =" + x; 
    using (SqlConnection sqlConn = new SqlConnection(connectionString)) 
    { 
     sqlConn.Open(); 
     using (SqlCommand comCmd = new SqlCommand(comQuery, sqlConn)) 
     { 
      comCmd.ExecuteNonQuery(); 
     } 
    } 
} 

回答

11

INSERT不能有WHERE子句。没有意义,有一个,你把数据,而不是缩小它。

如果您正在尝试更改已有数据,那是UPDATE,而不是INSERT。这里有一个例子:

"UPDATE Submission 
SET Status='decline', StatusComment='" + TbComments.Text + "', StatusValue = 2 
WHERE SubmissionId = " + x 
0

您需要使用UPDATE,无法插入 插入插入新行,因此WHERE是没有意义的

0

所以你的SQL语句是: "INSERT INTO Submission (Status, StatusComment, StatusValue) VALUES (blah) WHERE SubmissionId =" + x;

的问题肯定是WHEREWHERE对于INSERT - See the MSDN documentation for the Insert command无效。由于您按照SubmissionId进行筛选,因此您可能需要改为执行UPDATE

至于找到问题的更好方法,学习使用MSDN文档是一个很好的步骤。快速谷歌搜索“msdn t-sql插入”将给你我在此答案前面链接到的页面。文档,经验,谷歌和堆栈溢出。这就是你如何找到解决方案:)

0

插入查询中不允许Where子句。形成你的代码我猜你需要使用更新查询。

+0

实际上,它是 – gbn 2011-05-17 14:42:04

3

这是不正确的INSERT语法。正确插入语法是:

INSERT INTO tableName (columnList) VALUES (valueList) 

columnList值列表必须有项目和值的相同数量的类型必须是按列预期。

INSERT INTO tableName (columnList) 
SELECT columnList2 
FROM tableName2 
WHERE conditionsFromTable2 

columnListcolumnList2必须有相同类型的项目相同的计数。您可以使用任何复杂的select连接到多个表,并将条件应用于这些表中的数据。

0

您正在尝试从TbComments中插入提交数据。所以你需要从TbComments中选择数据,然后INSERT INTO提交

string comQuery = 
"INSERT INTO Submission (
    Status, 
    StatusComment, 
    StatusValue) 
SELECT 
    'decline', 
    TbComments.Text, 
    2) 
FROM TbComments 
WHERE SubmissionId =" + x; 
相关问题