代码很简单,如下:
------------------------------------------------
SqlConnection connection = new SqlConnection();
connection.ConnectionString = "SERVER=(local); UID=sa; PWD=sa; DATABASE=MyDb;";
connection.Open();SqlCommand command = new SqlCommand();
command.CommandText = "Select * From mytable";
command.Connection = connection;
command.CommandType = CommandType.Text;SqlDataReader reader = command.ExecuteReader();while (reader.Read())
{
    Console.WriteLine(reader[3]);  // Error,如果改成reader.getString(3)则没有错误
}reader.Close();
-----------------------------------------
出错信息为:
Unhandled Exception: System.OverflowException: Conversion overflows.
   at System.Data.SqlClient.TdsParser.ProcessRow(_SqlMetaData[] columns, Object[] buffer, Int32[] map, Boolean useSQLTyp
es)
   at System.Data.SqlClient.SqlDataReader.PrepareRecord(Int32 i)
   at System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
   at System.Data.SqlClient.SqlDataReader.get_Item(Int32 i)
   at ConsoleApplication1.Class1.Main(String[] args) in d:\myproject\consoleapplication1\class1.cs:line 84但是如果将代码改为如下,就正确:
------------------------------------------------
SqlConnection connection = new SqlConnection();
connection.ConnectionString = "SERVER=(local); UID=sa; PWD=sa; DATABASE=MyDb;";
connection.Open();SqlCommand command = new SqlCommand();
command.CommandText = "Select name From mytable";
command.Connection = connection;
command.CommandType = CommandType.Text;SqlDataReader reader = command.ExecuteReader();while (reader.Read())
{
    Console.WriteLine(reader[0]);  // Goodreader.Close();
-----------------------------------------难道使用read[]的时候,select语句只能返回1个column?