1

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

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

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

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

这次来自Orders的数据完全不同。如果你检查orders表你会发现这个数据不属于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();
        } 
4

1 回答 1

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

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

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

编辑:我想我最初读错了这个问题,你是说当你从这个模式查询 Orders 表时,你在序数位置 1 得到一个名字,即第二列?

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

SELECT * FROM Orders WHERE CustomerID = 'VINET'
于 2013-08-09T17:53:11.147 回答