C# Update SQL语句未触发到数据库

C# Update SQL语句未触发到数据库,c#,asp.net,sql-server,sql-update,C#,Asp.net,Sql Server,Sql Update,我想知道我的代码中遗漏了什么。我只想从creditrequest表中获取一个特定值,creditrequest,并将其放入UserData表的creditrequest列中。不知何故,我的代码没有执行任务 这是我的密码: using (SqlConnection scn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True")) { scn.

我想知道我的代码中遗漏了什么。我只想从
creditrequest
表中获取一个特定值,
creditrequest
,并将其放入
UserData
表的
creditrequest
列中。不知何故,我的代码没有执行任务

这是我的密码:

using (SqlConnection scn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True"))
{
    scn.Open();

    SqlCommand cmd = new SqlCommand(@"UPDATE UserData SET CreditRequest = 
    (SELECT CAST(REPLACE(c.CreditRequest, ',', '') as int) 
    FROM CreditRequests c Where c.Username=@Username", scn);

    cmd.Parameters.Add("@Username", SqlDbType.NVarChar).Value = Session["New"];

    cmd.ExecuteNonQuery();
}

让我们逐行查看代码

using (SqlConnection scn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True"))
//I hope this is correct. Else "Server=PAOLO;Database=ShoppingCartDB;Integrated Security=True"
{
    scn.Open();
/*
    SqlCommand cmd = new SqlCommand(@"UPDATE UserData SET CreditRequest = 
    (SELECT CAST(REPLACE(c.CreditRequest, ',', '') as int) 
    FROM CreditRequests c Where c.Username=@Username", scn);
*/
    //SQL statement is all wrong and can update all rows
    //Correct is
    SqlCommand cmd = new SqlCommand(@"UPDATE UserData SET CreditRequest = "
        + "CAST(REPLACE(c.CreditRequest, ',', '') as int) "
        + " FROM CreditRequests c inner join UserData u "
        + "on c.Username=u.Username Where c.Username=@Username", scn);
    cmd.Parameters.Add("@Username", SqlDbType.NVarChar).Value = (string)Session["New"]; //This is good

    cmd.ExecuteNonQuery();
}

为什么你有两种说法。请尝试删除下一条
选择
,然后改用
ExecuteOnQuery
。尝试删除第二条语句(忘记删除),并将其更改为ExecuteOnQuery。@FelixPamittanfyi仍然不起作用,我的另一个按钮中有相同的代码,工作非常好。不知道为什么这个不起作用,参数的结构就是这样。Cmd.paramaters.add(新的sqlparamater(@Username),传递的值));正如@felix提到的,使用cmd.executenonquery,因为不会返回任何结果。谢谢@Shon。已使用ExecuteOnQuery,但仍然没有给出结果。