c#将Access数据库中的数据按照查询条件导入datagridview
我现在可以将数据库整个导入datagridview,但我有一些查询条件,比如textbox与某一列的值相等,然后导入这些行,这样怎么写程序呢?要求写一个if语句判断后再导...
我现在可以将数据库整个导入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的查询功能,谢谢!!!!
回答的好会再追加分数!!! 展开
以下是我的代码:
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的查询功能,谢谢!!!!
回答的好会再追加分数!!! 展开
2个回答
展开全部
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、因为不知道你的商品条码是第几列,示例代码就不写了,你先试一下,有问题再提出来就好,希望以上建议能对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然限制了不改动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;
}
基本就是这样,希望对你有帮助,有疑问请追问或是Hi
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;
}
基本就是这样,希望对你有帮助,有疑问请追问或是Hi
追答
能够从控件中删除只是说明你的Rows.Remove()这一句代码成功执行了,数据库中的记录没有删除掉那就是SQL语句有问题,看了下你上面的代码,有几个建议:
1、没有必要用DataSet,你操作的就是一张表,DataTable就好了,省得写那么麻烦;
2、既然是删除选中行,那就不要用CurrentCell什么的,直接取SelectedRows中对应列的值;
3、因为不知道你的商品条码是第几列,示例代码就不写了,你先试一下,有问题再提出来就好,希望以上建议能对你有帮助
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询