0

ID 列 (aitisi_ID) とカテゴリ列 (kat_aitisis) を持つデータベースを作成しました。listBox に表示されるすべての ID の kat_aitisis 列を string で更新したいと考えていますkat1

編集 2: 列「aitisi_ID」はint

私はこれまでのところこれを持っていますが、うまくいきません (cn は私の SqlConnection で、cmd は SqlCommand です):

// Edit: This is the code that I use to add Items to my listBox
private void loadlist()
    {
        listBox1.Items.Clear();
        listBox2.Items.Clear();
        cn.Open();
        string kat = "Εγκυρη";
        cmd.CommandText = ("SELECT aitisi_ID,moria FROM Table2 WHERE kat_aitisis='"+kat+"' ORDER BY moria DESC");
        dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            while (dr.Read())
            {
                listBox1.Items.Add(dr[0].ToString());
                listBox2.Items.Add(dr[1].ToString());
            }
        }
        cn.Close();
    }


string kat1 = "aaaaa";

        cn.Open();
        for (int i = 0; i < listBox1.Items.Count; i++)
        {

            listBox1.SetSelected(i, true);
            cmd.CommandText = "UPDATE Table2 SET kat_aitisis='"+kat1+"' WHERE aitisi_ID='"+listBox1.SelectedIndex+"'";
            cmd.ExecuteNonQuery();
            cmd.Clone();

        }  
        cn.Close();
4

3 に答える 3

4

列「aitisi_ID」が数値型の場合、正しい更新クエリは次のとおりです。

    string kat1 = "aaaaa";
    cmd.CommandText = "UPDATE Table2 SET kat_aitisis=@kat WHERE aitisi_ID=@id";
    cmd.Parameters.AddWithValue("@kat", kat1);
    cmd.Parameters.AddWithValue("@id", 0);
    cn.Open();
    for (int i = 0; i < listBox1.Items.Count; i++)
    {
        cmd.Parameters["@id"].Value = Convert.ToInt32(listBox1.Items[i]));
        cmd.ExecuteNonQuery();
    }  
    cn.Close();

2 つのパラメーターを使用してパラメーター化されたクエリを作成し、初期値を設定しました。
不変値を持つ文字列型の 1 つのパラメーター (kat1) 2 番目のパラメーターは、ダミーの初期値を持つ整数型です。
次に、ループ内で可変パラメーター (@id) のみが更新されます。
2 番目のパラメーターの値は、整数で埋められた ListBox1 の Item コレクションから取得され (すべての項目が更新値に渡されます)、データテーブルで期待されるように int に変換されます。

于 2013-05-20T15:21:41.377 に答える