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

lar*_*400 1 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);
    }

}
Run Code Online (Sandbox Code Playgroud)

该程序打印这个:

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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Son*_*nül 5

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

实际上,这是通过Console.WriteLine因为没有Console.WriteLine(SqlDataReader)调用Console.WriteLine(object)过载来实现的,这就是为什么它调用重载并且在这个方法中,object.ToString()可能会调用.

Read()方法逐行读取结果.

您可以轻松地将您的值索引0reader[0]

while (reader.Read())
{
    Console.WriteLine(reader[0]);
}
Run Code Online (Sandbox Code Playgroud)