请检查以下代码:
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}
此功能仅返回一行。 如果我的数据库中有很多行并且需要将它添加到组合框中,我应该如何修改我的代码呢?
string sql = "select country from CarCountry";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Connection = conn;
SqlDataReader DR = cmd.ExecuteReader();
while (DR.Read())
{
combobox1.Items.Add(DR[0]);
}
}
}
我使用上面的代码在组合框中添加项目。 我想写一个函数来替换它......
答案 0 :(得分:1)
您的代码会返回一个DataTable,而不是DataRow。哪个没问题,但是如果你想获得DataTable
的行,那么DataTable
就是property。
下面使用您的方法获取DataTable
,循环浏览DataRows
并向comboBox1
添加项目。此项是从数据库获取的每一行的Username
值。 (当然,SQL
不同,但这只是一个例子。)
public static void Main(string [] args)
{
PopulateComboBox(); // Will kick off everything.
}
public static void PopulateComboBox()
{
DataTable table = ExecuteDataTable("SELECT Username FROM Users WHERE firstname = @firstname", new SqlParameter("Bob", SqlDbType.VarChar);
foreach(DataRow row in table.Rows)
{
comboBox1.Items.Add(row["Username"].ToString());
}
}
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}