单个SQL命令的功能

时间:2014-01-15 16:52:57

标签: c# sql

我正在尝试编写一个运行SQL命令的通用函数,只返回一个结果。

我收到以下错误:

Exception Details: System.InvalidOperationException: ExecuteScalar: Connection property has not been initialized.

Source Error: 

Line 130:
Line 131:            SQLCommand.CommandText = SQL;
Line 132:            String myResult = (String)SQLCommand.ExecuteScalar();
Line 133:
Line 134:            return myResult;

Source File: c:\Development\pros\Functions.cs    Line: 132 

代码是:

public static string SingleSQL(string SQL)
{

    SqlConnection SQLCON = new SqlConnection(ConfigurationManager.ConnectionStrings["PIDDBConnectionString"].ToString());

    SQLCON.Open();
    SqlCommand SQLCommand = new SqlCommand();
    SQLCommand.CommandType = CommandType.Text;

    SQLCommand.CommandText = SQL;
    String myResult = (String)SQLCommand.ExecuteScalar();

    return myResult;

}

2 个答案:

答案 0 :(得分:3)

您不会将连接分配给SqlCommand对象。

尝试类似

的内容
public static string SingleSQL(string SQL)
{

    SqlConnection SQLCON = new SqlConnection(ConfigurationManager.ConnectionStrings["PIDDBConnectionString"].ToString());

    SqlCommand SQLCommand = new SqlCommand();
    SQLCommand.Connection = SQLCON;
    SQLCommand.CommandType = CommandType.Text;

    SQLCommand.CommandText = SQL;

    try
    {
       SQLCON.Open();
       return (String)SQLCommand.ExecuteScalar();
    } finally {
       if (SQLCON.State != ConnectionState.Closed) SQLCON.Close();
    }
}

您应该能够将函数返回类型更改为object。然后,调用函数可以根据需要进行转换。

答案 1 :(得分:0)

你最好使用

SQLCON.CreateCommand()

这将始终确保您拥有与所需连接相关联的命令。

为什么这样更好?假设您使用另一个数据库平台,那么您不必更改命令的代码(因为返回的命令是IDbCommand类型,这是SqlCommand背后的接口等)。