目前我在数据库中获取所有表名,并添加到List<string> saka
和listbox1
:
listBox1.Items.Clear();
fare = bag.GetSchema("Tables");
foreach (DataRow zil in fare.Rows)
{
saka.Add(zil["table_name"].ToString());
listBox1.Items.Add(zil["table_name"].ToString());
}
是否可以只获取更新的表名?我的意思是列“stts”可以添加3个值(0,1,2) 0=unread,1=read;2=read
并更改,那么我们可以获得在其“stts”列中具有“0”值的表吗?还是有另一种方法可以做到这一点?
另一个问题(可选:)):我在fill()
事件下有listBox1_DoubleClick
。同样,我们可以使用仅在特定的表行中填充dgv,该行在“stts”列中具有“1”值吗?
private void fill()
sqlAdapter = new SqlDataAdapter("SELECT * FROM " + saka[listboxselectedindex], conn);
dataset = new DataSet();
sqlAdapter.Fill(dataset, saka[listboxselectedindex]);
datagridview1.DataSource = null;
datagridview1.DataSource = dataset.Tables[saka[listboxselectedindex]];
更新:(这样做有效吗?)
foreach (DataRow zil in fare.Rows)
{
saka.Add(zil["table_name"].ToString());
// listBox1.Items.Add(zil["table_name"].ToString());
}
for (int n = 0;n < saka.count; n++)
{
sqlAdapter = new SqlDataAdapter("select * from " + saka[n] + " where durum = '4'", conn);
DataSet astana = new DataSet();
sqlAdapter.Fill(astana, saka[n]);
if (astana.Tables[0].Rows.Count > 0)
{
listBox1.Items.Add(saka[n]);
}
astana = null;
}
答案 0 :(得分:0)
是您的项目需要SqlDataAdapter吗? 如果没有,可能更容易使用实体框架,只需要做一些工作就可以对项目进行这些更改
这应该是两者的解决方案:
dataset.Tables[saka[listboxselectedindex]].AsEnumerable().Where(row => row["ColumnName"] == 1).ToList();
请注意,“ColumnName应更改为Column的名称以使其正常工作
答案 1 :(得分:0)
试试这个:
sqlAdapter = new SqlDataAdapter("SELECT * FROM " + saka[listboxselectedindex]+" where stts=@sttsValue", conn);
sqlAdapter.SelectCommand.Parameters.AddWithValue("@sttsValue",1);
dataset = new DataSet();
sqlAdapter.Fill(dataset, saka[listboxselectedindex]);
datagridview1.DataSource = null;
datagridview1.DataSource = dataset.Tables[saka[listboxselectedindex]];