关于C#廉洁ACCESS数据库后 使用UPDATE更新数据库报错的问题!
代码如下
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 语句的语法错误。
[解决办法]
那就断点调试,看看sql语句是啥呗。
[解决办法]
看看update前后变量的值传递符不符合数据库字段的要求
学习学习,顺便接分
[解决办法]
oleda.Update(oledt);
改成
oleda.Update(oledt,oledt.Tables[0].TableName);
看看
[解决办法]
oledt,换位dataSet.
[解决办法]
类似这个
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;
[解决办法]
olecomd.Parameters.Add(oleparam)
这个可以有吧?
[解决办法]
现在就是让OLEDBADAPTER去执行啊,如果你是直接从SqlDataSource1去配置数据库,最后他也是会转成
"update atable set password=@password WHere anumber=@anumber这种形式的,只不过他是有可视介面去给你选择,然后操作