将一些数据从数据库显示到datagridview

时间:2013-02-12 11:48:17

标签: c# ms-access

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

reader = command.ExecuteReader();

离。 我从comboBox中选择"John"。 datagridview将显示Author="John"数据库中的数据。 例如,有4本书与同一作者(约翰),如何将这些数据显示到datagridview?

1 个答案:

答案 0 :(得分: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);