关于C#廉洁ACCESS数据库后 使用UPDATE更新数据库报错的问题!

艾比利夫 2013-04-16 10:49:45
代码如下
private void button1_Click(object sender, EventArgs e)
{
string number = textBox1.Text;
string password = textBox2.Text;
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source =图书馆.mdb";
conn.Open();
string sql = "select * from atable where anumber= '" + number + "'";
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbDataAdapter oleda = new OleDbDataAdapter(sql,conn);
OleDbCommandBuilder olecb = new OleDbCommandBuilder(oleda);
DataTable oledt = new DataTable();
oleda.Fill(oledt);
object result = cmd.ExecuteScalar();
if (result != null)
{
if (oledt.Rows[0]["password"].ToString() == textBox2.Text.ToString())
{
if (textBox3.Text == textBox4.Text)
{
if (MessageBox.Show("确定修改密码吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
oledt.Rows[0]["password"] = textBox3.Text;
oleda.Update(oledt);
MessageBox.Show("修改成功!");
this.Close();
Form 管理员界面 = new 管理员界面();
管理员界面.Show();
}
}
else MessageBox.Show("两次输入的新密码不一致,请重新输入");

}
else MessageBox.Show("原密码错误,请重新输入");
}
else MessageBox.Show("查无此管理员,请检查用户名是否输入错误。");
conn.Close();
conn.Dispose();
}

报错:UPDATE 语句的语法错误。
...全文
221 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
狼烟辉 2013-04-17
  • 打赏
  • 举报
回复
oledt,换位dataSet.
csdn_风中雪狼 2013-04-17
  • 打赏
  • 举报
回复
oleda.Update(oledt); 改成 oleda.Update(oledt,oledt.Tables[0].TableName); 看看
LemonSmile_ 2013-04-17
  • 打赏
  • 举报
回复
看看update前后变量的值传递符不符合数据库字段的要求 学习学习,顺便接分
yang1216 2013-04-17
  • 打赏
  • 举报
回复
那就断点调试,看看sql语句是啥呗。
shawn_yang 2013-04-17
  • 打赏
  • 举报
回复
看到中文文件名和字段名我就蛋疼
md5e 2013-04-17
  • 打赏
  • 举报
回复
引用 15 楼 u010094611 的回复:
引用 14 楼 liuchaolin 的回复: olecomd.Parameters.AddRange(oleparam); 有没有办法让我这种格式的语句能执行呢 就是通过OLEDBADAPTER.UPDATA(DATATABLE)执行
现在就是让OLEDBADAPTER去执行啊,如果你是直接从SqlDataSource1去配置数据库,最后他也是会转成 "update atable set password=@password WHere anumber=@anumber这种形式的,只不过他是有可视介面去给你选择,然后操作
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
引用 14 楼 liuchaolin 的回复:
olecomd.Parameters.AddRange(oleparam);
有没有办法让我这种格式的语句能执行呢 就是通过OLEDBADAPTER.UPDATA(DATATABLE)执行
md5e 2013-04-17
  • 打赏
  • 举报
回复
olecomd.Parameters.AddRange(oleparam);
md5e 2013-04-17
  • 打赏
  • 举报
回复
olecomd.Parameters.Add(oleparam) 这个可以有吧?
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
引用 11 楼 liuchaolin 的回复:
类似这个 SqlDataAdapter sda = new SqlDataAdapter(); SqlCommand sqlcomd = new SqlCommand(); SqlParameter[] sqlparam=new SqlParameter[2]; ……
在执行 sqlcomd.Parameters = sqlparam;的时候 我改成我自己的:cmd.Parameters = olepar; 报错:错误 8 无法对属性或索引器“System.Data.OleDb.OleDbCommand.Parameters”
md5e 2013-04-17
  • 打赏
  • 举报
回复
类似这个 SqlDataAdapter sda = new SqlDataAdapter(); SqlCommand sqlcomd = new SqlCommand(); SqlParameter[] sqlparam=new SqlParameter[2]; sqlparam[0]=new SqlParameter("@password", textBox3.Text); sqlparam[1]=new SqlParameter("@anumber",number); sqlcomd.CommandText = "update atable set password=@password WHere anumber=@anumber"; sqlcomd.Connection = conn; sqlcomd.Parameters = sqlparam; sda.UpdateCommand = sqlcomd;
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
引用 8 楼 liuchaolin 的回复:
oleda有更新命令没?
oleda是OleDbDataAdapter类的 当然有更新命令啦。
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
我以前是用的SQL SERVER 现在就是把SQL SERVER里的数据库导入到了ACCESS中 然后把代码改成了ACCESS的 就出问题了 刚开始的问题是现实无法更新 因为数据库表中没有建立主键 然后我就把主键建好了。 报错就换了,变成了:UPDATE 语句的语法错误。
md5e 2013-04-17
  • 打赏
  • 举报
回复
oleda有更新命令没?
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
引用 4 楼 wolf_y 的回复:
oledt,换位dataSet.
你的意思是吧DATATABLE换成DATASET么? 试过了 不行的
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
引用 3 楼 lzxue1989 的回复:
oleda.Update(oledt); 改成 oleda.Update(oledt,oledt.Tables[0].TableName); 看看
改了以后显示 代码:oleda.Update(oledt, oledt.Tables[0].TableName); 提示:错误 1 “System.Data.DataTable”不包含“Tables”的定义,并且找不到可接受类型为“System.Data.DataTable”的第一个参数的扩展方法“Tables”(是否缺少 using 指令或程序集引用?) TABLES下有红线
艾比利夫 2013-04-17
  • 打赏
  • 举报
回复
引用 2 楼 liuyuxuan2388 的回复:
看看update前后变量的值传递符不符合数据库字段的要求 学习学习,顺便接分
应该符合 我以前是用的SQL SERVER 现在就是把SQL SERVER里的数据库导入到了ACCESS中 然后把代码改成了ACCESS的 就出问题了

110,534

社区成员

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

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

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