为什么绑定后却一条记录都显示不出来?
sql ="select * from Products where PrdName like '*0.3*' order by Uptime desc";我用这条 SQL 语句 在 ACCESS 数据库里可以选出记录来,
可是用常规的绑定到 DataGrid 里却一条记录都没显示出来,我很纳闷,为啥?
void bindList()
{
string sql;
sql ="select * from Products where PrdName like '*0.3*' order by Uptime desc";
db=new DataBase();
db.OpenConn();//这里打开数据库联接
this.DataGrid1.DataSource=db.RunSqlReturnDataSet(sql);
this.DataGrid1.DataBind();
db.DisposeConn();这里释放数据库链接
}
public DataSet RunSqlReturnDataSet(string Sql)
{
DataSet ds=new DataSet();
if(this.Conn==null)
{
this.setConStr();
this.OpenConn();
}
OleDbDataAdapter dap=new OleDbDataAdapter(Sql,this.Conn);
dap.Fill(ds);
dap.Dispose();
return ds;
}
--------------------编程问答-------------------- 好像需要绑定到table吧
返回值是不是要改回DataTable
public DataTable RunSqlReturnDataSet(string Sql) --------------------编程问答-------------------- 晕...跟这个有关系? --------------------编程问答-------------------- 没有,自己跟下程序就知道了 --------------------编程问答-------------------- 晕...跟不出来啊? --------------------编程问答-------------------- dap.Dispose();
这个不需要,DataAdapter可以自己释放的。
1 你应该使用调试逐步执行跟踪看看,
建议断点设置在这里。
OleDbDataAdapter dap=new OleDbDataAdapter(Sql,this.Conn);
dap.Fill(ds);
2 如果实在找不出原因建议通过datagrid直接绑定数据库。在datagrid右上的快捷菜单中绑定。默认情况可以显示全部数据。如果你还需要实现更多的查询,可以在dataset对象的设计视图中添加Adapter的配置。 --------------------编程问答-------------------- 如果全部数据选出来绑定倒是没问题,就是选"like"这种的SQL语句就没记录,可是在数据库里却能显示出来结果,真是纳闷 --------------------编程问答-------------------- sql = "select * from Products where PrdName like '*0.3* ' order by Uptime desc ";
改为:
string a = "0.3";
sql = "select * from Products where PrdName like '*”+a+“* ' order by Uptime desc ";
试试。 --------------------编程问答-------------------- this.DataGrid1.DataSource=db.RunSqlReturnDataSet(sql).DefaultView;
--------------------编程问答-------------------- 是要放在dataTable里的
我是初学 不是很能看懂别人写的风格 但是我帮定的时候都是打开数据库后~
db.adp.Fill(db.ds,"PrdName")
this.DataGrid1.DataSource=db.ds.Table["PrdName"];
this.DataGrid1.DataBind;
要先把数据放到dataTable里才能绑定到dataGrid1,dpdownlist....里 --------------------编程问答-------------------- ds.Table[0] 先看看这个table有数据没。有的话。
this.DataGrid1.DataSource=db.ds.Table[0];
this.DataGrid1.DataBind();
肯定应该没啥问题了。
--------------------编程问答-------------------- 以上方法均试过,都不行 --------------------编程问答-------------------- DataSource 可以是DataSet或支持IList接口的东东
如果使用DataSet做为DataSource,请设置DataMember属性为需要显示的DataTable名称 --------------------编程问答-------------------- 如果以上的方法都不行的话,你就换个思路.
也许是你的DataGrid1设置有问题. --------------------编程问答-------------------- sql ="select * from Products where PrdName like '%0.3%' order by Uptime desc";
这样就可以了,不知道为什么,是不是.NET编译的问题而不认"*"号?
可是"*"号在ACCESS里却是通配符啊 --------------------编程问答-------------------- 自己监视一下看看 dataset 中是不是有数据.没有就是sql的问题吧
补充:.NET技术 , C#