0
command.CommandText = "SELECT * FROM Books WHERE Author='"+Convert.ToString(comboBox1.SelectedItem)+"'";

reader = command.ExecuteReader();

元。"John"コンボボックスから選択します。datagridviewは、データベースのデータを表示しますAuthor="John"。たとえば、同じ著者(John)の本が4冊ありますが、それらのデータをdatagridviewに表示するにはどうすればよいですか?

4

1 に答える 1

1

何かのようなもの

command.CommandText = "SELECT * FROM Books WHERE Author='"+Convert.ToString(comboBox1.SelectedItem)+"'";

var reader = command.ExecuteReader();

var list = new List<string>();
while(reader.Read())
{
   list.Add(reader["Author"].ToString())
}

datagridview.DataSource = list;

この方法でそれを行うことには多くの(多くの!)間違ったことがあります-しかしそれはあなたを適切にあなたの道に連れて行きます。

まず第一に、GUIをdbコードに「近づける」ことは避けてください。第二に、前述のように、このコードはSQLインジェクションに対して脆弱です。

私のおすすめ:

public List<string> GetAuthors(string aurtherName)
{

  using(var con = CreateConnection()//somehow )
  {   
    var command = con.CreateCommand();

    string sql = "SELECT * FROM Books WHERE Author='@value'";
     command.Parameters.AddWithValue("@value", aurtherName);
     command.CommandText = sql ;

    var list = new List<string>();
    while(reader.Read())
    {
       list.Add(reader["Author"].ToString())
    }

     return list;
  }
}

そうすれば、次のように呼び出すことができます。

datagridview.DataSource = GetAuthors(comboBox1.SelectedItem);
于 2013-02-12T11:52:02.480 に答える