2016-12-07 5 views
-1

Nun, ich bin neu in winform, ich möchte auf einer Listenansicht eine Suche, aber ich habe einige Fehler, hier ist mein Code:Suche auf Listview C#

public void delete_view_list() 
{ 
    for (int i = list_data.Items.Count - 1; i >= 0; i--) 
    { 
     list_data.Items[i].Remove(); 
    } 
} 

public void search(string nama) 
{ 
    delete_view_list(); 
    string sql = "select * from barang where Nama_barang like concat('%', nama , '%')"; 
    list_data.View = View.Details; 
    MySqlDataAdapter adap = new MySqlDataAdapter(sql, con); 
    DataTable dt = new DataTable(); 
    adap.Fill(dt); 
    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     DataRow dr = dt.Rows[i]; 
     ListViewItem listitem = new ListViewItem(dr["ID"].ToString()); 
     listitem.SubItems.Add(dr["code"].ToString()); 
     listitem.SubItems.Add(dr["Nama_barang"].ToString()); 
     listitem.SubItems.Add(dr["Jumlah_barang"].ToString()); 
     listitem.SubItems.Add(dr["Harga_awal"].ToString()); 
     listitem.SubItems.Add(dr["Harga_jual"].ToString()); 
     list_data.Items.Add(listitem); 
    } 
} 

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    string name = search_box_fill.Text; 
    search(name); 
} 

Gibt es etwas dort nicht in Ordnung?

+6

** einige Fehler **, was ist, dass Fehler leer ist ?? –

+0

auf adap.fill (dt), ich habe MySqlException wurde nicht behandelt .... – Wilx

+0

Randnotiz: Sie verwenden nicht 'Nama' Variable an die Methode übergeben. – user3185569

Antwort

2

Use parameters!

hier Sie Ausgabe in folgenden Zeilen haben, haben Sie den Parameter in der SQL-Anweisung nicht verwenden.

string sql = "select * from barang where Nama_barang like concat('%', nama , '%')"; 

sollte es

string sql = "select * from barang where Nama_barang like concat('%', "+nama+", '%')"; 
1

sein Dies könnte den Trick für Sie tun

string sql = "select * from barang where Nama_barang like concat('%', " + nama + " , '%')"; 

oder

string sql = "select * from barang where Nama_barang like '%" + nama +"%')"; 

Aber die empfohlene Methode, um die Abfragen zu machen ist parameteriz ed abfragt

string sql = "select * from barang where Nama_barang like @cmdnama"; 
cmd = new MySqlCommand(cmdText, con); 
cmd.Parameters.AddWithValue("@cmdnama", "%" + nama + "%") 

und empfehlen, dass Sie überprüfen sollten, wäre, wenn die Zeichenfolge an die Funktion vor dem Senden wie

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
     string name = search_box_fill.Text; 
     if(name.Length >= 1) 
      search(name); 
} 
+0

lol, das ist die Magie danke für die Antwort: 3 Sie lösen mein Problem – Wilx

+0

Ja, ich werde es akzeptieren, aber müssen 5 Minuten warten: 3 – Wilx