command.CommandText = "SELECT * FROM Books WHERE Author='"+Convert.ToString(comboBox1.SelectedItem)+"'";
reader = command.ExecuteReader();
离。
我从comboBox中选择"John"
。
datagridview将显示Author="John"
数据库中的数据。
例如,有4本书与同一作者(约翰),如何将这些数据显示到datagridview?
答案 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);