SQL参数编辑

本文关键字:编辑 参数 SQL | 更新日期: 2023-09-27 18:02:58

我终于解决了一个问题,但现在我有另一个。我发现了如何获得我的选择器所在的当前字段的名称,但是现在当我想使用更新命令时,它们不会让我设置参数。这里有一些代码…

    private void dgv_DataLookup_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        DialogResult dr;
        dr = MessageBox.Show("Are you sure you want to edit this field?", "Edit Cell", MessageBoxButtons.YesNo);
        if (dr == DialogResult.Yes)
        {
            string myCell = dgv_DataLookup.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
            string myIndex = dgv_DataLookup.CurrentCell.OwningRow.Cells[6].Value.ToString();
            string myColumn = dgv_DataLookup.CurrentCell.OwningColumn.HeaderCell.Value.ToString();
            myColumn.Trim();
            da.UpdateCommand = new OleDbCommand("UPDATE tbl_Orders SET @myColumn = @myCell WHERE oid = @myIndex", cs);
            da.UpdateCommand.Parameters.Add("@myColumn", OleDbType.VarChar).Value = myColumn;
            da.UpdateCommand.Parameters.Add("@myCell", OleDbType.VarChar).Value = myCell;
            da.UpdateCommand.Parameters.Add("@myIndex", OleDbType.Integer).Value = myIndex;
            cs_Execute("UPDATE");
        }
    }

当我改变myColumn为实际列,说itemNum,它工作得很好。然而,错误是不能更新'@myColumn';字段不可更新

我也有一个消息框显示我的myColumn的值,它是正确的值。我只是想知道这是否合法,将一个参数设置为另一个参数。如果没有,那么我就必须更新所有的行。谢谢!

注。cd_Execute就像cs.Open() da.UpdateCommand.ExecuteNonQuery() cs.Close()

SQL参数编辑

不能在参数化查询中使用动态列名。您将需要使用动态SQL。

这将做你想要的,尽管打开SQL注入:

da.UpdateCommand = new OleDbCommand(string.Format("UPDATE tbl_Orders SET {0} = @myCell WHERE oid = @myIndex", myColumn), cs);