看板 C_Sharp 關於我們 聯絡資訊
我有一個網頁 有一個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
pico2k:檢查有沒有exception吧... 07/27 18:24
ssccg:你的意思是 operation.UpdateFactoryData(Session... 這行不 07/27 18:51
ssccg:行,operation.UpdateFactoryData("6"... 這行可以? 07/27 18:51
ssccg:那就是要trace看看在執行那行時那幾個參數值是什麼吧 07/27 18:52
supercygnus:都沒有exception 但是用參數帶可以跑完 07/27 22:49
supercygnus:但是資料庫資料不會更新 07/27 22:49
supercygnus:用常數代也可以跑完,且資料庫資料有更新 07/27 22:49
qwer820404:合理懷疑是 SQL...那邊的問題 條件式? 07/28 01:35
qwer820404:你下中斷點確定一下 那些參數有沒有確定寫值出來 07/28 01:36
qwer820404:再追一下你放sql語法的stringbulider 出來的字串是不是 07/28 01:37
qwer820404:對的 然後再去看sqlcommand那邊的sql部份也有沒有正確 07/28 01:37
qwer820404:這樣一層一層追 07/28 01:37
supercygnus:SQL我在我的SQL SERVER上面直接執行沒有問題-.- 07/28 09:45
supercygnus:啊不是說了,我直接帶常數進去他是可以跑得 07/28 09:54
qwer820404:那用程式串接出來的你有確認過沒問題嗎 07/28 10:03
qwer820404:因為有可能在條件式的參數沒有帶到 然後可以跑 07/28 10:04
qwer820404:但更新不到資料 07/28 10:04
qwer820404:在WebForm很容易發生說 值被洗掉這件事情 07/28 10:15
pico2k:不要用AddWithValue,改用parameter.add(),指定參數型態 07/28 15:01
qwer820404:update table set column1=XXX, column2=XXX 07/28 15:14
qwer820404:column2前面 好像要有一個半形空白 (不知有沒有影響) 07/28 15:15
supercygnus:這些變數Session["sesOrgID"].ToString(), 07/28 20:01
supercygnus:HiddenField1.Value,DropDownList1.SelectedValue,Tex 07/28 20:01
supercygnus:我都有用response.write()去印出來 07/28 20:01
supercygnus:確定都是OK沒有問題的,確定有值 07/28 20:02
supercygnus:但是帶進去sql查詢的method就出問題,資料庫不會更新 07/28 20:02
supercygnus:也沒有拋出例外,可以順利執行完 07/28 20:03
supercygnus:找到問題了,結論就是我沒有寫if(!ispostBack) 07/28 21:33
supercygnus:所以我一按按鈕他把資料庫的舊值拉出來寫入 07/28 21:34
supercygnus:我新的資料怎麼改都沒用 07/28 21:34
qwer820404:所以結論是…值被洗掉了 07/28 22:35
supercygnus:值沒有被洗掉,按鈕一submit,就會把舊值從資料庫讀出 07/28 23:17
supercygnus:放在textbox上,然後再把textbox上的值寫入資料庫 07/28 23:18
supercygnus:等於我更新的textbox上的文字沒有被寫入資料庫 07/28 23:18
supercygnus:sql method本身是沒有問題的,問題出在抓錯值寫入DB 07/28 23:19
ssccg:所以一開始就說要確認執行那行的時候代入的值到底是什麼了.. 07/28 23:44
ssccg:用debug模式在那行中斷一看就知道了 07/28 23:45