作者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