-1

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

可能是什么问题?

4

3 回答 3

0

我肯定会尽量让您的连接在最短的时间内保持打开状态。我建议使用using语句。

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();
    }
}
于 2012-11-16T13:00:24.040 回答
0

您在设置其对应值之前调用 SQL 命令,您应该设置 CommandText 的值,然后实例化 SQL 命令

于 2012-11-16T12:57:32.473 回答
0

您尚未创建实例,sqlCmd并且试图将其传递CommandText给创建该对象的进程。您似乎将存储过程作为参数传递给执行,因此请尝试以下操作:

sqlCmd = new SqlCommand(storedProcedure, sqlCon);
于 2012-11-16T12:59:21.127 回答