DataReader返回错误的值

本文关键字:错误 返回 DataReader | 更新日期: 2023-09-27 18:27:16

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

Console.Write(reader[0].ToString());

像这样使用,我可以得到值124812491250等等)。但如果我像下面这样使用。

                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();
        } 

DataReader返回错误的值

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

reader.GetInt32(n)取决于类型是什么?

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

EDIT:我想我一开始看错了这个问题,你是说当你从这个模式中查询Orders表时,你得到的名称在序号位置1,即第二列?

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

SELECT * FROM Orders WHERE CustomerID = 'VINET'