1

我需要一些帮助来理解我的错误。我想从表中读取数据,但是我收到诸如“行/列不存在数据”之类的错误。我不明白,因为我实际上在那里有行和列。赢表格。谢谢!

    //this is how i insert data into table, works fine 
    public void b1_Click(object sender, EventArgs e)
    {
        SqlCeCommand command = new SqlCeCommand("INSERT INTO tbl1(Name, LastName) VALUES (@Name, @LastName)", conn);
        command.Parameters.AddWithValue("@Name", l1.Text);
        command.ExecuteNonQuery();
    }

    //this is how i try to read data from the same table
    public void b2_Click(object sender, EventArgs e)
    { 
       SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:test.sdf");
       conn.Open();
       SqlCeCommand command = new SqlCeCommand("SELECT * FROM  tbl1", conn);
       SqlCeDataReader reader = command.ExecuteReader();

       //error here
       string Name = reader.GetString(0);
       label.Text = Name;
    }
4

2 回答 2

1

问题在于您的结果加载。

SqlCeDataReader reader = command.ExecuteReader();

while (reader.Read())
{
   string Name = reader.GetString(0);
}

因此,您使用Read方法遍历结果。或者,如果您只有一个结果,那么您也可以使用ExecuteScalar

string Name = reader.ExecuteScalar().ToString();
于 2012-10-07T22:28:22.027 回答
1

在这个序列中

    SqlCeCommand command = new SqlCeCommand("INSERT INTO tbl1(Name, LastName) VALUES (@Name, @LastName)", conn);
    command.Parameters.AddWithValue("@Name", l1.Text);
    command.ExecuteNonQuery();

您没有设置第二个参数@LastName,因此它应该失败。如果您以前在表中没有记录,那么您将没有任何选择。

那,以及你没有打电话的事实reader.Read()

于 2012-10-07T22:30:37.907 回答