1

エラーを理解するのに助けが必要です。テーブルからデータを読み込みたいのですが、「行/列にデータがありません」などのエラーが出ます。実際には行と列があるので、わかりません。Winフォーム。ありがとう!

    //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

この順番で

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

2 番目のパラメーターを設定していない@LastNameため、失敗するはずです。以前にテーブルにレコードがなかった場合は、何も選択できません。

それ、そしてあなたが電話していないという事実reader.Read()

于 2012-10-07T22:30:37.907 に答える
1

問題は、結果の読み込みにあります。

SqlCeDataReader reader = command.ExecuteReader();

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

そのため、 Readメソッドを使用して結果を反復処理します。または、結果が 1 つしかない場合は、 ExecuteScalarを使用することもできます

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