用ExecuteNonQuery执行更新成功,但数据库里的值没变。。。

publicintUpdateDB(stringsqltxt){sc=getConn();sc.Open();try{SqlCommandscd=newSqlComman... public int UpdateDB(string sqltxt)
{
sc = getConn();
sc.Open();
try
{
SqlCommand scd = new SqlCommand(sqltxt, sc);
if (scd.ExecuteNonQuery()!=-1)
return 1;
else
return 0;
}
finally
{
sc.Close();
}
}
sc连接没错,insert和delete都成功,更新也成功(返回值!=-1),但数据库里的值没变。。。
另外,sql语句没错,在sqlserver2000中成功执行了
用断点可以看到
sqltxt的值为"update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid='32'"
没错,但不知道为什么数据库没更新,
我的userid是int(自增)的,听了大家的意见改了sql语句,用断点看到语句为
"update userinfo set username='yy', pwd='123', sex='male', email='jkl' where userid=16"
但是还是没有成功~~~为什么?另外,在sql的查询分析器中即使那个int类型的加上单引号也是可以的,害我以为sql语句没错。。。
一楼的兄弟,我去掉了try,vs也没有报错,但是数据库根本没更新。。。。
----------------------------------------------------------------------------------------
感谢各位的回答,但是问题还是没解决,我没有两个同名的数据库,而且userid是确实存在的,啊啊啊!真头疼,究竟是什么问题?想不通
展开
 我来答
反方向2019
2008-12-08 · TA获得超过129个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:177万
展开全部
sqltxt的值为"update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid='32'"

看样子是你的 sqltxt 写错了 执行是成功了但是没有找到 userid='32'的
所以程序没错 但没结果
一般这个ID是 自增的话 应该这样写
update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid=32"

你写SQL 语句的时候如果 ID 是变量就这样拼 "update XXX set xxx=xxx where id ="+userid

晕自增的就不能是 varchr 了 你像这样写就行了
"update XXX set xxx=xxx where id ="+userid (注意加的位置)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
88421220
2008-12-08 · TA获得超过125个赞
知道答主
回答量:150
采纳率:0%
帮助的人:0
展开全部
string strTxt = "update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid='32'"这个SQL语句写错了,
userId是int类型的,就不需要使用单引号了~~ ,如果是字符串的就需要使用单引号;
你可以这样写:
string strTxt = "update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid=32";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
遇稻淡间索1J
2008-12-08 · TA获得超过359个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:302万
展开全部
没有报错就是条件没找到,where userid=16" 没有这个
仔细看看这个值对不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sq_zhuyi
2008-12-08 · TA获得超过680个赞
知道小有建树答主
回答量:1127
采纳率:0%
帮助的人:1009万
展开全部
首先应该是 userid=32,没有引号
其次,如果userid为32的记录不存在,ExecuteNonQuery()返回的就是0,并不是-1
你是否有两个数据库,而更新的是另一个数据库?userid是否确实存在?更新前后内容是否确实不一样?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c53a071
2008-12-08 · TA获得超过697个赞
知道小有建树答主
回答量:2622
采纳率:0%
帮助的人:941万
展开全部
userid='32'
你的userid是Varchar的?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式