当前位置:编程学习 > C#/ASP.NET >>

Update 语句更新不到数据库,用vb 2008 开发,数据库用sql2000,

用vb 2008 开发,数据库用sql2000


开发的软件写入数据库时,都是用Insert Into 和Update这两个语句
用以下代码来执行

Dim SqlConnection1 As New System.Data.SqlClient.SqlConnection
Dim SqlCommand1 As New System.Data.SqlClient.SqlCommand

   
SqlConnection1.ConnectionString = strConnectionSQLString
SqlConnection1.Open()
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandText = "Insert Into table1.........."  或 "Update Table1 Set .........Where ...."
SqlCommand1.ExecuteNonQuery()
 

SqlCommand1.Dispose()
SqlConnection1.Close()
SqlConnection1.Dispose()



软件从2008年使用到今2010年,发现有这个情况,用Update Table1,就经常更新不到数据库,但又没提示出错,本机使用还少出现,但网络上的机使用就经常有这个情况。但使用Insert Into 插入表的,从来没发现过问题。

请指教,谢 谢 --------------------编程问答-------------------- 是你的UPDATE语句加了条件,根本没有符合条件的UPDATE内容 --------------------编程问答-------------------- 楼上的对,where条件的问题。
可以加返回值:
dim rt as integer=SqlCommand1.ExecuteNonQuery()
判断rt>0则有更新,rt=0则无更新。 --------------------编程问答-------------------- 几乎不大可能,怎么会 --------------------编程问答-------------------- 有where句子,我自己测试过,我把软件执行更新时的语句都存下来,当发现软件没更新到数据时,就复制这条语句直接在sql上执行,但又可以更新到,真的不知道是什么原因。 --------------------编程问答-------------------- 没有遇到过这个问题,呵呵 --------------------编程问答--------------------
引用 4 楼 communityboom 的回复:
有where句子,我自己测试过,我把软件执行更新时的语句都存下来,当发现软件没更新到数据时,就复制这条语句直接在sql上执行,但又可以更新到,真的不知道是什么原因。


使用 1楼和2楼的方法,更保险。
因为你在vs上写的T-SQL语句,有可能和在SQL在T-SQL语句上不一样的(字符问题)。 --------------------编程问答-------------------- SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text  =》加上这句试试 --------------------编程问答-------------------- 很可能没有找到你where条件所过滤的数据,更新数据为0条。。建议你先把sql语句拿出来在sqlServer上先执行看看。。 --------------------编程问答-------------------- 根据函数返回值来判断是否更新是个好办法, --------------------编程问答-------------------- 基本上可以肯定是where从句中没有发现符合条件的数据,然后就不更新同时也不报错。
你应该仔细检查一下你的语句。 --------------------编程问答-------------------- 更新不到,不是where 問題
是你的資料表定義欄位有問題 , 有太多重複筆數所造成無法update 
檢查一是 pk 和 index 的關係 是否pk 是唯一!? --------------------编程问答-------------------- 对,我也同意是条件不满足的原因 --------------------编程问答-------------------- update tablename set 字段 = values
where 字段 = values
出错了,没见过 。
那你有没调试啊!看看原因啊
--------------------编程问答-------------------- 我也是肯定了语句无问题,没有办法的情况下才上来问的。只是偶然更新不到,但我把语句放在sql上执行又可以。 --------------------编程问答--------------------
引用 2 楼 zdbb 的回复:
楼上的对,where条件的问题。
可以加返回值:
dim rt as integer=SqlCommand1.ExecuteNonQuery()
判断rt>0则有更新,rt=0则无更新。


楼主你应该加上判断返回执行Sql语句所影响的行数,有时是0,似乎还有为-1的,

所以通常应该判断>0才是更新成功了,否则就是失败了。。。。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,