作者supercygnus (......)
看板C_Sharp
標題[問題] C# .net網頁寫資料進資料庫問題
時間Sat Jul 27 17:47:14 2013
我有一個網頁
有一個gridview,有一個欄位是維護
用這個欄位的factoryid與session裡的orgid
代出另一個更新工廠資料的網頁
這個網頁編輯完之後始終沒有辦法寫進資料庫中
奇怪的是我用另外一種方法:參數直接帶值進去呼叫就可以寫進資料庫如下
operation.UpdateFactoryData(Session["sesOrgID"].ToString(),
HiddenField1.Value,DropDownList1.SelectedValue,TextBox1.Text);
operation.UpdateFactoryData("6","6","A","ABC-MART");
順便附上update method
public bool UpdateFactoryData(String orgid,String factoryid,String
itemid,String name)
{
SqlCommand command;
StringBuilder sb = new StringBuilder();
SqlConnection sqlconn = DBconnection.getConnection();
sb.Append("update Factory ");
sb.Append("set EXPENSEITEMBASICNO=@itemid,FACTORYNAME=@name ");
sb.Append("where ORGID= @orgid and FACTORYID= @factoryid");
command = new SqlCommand(sb.ToString(), sqlconn);
int orgint = Convert.ToInt32(orgid);
int facint = Convert.ToInt32(factoryid);
command.Parameters.AddWithValue("@orgid", orgid);
command.Parameters.AddWithValue("@factoryid", factoryid);
command.Parameters.AddWithValue("@itemid", itemid);
command.Parameters.AddWithValue("@name", name);
command.ExecuteNonQuery();
return true;
}
真的不知道哪裏出問題,請各位看看
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.246.201.23
1F:→ pico2k:檢查有沒有exception吧... 07/27 18:24
2F:→ ssccg:你的意思是 operation.UpdateFactoryData(Session... 這行不 07/27 18:51
3F:→ ssccg:行,operation.UpdateFactoryData("6"... 這行可以? 07/27 18:51
4F:→ ssccg:那就是要trace看看在執行那行時那幾個參數值是什麼吧 07/27 18:52
5F:→ supercygnus:都沒有exception 但是用參數帶可以跑完 07/27 22:49
6F:→ supercygnus:但是資料庫資料不會更新 07/27 22:49
7F:→ supercygnus:用常數代也可以跑完,且資料庫資料有更新 07/27 22:49
8F:推 qwer820404:合理懷疑是 SQL...那邊的問題 條件式? 07/28 01:35
9F:→ qwer820404:你下中斷點確定一下 那些參數有沒有確定寫值出來 07/28 01:36
10F:→ qwer820404:再追一下你放sql語法的stringbulider 出來的字串是不是 07/28 01:37
11F:→ qwer820404:對的 然後再去看sqlcommand那邊的sql部份也有沒有正確 07/28 01:37
12F:→ qwer820404:這樣一層一層追 07/28 01:37
13F:→ supercygnus:SQL我在我的SQL SERVER上面直接執行沒有問題-.- 07/28 09:45
14F:→ supercygnus:啊不是說了,我直接帶常數進去他是可以跑得 07/28 09:54
15F:推 qwer820404:那用程式串接出來的你有確認過沒問題嗎 07/28 10:03
16F:→ qwer820404:因為有可能在條件式的參數沒有帶到 然後可以跑 07/28 10:04
17F:→ qwer820404:但更新不到資料 07/28 10:04
18F:推 qwer820404:在WebForm很容易發生說 值被洗掉這件事情 07/28 10:15
19F:→ pico2k:不要用AddWithValue,改用parameter.add(),指定參數型態 07/28 15:01
20F:推 qwer820404:update table set column1=XXX, column2=XXX 07/28 15:14
21F:→ qwer820404:column2前面 好像要有一個半形空白 (不知有沒有影響) 07/28 15:15
22F:→ supercygnus:這些變數Session["sesOrgID"].ToString(), 07/28 20:01
23F:→ supercygnus:HiddenField1.Value,DropDownList1.SelectedValue,Tex 07/28 20:01
24F:→ supercygnus:我都有用response.write()去印出來 07/28 20:01
25F:→ supercygnus:確定都是OK沒有問題的,確定有值 07/28 20:02
26F:→ supercygnus:但是帶進去sql查詢的method就出問題,資料庫不會更新 07/28 20:02
27F:→ supercygnus:也沒有拋出例外,可以順利執行完 07/28 20:03
28F:→ supercygnus:找到問題了,結論就是我沒有寫if(!ispostBack) 07/28 21:33
29F:→ supercygnus:所以我一按按鈕他把資料庫的舊值拉出來寫入 07/28 21:34
30F:→ supercygnus:我新的資料怎麼改都沒用 07/28 21:34
31F:推 qwer820404:所以結論是…值被洗掉了 07/28 22:35
32F:→ supercygnus:值沒有被洗掉,按鈕一submit,就會把舊值從資料庫讀出 07/28 23:17
33F:→ supercygnus:放在textbox上,然後再把textbox上的值寫入資料庫 07/28 23:18
34F:→ supercygnus:等於我更新的textbox上的文字沒有被寫入資料庫 07/28 23:18
35F:→ supercygnus:sql method本身是沒有問題的,問題出在抓錯值寫入DB 07/28 23:19
36F:→ ssccg:所以一開始就說要確認執行那行的時候代入的值到底是什麼了.. 07/28 23:44
37F:→ ssccg:用debug模式在那行中斷一看就知道了 07/28 23:45