在 C# 中使用 oledb 更新数据
Posted
技术标签:
【中文标题】在 C# 中使用 oledb 更新数据【英文标题】:update data using oledb in c# 【发布时间】:2015-04-09 09:27:30 【问题描述】:我使用 c# 和使用 access accdb 的数据库创建了一个项目,并在它们之间进行了连接。我做了2个按钮,第一个是添加新客户,效果很好,第二个是更新客户的数据(名字和姓氏),由于某种原因,更新按钮不起作用,当没有错误时我运行了这个项目,但是点击之后什么都没有发生......
private void button2_Click(object sender, EventArgs e)
connect.Open();
string cid = textBox1.Text;
string cfname = textBox2.Text;
string clname = textBox3.Text;
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "UPDATE Tcostumers SET cfname= " + cfname + "clname= " + clname + " WHERE cid = " + cid;
if (connect.State == ConnectionState.Open)
try
command.ExecuteNonQuery();
MessageBox.Show("DATA UPDATED");
connect.Close();
catch (Exception expe)
MessageBox.Show(expe.Source);
connect.Close();
else
MessageBox.Show("ERROR");
【问题讨论】:
你的button1_Click
代码除了查询之外是一样的吗?
【参考方案1】:
我相信你的命令文本是问题所在;
command.CommandText = "UPDATE Tcostumers SET cfname= " + cfname + "clname= " + clname + " WHERE cid = " + cid;
您需要在集合语句之间使用逗号,并且正如 Gino 指出的语音标记一样。
编辑:
这比你为你的变量使用参数要好,你当前的方法对 SQL 注入是开放的,例如。
private void button2_Click(object sender, EventArgs e)
OleDbCommand command = new OleDbCommand(@"UPDATE Tcostumers
SET cfname = @CFName,
clname = @CLName
WHERE cid = @CID", connect);
command.Parameters.AddWithValue("@CFName", textBox2.Text);
command.Parameters.AddWithValue("@CLName", textBox3.Text);
command.Parameters.AddWithValue("@CID", textBox1.Text);
try
connect.Open();
catch (Exception expe)
MessageBox.Show(expe.Source);
try
command.ExecuteNonQuery();
MessageBox.Show("DATA UPDATED");
catch (Exception expe)
MessageBox.Show(expe.Source);
finally
connect.Close();
我倾向于用它来格式化我的代码,所以你可以用它来做。希望对您有所帮助。
【讨论】:
【参考方案2】:这可能是一件愚蠢的事情,但是...... 您正在更新字符串而不是整数,因此请尝试将 '' 添加到您的字符串中,例如:
command.CommandText = "UPDATE Tcostumers SET cfname= '" + cfname + "' clname='" + clname + "' WHERE cid = " + cid;
【讨论】:
【参考方案3】://my sample code for edit/update
Table Name = StudentFIle
Fields = id,fname,lname
bool found = false;
OleDbConnection BOMHConnection = new OleDbConnection(connect);
string sql = "SELECT * FROM StudentFIle";
BOMHConnection.Open();
OleDbCommand mrNoCommand = new OleDbCommand(sql, BOMHConnection);
OleDbDataReader mrNoReader = mrNoCommand.ExecuteReader();
while (mrNoReader.Read())
if (mrNoReader["id"].ToString().ToUpper().Trim() == idtextbox.Text.Trim())
mrNoReader.Close();
string query = "UPDATE StudentFIle set fname='" +firstnametextbox.Text+ "',lname='"+lastnametextbox.Text+"' where id="+idtextbox.Text+" ";
mrNoCommand.CommandText = query;
mrNoCommand.ExecuteNonQuery();
MessageBox.Show("Successfully Updated");
found = true;
break;
continue;
if (found == false)
MessageBox.Show("Id Doesn't Exist !.. ");
mrNoReader.Close();
BOMHConnection.Close();
idtextbox.Focus();
【讨论】:
以上是关于在 C# 中使用 oledb 更新数据的主要内容,如果未能解决你的问题,请参考以下文章
从对多个数据网格的更改更新本地存储的数据库(Visual Studio C#,使用 OLEDB 的 Access 数据库)