新手求教C# 更新access 数据库的问题

u010671827 2013-11-07 12:37:59
窗体是这样的



单击按钮代码
private void button1_Click(object sender, EventArgs e)
{
DBHelper helper = new DBHelper();
String sql1 = string.Format("select * from employee_log where [员工账号]={0} and [员工密码]={1}",all.all_emid.Trim(),textBox1.Text.Trim());
//String sql2 = string.Format("update [employee_log] set [员工密码]={0} where [员工账号]={1}",textBox1.Text.Trim(),all.all_emid.Trim());
String sql2 = "update employee_log set [员工密码]=" + textBox1.Text + " where [员工账号]=" + all.all_emid + "";
if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "")
{
MessageBox.Show("密码不能为空!");
}
else if (textBox2.Text.Trim() != textBox3.Text.Trim())
{
MessageBox.Show("密码不一致,请核对.");
}
else if (helper.setS(sql1))
{
if (helper.setDS(sql2))
{
MessageBox.Show("修改成功");
}
}
else MessageBox.Show("不存在此密码.");

}
DBHelper 是个连接数据库的类
public class DBHelper
{
private OleDbConnection conn;
private OleDbDataAdapter oda = new OleDbDataAdapter();
private OleDbCommand cmd;
private DataSet myds = new DataSet();
public DBHelper()
{

conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\\visual studio 2010\\Projects\\hotel_management\\hotel_management\\bin\\Debug\\Database1.accdb");
}
public DataSet getDS(string strSQL)//获得数据;
{
conn.Open();
myds = new DataSet();
oda = new OleDbDataAdapter(strSQL, conn);
oda.Fill(myds);
return myds;
}

public DataSet getDS2(string strSQL, int si, int mi)
{
conn.Open();
myds = new DataSet();
oda = new OleDbDataAdapter(strSQL, conn);
oda.Fill(myds, si, mi, "tab1");
conn.Close();
return myds;

}

public bool setDS(string strSQL)//非查询操作;
{
conn.Open();
cmd = new OleDbCommand(strSQL, conn);
cmd.ExecuteNonQuery();
conn.Close();
return true;
}
public bool setS(string strSQL)
{
conn.Open();
cmd = new OleDbCommand(strSQL, conn);
if (cmd.ExecuteReader().HasRows)
{
conn.Close();
return true;
}
else
{
conn.Close();
return false;
}
}


}
然后呢 all.all_emid 是上个窗体登陆时候记录员工账号字段的;

能运行成功,但是就是运行结束后到access 中去查看数据的时候密码没有改变;
我想问问,是我代码什么逻辑问题吗? 我查了好多但是都没发现。想问问,能帮帮我吗,我是新手请帮助下我,谢谢。
...全文
195 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-11-07
  • 打赏
  • 举报
回复
String sql2 = "update employee_log set [员工密码]='" + textBox1.Text + "' where [员工账号]="' + all.all_emid + "'";
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 13 楼 u010671827 的回复:
[quote=引用 11 楼 happy09li 的回复:] [quote=引用 10 楼 u010671827 的回复:] 我的账号密码字段是数字的,所以你说的那个单引号是没什么实质改变的 我弄成文本字段的时候您的建议也能运行成功 但是还是那个问题 成功了 但是access 文件里面的内容还是没有改变,
all.all_emid 这个是哪里来的,或许数据库中压根儿就没有这个ID[/quote] 这个是个静态的变量,是用来记录哪个员工登陆的系统,好修改当前登录的人的密码,这是个变量,我断点设置的时候看了它的值是当前登录的人的账号; 这个应该没问题吧; [/quote] 对不起 我太粗心了 我知道了 对不起
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 11 楼 happy09li 的回复:
[quote=引用 10 楼 u010671827 的回复:] 我的账号密码字段是数字的,所以你说的那个单引号是没什么实质改变的 我弄成文本字段的时候您的建议也能运行成功 但是还是那个问题 成功了 但是access 文件里面的内容还是没有改变,
all.all_emid 这个是哪里来的,或许数据库中压根儿就没有这个ID[/quote] 这个是个静态的变量,是用来记录哪个员工登陆的系统,好修改当前登录的人的密码,这是个变量,我断点设置的时候看了它的值是当前登录的人的账号; 这个应该没问题吧;
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 9 楼 u011130289 的回复:
把你返回的值转化成int然后判断下,它>0就更新成功弹出个提示框,看提示框有没有弹出来
照您的想法 我改成了 这样 然后能弹出来 说明成功了嘛; 但是我到access 中查看 还是没有改变难道是access 有什么问题吗。 但是插入数据都可以成功的;
熙风 2013-11-07
  • 打赏
  • 举报
回复
引用 10 楼 u010671827 的回复:
我的账号密码字段是数字的,所以你说的那个单引号是没什么实质改变的 我弄成文本字段的时候您的建议也能运行成功 但是还是那个问题 成功了 但是access 文件里面的内容还是没有改变,
all.all_emid 这个是哪里来的,或许数据库中压根儿就没有这个ID
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
String sql2 = "update employee_log set [员工密码]='" + textBox1.Text + "' where [员工账号]="' + all.all_emid + "'";
我的账号密码字段是数字的,所以你说的那个单引号是没什么实质改变的 我弄成文本字段的时候您的建议也能运行成功 但是还是那个问题 成功了 但是access 文件里面的内容还是没有改变,
Regan-lin 2013-11-07
  • 打赏
  • 举报
回复
把你返回的值转化成int然后判断下,它>0就更新成功弹出个提示框,看提示框有没有弹出来
熙风 2013-11-07
  • 打赏
  • 举报
回复
引用 7 楼 u010671827 的回复:
[quote=引用 3 楼 happy09li 的回复:] 打断点,把你的sql复制出来执行就知道了
那个sql 语句貌似没问题的 能执行成功 然后断电 也设在这里 String sql2 = "update employee_log set [员工密码]=" + textBox1.Text + " where [员工账号]=" + all.all_emid + ""; 然后执行到DBHelper类中的cmd.ExecutNonQuery();返回值为1,然后就执行完成了运行到最后了 “修改成功” 我再去看access 表格的时候 还是没有改变~ 就是这个情况 [/quote] 你把那sql直接再access里面执行
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 3 楼 happy09li 的回复:
打断点,把你的sql复制出来执行就知道了
那个sql 语句貌似没问题的 能执行成功 然后断电 也设在这里 String sql2 = "update employee_log set [员工密码]=" + textBox1.Text + " where [员工账号]=" + all.all_emid + ""; 然后执行到DBHelper类中的cmd.ExecutNonQuery();返回值为1,然后就执行完成了运行到最后了 “修改成功” 我再去看access 表格的时候 还是没有改变~ 就是这个情况
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 4 楼 u011130289 的回复:
断点,把你错误卡在哪里截图上来,别一上来就贴上一堆代码,拿重要的出来
我断点弄了 成功执行了cmd.ExecutNonQuery(); 而且监视它的值为1; 但是就是执行完成后 再回到access 文件的时候没有改变 还是原来的密码 刷新了还是没有用
u010671827 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
String sql2 = "update employee_log set [员工密码]='" + textBox1.Text + "' where [员工账号]="' + all.all_emid + "'";
版主还是不对啊~ 我试过 但是这样改了之后会显示报错的
Regan-lin 2013-11-07
  • 打赏
  • 举报
回复
断点,把你错误卡在哪里截图上来,别一上来就贴上一堆代码,拿重要的出来
熙风 2013-11-07
  • 打赏
  • 举报
回复
打断点,把你的sql复制出来执行就知道了
junlinfushi 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
String sql2 = "update employee_log set [员工密码]='" + textBox1.Text + "' where [员工账号]="' + all.all_emid + "'";
textBox.Text改为 textBox1.Text.Trim()比较好

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧