这个错误第一眼的感觉是忘记赋值给SqlCommand了, 但事实上不仅如此, 有时赋值了但给的是 null, string.Empty, "" 等值也是会提示这个的。
下面是测试 demo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
string connString = "data source=(local)\\sqlserver2014;initial catalog=tempdb;Integrated Security=True;";
string[] sqlArr = { null, string.Empty, "", "1","select count(1) from sys.tables" };
int id = 1;
foreach (string sql in sqlArr)
{
Console.WriteLine("\r\nid:{0}", id++);
try
{
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
Console.WriteLine(Convert.ToString(sdr[0]));
}
sdr.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Console.Read();
}
}
}