2012-07-23 282 views
1

我无法调用我的查询。当我运行此我得到以下无差错“的ExecuteNonQuery:CommandText属性尚未初始化”C#错误帮助 - “ExecuteNonQuery:CommandText属性尚未初始化”

 //delete from the database 
     OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection); 
     tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID; 
     Global.gADOConnection.Open(); 
     cmdCommand.ExecuteNonQuery(); 
     Global.gADOConnection.Close(); 

我不知道为什么我继续得到这个错误。任何人都可以帮助我吗?

谢谢。

+2

潜在的SQL注入.... – Bert 2012-07-23 19:28:03

回答

3

您将 的值设置为之后,您已将它传递给OdbcCommand构造函数。我怀疑这不是你想要的。尝试:

string tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID; 
using (OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection)) 
{ 
    Global.gADOConnection.Open(); 
    cmdCommand.ExecuteNonQuery(); 
    Global.gADOConnection.Close(); 
} 

但是:

  • 我强烈建议你使用的不是嵌入的SQL内本身的价值
  • 注意我如何使用using语句处置SQL参数化在最后的命令
  • 我也强烈建议你而不是使用全局变量的数据库连接。创建一个新的连接每次你需要一个数据库操作的时间,并在年底进行处置:

    using (OdbcConnection connection = new OdbcConnection(...)) 
    { 
        connection.Open(); 
        using (OdbcCommand command = ...) 
        { 
         command.ExecuteNonQuery(); 
        } 
    } 
    

    让连接池手柄使得有效率的底层网络连接方面。

1

TSQL的需要在cmdCommand前面去:

tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID; 
OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection); 

你真的应该使用的参数,以避免SQL注入攻击。

tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = @CriteriaID"; 
OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection); 
cmdCommand.Parameters.AddWithValue("@CriteriaID", iCriteriaID); 

接下来要考虑的就是using括号自动关闭你的资源。

0

您正在使用null命令文本初始化命令。尝试在创建命令之前分配tSQL。

var tSQL = "Delete from SEARCH_CRITERIA where CRITERIA_ID = " + iCriteriaID; 
OdbcCommand cmdCommand = new OdbcCommand(tSQL, Global.gADOConnection); 
Global.gADOConnection.Open(); 
cmdCommand.ExecuteNonQuery(); 
Global.gADOConnection.Close(); 
+0

这样做的时候我居然还得到了错误,但尝试 - 的OdbcCommand cmdCommand =新的OdbcCommand( “从搜寻准则删除其中CRITERIA_ID =” + iCriteriaID,Global.gADOConnection); Global.gADOConnection.Open(); cmdCommand.ExecuteNonQuery(); Global.gADOConnection.Close(); 这回来没有错误。谢谢您的帮助。 – 2012-07-23 19:34:47

相关问题