对象引用未设置为dll中对象的实例

时间:2012-11-16 12:52:58

标签: c# windows dll

我在我的应用程序中编写了这个方法,它运行正常。我决定为它创建一个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);

可能是什么问题?

3 个答案:

答案 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();
    }
}