DataReader返回错误的值

时间:2013-08-09 17:46:08

标签: c# sqldatareader

嗨,我真的很困惑让我先解释一下。我正试图从北风中检索数据。 在订单表中,第一列是OrderID,第二列是CustomerID

  

Console.Write(读取器[0]的ToString());

像这样使用我可以得到值1248,1249,1250等等。正如预期的那样。但是如果我使用这种方式如下。

                Console.Write(reader[0].ToString());
                Console.Write(" ----------------");
                Console.WriteLine(reader[1].ToString());

此次订单的数据完全不同。如果您查看订单表,您会看到此数据不属于OrdersTable。请您帮忙吗?

           10779    Mork
           10780    Lilas  

这是完整的代码

        string SQL = "SELECT * FROM Orders";

        SqlConnection conn = new SqlConnection(ConnectionString);
        SqlCommand cmd = new SqlCommand(SQL);
        cmd.Connection = conn;

        conn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        try
        {
            while (reader.Read())
            {
               // Console.Write( reader.GetString(1).ToString());

                Console.Write(reader[0].ToString());
                Console.Write(" ----------------");
                Console.WriteLine(reader[1].ToString());

             //  Console.WriteLine("Customer:" + reader.GetString(1).ToString());

            }
            Console.ReadLine();
        }
        finally
        {
            reader.Close();
            conn.Close();
        } 

1 个答案:

答案 0 :(得分:0)

Console.Write(reader.GetString(0));
Console.Write(" ----------------");
Console.WriteLine(reader.GetString(1));

reader.GetInt32(n)取决于哪些类型?

假设您在每行的前两列之后?

编辑:我认为我最初读错了这个问题,你说当你从this schema查询订单表时,你得到序号位置1的名字,即第二栏?

基于这个架构,我搜索了vinet并看到了这个link,你可以看到海报正在查询customerId == 'VINET',所以我怀疑你看到的结果是正确的。尝试运行:

SELECT * FROM Orders WHERE CustomerID = 'VINET'