我现在可以将数据库整个导入datagridview,但我有一些查询条件,比如textbox与某一列的值相等,然后导入这些行,这样怎么写程序呢?要求写一个if语句判断后再导入。
以下是我的代码:
private void button1_Click(object sender, EventArgs e)
{
dbconn.Open();
string sq1 = "select * from TestData";
OleDbDataAdapter adp = new OleDbDataAdapter(sq1, dbconn);
ds.Clear();
adp.Fill(ds, "TestData");
if (textBox1.Text == "" || textBox2.Text == "") MessageBox.Show("请输入类名和商品名称!");
else
{
int i;
for (i = 1; i < ds.Tables["TestData"].Rows.Count; i++)
{
if (textBox1.Text == ds.Tables["TestData"].Rows[i][0].ToString() && textBox2.Text == ds.Tables["TestData"].Rows[i][3].ToString())
dataGridView1.DataSource = ds.Tables["TestData"].DefaultView; //导入了全部数据库,但我只想导入符合条件的那几行
}
}
}
请大神在以上基础上修改,不要直接用Access的查询功能,谢谢!!!!
回答的好会再追加分数!!!
c#将Access数据库中的数据按照查询条件导入datagridview
答案:2 悬赏:50 手机版
解决时间 2021-02-19 01:17
- 提问者网友:我是我
- 2021-02-18 04:22
最佳答案
- 五星知识达人网友:拜訪者
- 2021-02-18 05:21
c#将Access数据库中的数据按照查询条件导入datagridview的相关说明如下:
既然限制了不改动SQL这些,那我就直接写最后else里面的代码了,前面就不复制了:
else
{
DataTable dt = ds.Tables["TestData"].Clone(); //复制表结构
foreach(DataRow dr in ds.Tables["TestData"].Rows) //遍历源表
if(dr[0].ToString()==textBox1.Text.Trim()&&dr[3].ToString()==textBox2.Text.Trim())
dt.ImportDataRow(dr); //添加符合条件的行
dataGridView1.DataSource=dt.DefaultView;
}
能够从控件中删除只是说明你的Rows.Remove()这一句代码成功执行了,数据库中的记录没有删除掉那就是SQL语句有问题,看了下你上面的代码,有几个建议:
1、没有必要用DataSet,你操作的就是一张表,DataTable就好了,省得写那么麻烦;
2、既然是删除选中行,那就不要用CurrentCell什么的,直接取SelectedRows中对应列的值;
3、因为不知道你的商品条码是第几列,示例代码就不写了,你先试一下,有问题再提出来就好,希望以上建议能对你有帮助
既然限制了不改动SQL这些,那我就直接写最后else里面的代码了,前面就不复制了:
else
{
DataTable dt = ds.Tables["TestData"].Clone(); //复制表结构
foreach(DataRow dr in ds.Tables["TestData"].Rows) //遍历源表
if(dr[0].ToString()==textBox1.Text.Trim()&&dr[3].ToString()==textBox2.Text.Trim())
dt.ImportDataRow(dr); //添加符合条件的行
dataGridView1.DataSource=dt.DefaultView;
}
能够从控件中删除只是说明你的Rows.Remove()这一句代码成功执行了,数据库中的记录没有删除掉那就是SQL语句有问题,看了下你上面的代码,有几个建议:
1、没有必要用DataSet,你操作的就是一张表,DataTable就好了,省得写那么麻烦;
2、既然是删除选中行,那就不要用CurrentCell什么的,直接取SelectedRows中对应列的值;
3、因为不知道你的商品条码是第几列,示例代码就不写了,你先试一下,有问题再提出来就好,希望以上建议能对你有帮助
全部回答
- 1楼网友:野味小生
- 2021-02-18 06:31
//首先引入
using system.data;
using system.data.oledb;
oledbconnection con = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=f:\tem\green_for_test.mdb"); //然后实例化数据库连接对象,其中data source=后面是你access数据库的路径
oledbdataadapter adapter = new oledbdataadapter("select * from access_database", con); //要查询的话就实例化oledbdataadapter对象,里面两个参数分别是你的sql语句,上面实例化的数据库连接对象con,oledbdataadapter对象会自动管理连接对象的关闭
datatable table = new datatable(); //然后定义datatable对象,用于存放查询结果
adapter.fill(table); //通过adapter 对象的fill方法执行查询,同时将结果放入table中
datagridview.datasource = table; //然后就是将table绑定到datagridview中
//完成,希望能帮到你
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯