C#错误帮助 - “ExecuteNonQuery:CommandText属性尚未初始化”
我无法调用我的查询。当我运行此我得到以下无差错“的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();
我不知道为什么我继续得到这个错误。任何人都可以帮助我吗?
谢谢。
您将 的值设置为之后,您已将它传递给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(); } }
让连接池手柄使得有效率的底层网络连接方面。
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
括号自动关闭你的资源。
您正在使用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();
这样做的时候我居然还得到了错误,但尝试 - 的OdbcCommand cmdCommand =新的OdbcCommand( “从搜寻准则删除其中CRITERIA_ID =” + iCriteriaID,Global.gADOConnection); Global.gADOConnection.Open(); cmdCommand.ExecuteNonQuery(); Global.gADOConnection.Close(); 这回来没有错误。谢谢您的帮助。 – 2012-07-23 19:34:47
潜在的SQL注入.... – Bert 2012-07-23 19:28:03