0

テキスト ボックスにデータベースの値を入力しようとしているので、ユーザーがコンボ ボックスから教師の名前を選択すると、テキスト ボックスに連絡先の詳細が入力されます。これは私がこれまでに持っているコードです。エラーはありませんが、コンボ ボックスから値を選択すると、テキスト ボックスは空白のままです。

    private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MySqlConnection cs = new MySqlConnection(connectionSQL);
        cs.Open();

        DataSet ds = new DataSet();

        MySqlDataAdapter da = new MySqlDataAdapter("Select * from Teacher WHERE name='" + comboBox1.Text + "'", cs);

        MySqlCommandBuilder cmd = new MySqlCommandBuilder(da);

        da.Fill(ds);


        if (comboBox1.SelectedIndex > 0)
        {


            NameBox.Text = ds.Tables[0].Rows[0]["name"].ToString();
            AddressBox.Text = ds.Tables[0].Rows[0]["address"].ToString();

        }

どんな助けやアドバイスも大歓迎です

4

3 に答える 3

0
AddressBox.DataBind();
NameBox.DataBind();
于 2014-02-14T13:48:17.817 に答える
0

選択したインデックスを確認する前にデータベースにクエリを実行しており、選択したインデックスが 0 ではなく -1 より大きいかどうかを確認する必要があります。

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (comboBox1.SelectIndex < 0) 
    {
        // Don't want to suffer database hit if nothing is selected
        // Simply clear text boxes and return
        NameBox.Text = "";
        AddressBox.Text = "";
    }
    else 
    {
        MySqlConnection cs = new MySqlConnection(connectionSQL);
        cs.Open();

        DataSet ds = new DataSet();

        // You only need to select the address since you already have the name unless 
        // they are displayed differently and you want the database display to show
        MySqlDataAdapter da = new MySqlDataAdapter("Select address from Teacher WHERE name='" + comboBox1.Text + "'", cs);

        MySqlCommandBuilder cmd = new MySqlCommandBuilder(da);

        da.Fill(ds);

        NameBox.Text = comboBox1.Text;
        AddressBox.Text = ds.Tables[0].Rows[0]["address"].ToString();
    }
}

また、姓と名の間の余分なスペースや、目に見えて検出しにくい何かなど、見逃しやすい方法でコンボ ボックスとデータベースでの名前の表示が異なる場合は、クエリが失敗する原因となる可能性があります。合わない。

于 2014-04-01T07:45:06.540 に答える
0

あなたのコードに基づいて、問題はここにあると信じなければなりません:

if (comboBox1.SelectedIndex > 0)

リストに項目が 1 つしかない場合、またはユーザーが最初の項目を選択した場合、クエリは実行されますが、テキスト ボックスは表示されません。

于 2013-04-03T17:07:33.477 に答える