none
使用OleDbCommand参数化查询遇到的问题,请进来看看。 RRS feed

  • 问题

  •       string sSql = "update [" + tbname +"] set [count]=? where [id]=?";
          OleDbCommand cmd = new OleDbCommand(sSql, conn);
          //cmd.Parameters.Add("@tbname", OleDbType.Char, 50).Value = "[Auxiliary Sciences of History]";
          cmd.Parameters.Add("@cc", OleDbType.Integer,4).Value = 2;
          cmd.Parameters.Add("@id", OleDbType.Integer,4).Value = 1;
          int i=cmd.ExecuteNonQuery();
    

    代码在上面,表名里面有空格,当用:string sSql = "update [" + tbname +"] set [count]=? where [id]=?";这个语句的时候是没有问题的。但是用这个string sSql = "update ? set [count]=? where [id]=?";语句,然后去掉下面//cmd.Parameters.Add("@tbname", OleDbType.Char, 50).Value = "[Auxiliary Sciences of History]";的注释后就不行了,会报告"UPDATE 语句的语法错误。"

    请问,如果表名这里也要用参数的方式应该怎么做呢?

    非常感谢!

    2010年10月12日 6:13

答案

  • UPDATE 指令中,只有設定欄位值和條件值的部份可以使用參數,表格名稱本身不能用參數。
    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已标记为答案 Mog Liang 2010年10月19日 9:39
    2010年10月18日 12:03

全部回复

  • 呵呵,你这真是一个大胆而又不错的尝试。想当初我怎么就没有这样的创意呢?
    只是,既然已经发生了错误,我想可能是这种做法的本身应该是不可行的吧。

    2010年10月12日 15:20
  • UPDATE 指令中,只有設定欄位值和條件值的部份可以使用參數,表格名稱本身不能用參數。
    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已标记为答案 Mog Liang 2010年10月19日 9:39
    2010年10月18日 12:03