我正在尝试在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
我做错了什么?
答案 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
}