我在我的应用程序中编写了这个方法,它运行正常。我决定为它创建一个DLL文件。 但是同样的方法给我错误对象引用没有设置为dll中对象的实例。 代码是
public void Try(string conStr, string storedProcedure)
{
try
{
//create a connection string
sqlCon = new SqlConnection(conStr);
// create command
sqlCmd = new SqlCommand(sqlCmd.CommandText, sqlCon);
//add command type
sqlCmd.CommandType = CommandType.StoredProcedure;
// add the stored procedure name
sqlCmd.CommandText = storedProcedure;
//Open connection
sqlCon.Open();
// Execute transaction
sqlCmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
{
// Close connection
sqlCon.Close();
}
错误发生在:
sqlCmd = new SqlCommand(sqlCmd.CommandText, sqlCon);
可能是什么问题?
答案 0 :(得分:0)
在设置其对应值之前调用SQL命令,应该设置CommandText的值然后实例化SQL命令
答案 1 :(得分:0)
您尚未创建sqlCmd
的实例,并且您尝试将其CommandText
传递给创建该对象的进程。您似乎将存储过程作为执行参数传递,因此尝试类似:
sqlCmd = new SqlCommand(storedProcedure, sqlCon);
答案 2 :(得分:0)
我肯定会尝试在最短的时间内保持您的连接畅通。我建议使用使用语句。
public void Try(string conStr, string storedProcedure) {
using (var sqlCon = new SqlConnection(conStr)) {
// create command, also a local variable
var sqlCmd = new SqlCommand();
// set connection
sqlCmd.Connection = sqlCon
//add command type
sqlCmd.CommandType = CommandType.StoredProcedure;
// add the stored procedure name
sqlCmd.CommandText = storedProcedure;
//Open connection
sqlCon.Open();
// Execute transaction
sqlCmd.ExecuteNonQuery();
}
}