首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数上的SQL编辑

参数上的SQL编辑
EN

Stack Overflow用户
提问于 2011-07-20 21:52:21
回答 1查看 95关注 0票数 0

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

代码语言:javascript
复制
    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()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-20 21:56:37

在参数化查询中不能有动态列名。您需要求助于dynamic SQL

这将做您想做的事情,尽管它对SQL Injection是开放的

代码语言:javascript
复制
da.UpdateCommand = new OleDbCommand(string.Format("UPDATE tbl_Orders SET {0} = @myCell WHERE oid = @myIndex", myColumn), cs);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6763074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档