c#数据库用update方法内存中改了,但数据库却没变

using(SqlConnectionconn=newSqlConnection(connectionString)){stringsql="updateMyTable5... using (SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "update MyTable5 set 密码=@Password where 用户名=@UserName";
SqlCommand cmd = new SqlCommand(sql, conn);

try
{
conn.Open();
cmd.Parameters.Add("@UserName", SqlDbType.NChar).Value = xinxi.UserName;
cmd.Parameters.Add("@Password", SqlDbType.NChar).Value = textBox2.Text;
cmd.ExecuteNonQuery();
MessageBox.Show("修改成功!");
conn.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}

这是我写的一段代码,目的是将mytable5中的密码改为textbox2中的内容,执行之后查看数据库,发现没有变化,求解为什么以及解决方法
展开
 我来答
ireray5
2012-12-15 · TA获得超过396个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:363万
展开全部
cmd.Parameters.Add("@UserName", SqlDbType.NChar).Value = xinxi.UserName;
cmd.Parameters.Add("@Password", SqlDbType.NChar).Value = textBox2.Text;

这两行中是不是未指定字符长度,默认可能是0。
请修改试试。

你还可以取得
cmd.ExecuteNonQuery();
的返回值,判断是不更新成功。
更多追问追答
追问
我试用了你的方法
cmd.ExecuteNonQuery()的返回值为1,修改成功,但数据库还是没变
追答
再看了一下,可能你定义参数的代码要修改一下。
cmd.Parameters.Add(New SqlClient.SqlParameter("@UserName", SqlDbType.NChar, 20));
cmd.Parameters("@UserName").Value = xinxi.UserName;
cmd.Parameters.Add(New SqlClient.SqlParameter("@Password", SqlDbType.NChar, 20));
cmd.Parameters("@Password").Value = textBox2.Text;

其中,20是字段在数据库中定义的长度,如果不是20,请修改成字段实际定义长度。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式