在C#中,SQL连接正在打印:'System.Data.SqlClient.SqlDataReader'

时间:2014-11-24 14:18:09

标签: c# sqldatareader

我正在尝试在C#中运行SQL语句

以下是代码:

static void Main(string[] args)
{
    SqlConnection conn = new SqlConnection(
        @"Data Source=loninasd023.xx.xx.com;Initial 
        Catalog=DB.Manager.Data;Integrated Security=SSPI;");

    if (impersonateValidUser("svc_mgr", "USERNAME", "PASSWORD"))
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(
          "SELECT [data_check_info] FROM [DB.Manager.Data].[dbo].[server_package_status]", 
          conn);

        SqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            Console.WriteLine(reader);
        }

        reader.Close();
        conn.Close();

    }
    else
    {
        Console.WriteLine("The impersonation failed.");
        Environment.Exit(100);
    }

}

程序打印出来:

System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader
System.Data.SqlClient.SqlDataReader

我做错了什么?

2 个答案:

答案 0 :(得分:5)

SqlDataReader.ToString()方法返回它的类型的完整类型名称。这就是它返回System.Data.SqlClient.SqlDataReader的原因。

实际上,这是由Console.WriteLine完成的,因为没有名为Console.WriteLine(SqlDataReader)的重载,这就是为什么它调用Console.WriteLine(object) overload并在此方法中{{1}可能会调用。

object.ToString()方法逐行读取结果

您可以轻松地将您的值编入索引Read(),如0

reader[0]

答案 1 :(得分:1)

尝试这样:

while (reader.Read())
{
Console.WriteLine(reader.GetInt32(0));  // for Int
//OR
Console.WriteLine(reader.GetString(0));  // for strings

}