繁体   English   中英

在C#中使用oledb更新数据

[英]update data using oledb in c#

我使用c#和访问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");
    }
}

我相信您的命令文本就是麻烦所在。

command.CommandText = "UPDATE Tcostumers SET cfname= " + cfname + "clname= " + clname + " WHERE cid = " + cid;

您需要在set语句之间加上逗号,就像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();
        }
    }

这就是我倾向于格式化代码的方式,因此请按照自己的意愿去做。 希望能帮助到你。

这可能是愚蠢的事情,但是...
您要更新的字符串不是整数,因此请尝试在字符串中添加“”,例如:

command.CommandText = "UPDATE Tcostumers SET cfname= '" + cfname + "' clname='" + clname + "' WHERE cid = " + cid;
//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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM