用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是确实存在的,啊啊啊!真头疼,究竟是什么问题?想不通 展开
{
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是确实存在的,啊啊啊!真头疼,究竟是什么问题?想不通 展开
6个回答
展开全部
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 (注意加的位置)
看样子是你的 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 (注意加的位置)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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";
userId是int类型的,就不需要使用单引号了~~ ,如果是字符串的就需要使用单引号;
你可以这样写:
string strTxt = "update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid=32";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有报错就是条件没找到,where userid=16" 没有这个
仔细看看这个值对不对
仔细看看这个值对不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先应该是 userid=32,没有引号
其次,如果userid为32的记录不存在,ExecuteNonQuery()返回的就是0,并不是-1
你是否有两个数据库,而更新的是另一个数据库?userid是否确实存在?更新前后内容是否确实不一样?
其次,如果userid为32的记录不存在,ExecuteNonQuery()返回的就是0,并不是-1
你是否有两个数据库,而更新的是另一个数据库?userid是否确实存在?更新前后内容是否确实不一样?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
userid='32'
你的userid是Varchar的?
你的userid是Varchar的?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询