【问题标题】:Deleting a record in a database table删除数据库表中的记录
【发布时间】:2018-06-28 04:46:12
【问题描述】:

在单击分配用于删除记录的按钮时遇到问题。每当我单击它时,它都会在消息框中显示 Microsoft Access 数据库引擎,但它不会删除记录。

这是我的代码:

private void button1_Click(object sender, EventArgs e) {
    OleDbConnection conn = new OleDbConnection();
    conn.ConnectionString = (@ "Provider= Microsoft.ACE.OLEDB.12.0;Data Source =C:\Users\pc\Documents\Visual Studio 2015\Projects\GamefarmDB\GamefarmDB\Gamefarm.accdb;User ID = admin;Jet OLEDB:Database Password=admin; Persist Security Info=True;");

    String WingbandNumber = textBox1.Text;

    OleDbCommand cmd = new OleDbCommand("DELETE FROM List WHERE WingbandNumber ='" + WingbandNumber + "'", conn);

    conn.Open();
    if (conn.State == ConnectionState.Open) {
        cmd.Parameters.Add("@WingbandNumber", OleDbType.Numeric).Value = WingbandNumber;

        try {
            cmd.ExecuteNonQuery();
            MessageBox.Show("Data Deleted");
            conn.Close();
            this.Close();
        } catch (OleDbException ex) {
            MessageBox.Show(ex.Source);
            conn.Close();
        }
    } else {
        MessageBox.Show("Connection Failed");
    }
}

【问题讨论】:

  • 不应该是WHERE WingbandNumber ='" + WingbandNumber + "'"WHERE WingbandNumber = @WingbandNumber"
  • 我试过了,显示“System.Data.dll中发生System.InvalidOperationException”
  • 我想它也会给你一个错误信息。

标签: c# ms-access


【解决方案1】:

反正我已经弄明白了,谢谢你的帮助!我把数据库命令改成

("DELETE FROM List WHERE WingbandNumber =" + WingbandNumber, conn);

【讨论】:

  • 非常糟糕的主意,因为这会让您对 SQL 注入开放。 始终使用参数化查询。如果您对WHERE WingbandNumber = @WingbandNumber 有疑问,那么您需要解决这些问题,因为这确实有效。
猜你喜欢
  • 2019-06-03
  • 2011-07-16
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多