2016-06-01 41 views
2

我想知道我在代码中丢失了什么。我想要发生的一切是从,从CreditRequest表中获取特定值,并将其放入UserData表中,creditrequest列。不知何故,我的代码没有执行任务。更新SQL语句不会触发数据库

这里是我的代码:

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 [email protected]", scn); 

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

    cmd.ExecuteNonQuery(); 
} 
+0

为什么你有两个陈述。尝试删除下一个'SELECT',然后使用'ExecuteNonQuery'来代替。 –

+0

尝试删除第二条语句(忘记删除它)并将其更改为executenonquery。仍然不工作@FelixPamittan –

+0

fyi,我在我的其他按钮中有相同的代码,并且工作得很好。不知道为什么这一个不工作 –

回答

0

让我们看看一行行的代码。

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 [email protected]", 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 [email protected]", scn); 
    cmd.Parameters.Add("@Username", SqlDbType.NVarChar).Value = (string)Session["New"]; //This is good 

    cmd.ExecuteNonQuery(); 
} 
+0

非常感谢! :) –