| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1198 人关注过本帖
标题:[求助]Datagird 数据库绑定
只看楼主 加入收藏
zhuifengjian
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2006-12-31
收藏
 问题点数:0 回复次数:8 
[求助]Datagird 数据库绑定
不显示数据啊!!!!!!!!!!!请各位大侠帮帮忙!!!!!!!!!!!!
先谢谢了!!!!!!!!
Dim conStr As String
Dim conn As OleDbConnection
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim comm As OleDbCommand
Dim comStr As String
conStr = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("book\book.mdb")
conn = New OleDbConnection(conStr)
Try
comStr = "select * from guestbook"
comm = New OleDbCommand(comStr, conn)
da.SelectCommand = comm
conn.Open()
da.Fill(ds, "myinfo")
Catch ex As Exception
If Not ds.Tables Is Nothing Then
DataGrid1.DataSource = ds
DataGrid1.DataBind()
conn.Close()
End If
End Try
搜索更多相关主题的帖子: 数据库 绑定 Datagird Dim 
2007-01-01 19:08
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 

Try
End Try 的问题
很明显
Try
comStr = "select * from guestbook"
comm = New OleDbCommand(comStr, conn)
da.SelectCommand = comm
conn.Open()
da.Fill(ds, "myinfo")
Catch ex As Exception
If Not ds.Tables Is Nothing Then
DataGrid1.DataSource = ds
DataGrid1.DataBind()
conn.Close()
End If
End Try
Exception是一种特殊的类,呵呵
只有当Try和Catch之间的代码出现问题或不能执行时,才执行Catch Ex As Exception和End try 之间的代码
所以,建议:
将Try 和Catch ex As Exception之间的代码改成:
Try
comStr = "select * from guestbook"
comm = New OleDbCommand(comStr, conn)
da.SelectCommand = comm
conn.Open()
da.Fill(ds, "myinfo")
DataGrid1.DataSource=da.Table("myinfo")
Catch ex As Exception
....
如果不行,可以设置断点,一步一步调试既可


大家一起努力,共同打造未来!!
2007-01-01 23:12
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
If Not ds.Tables Is Nothing Then
DataGrid1.DataSource = ds
DataGrid1.DataBind()
.........
把这个放到Try里面去.

飘过~~
2007-01-02 17:05
zhuifengjian
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2006-12-31
收藏
得分:0 

谢谢大哥拉!!!!!!!!!!!
小弟初接触ASP
不过又出 了个问题!!!!!!!!!!!!!!!
从类型“DBNull”到类型“Boolean”的强制转换无效
异常详细信息: System.InvalidCastException: 从类型“DBNull”到类型“Boolean”的强制转换无效。

源错误:


行 71: If Not ds.Tables Is Nothing Then
行 72: DataGrid1.DataSource = ds
行 73: DataGrid1.DataBind()
行 74: conn.Close()
行 75: End If


代码:
Dim conStr As String
Dim conn As OleDbConnection
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim comm As OleDbCommand
Dim comStr As String
conStr = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("book\book.mdb")
conn = New OleDbConnection(conStr)
Try
comStr = "select * from guestbook"
comm = New OleDbCommand(comStr, conn)
da.SelectCommand = comm
conn.Open()
da.Fill(ds, "myinfo")
DataGrid1.DataSource = da.TableMappings("myinfo")
Catch ex As Exception
If Not ds.Tables Is Nothing Then
DataGrid1.DataSource = ds
DataGrid1.DataBind()
conn.Close()
End If

End Try

2007-01-02 18:38
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 

[CODE] Dim conStr As String
Dim conn As OleDbConnection
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim comStr As String
conStr = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("book\\book.mdb")
conn = New OleDbConnection(conStr)
comStr = "select * from guestbook"
Try
da = New OleDbDataAdapter(comStr, conn)
da.Fill(ds)
DataGrid1.DataSource = da.Tables[0]
DataGrid1.DataBind()
Catch ex As Exception
MessageBox.Show(ex.ToString())
finally
ds.Dispose();
End Try[/CODE]

[此贴子已经被作者于2007-1-2 23:53:39编辑过]


飘过~~
2007-01-02 23:52
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
Try catch 中的 catch部分的代码只有在出错的时候才能被执行到 楼上版主已经给你做了示例。

然而此处你程序的错误实在很有趣!你绑定数据库的代码是在Try中也就是如下

comStr = "select * from guestbook"
comm = New OleDbCommand(comStr, conn)
da.SelectCommand = comm
conn.Open()
da.Fill(ds, "myinfo")
DataGrid1.DataSource = da.TableMappings("myinfo")
只有这段代码出错 才会被捕获异常并且执行数据库绑定代码,而你的绑定同时也出错了!

出错的原因是什么呢?
1. 可能是conn没有open
2. Fill dataset失败
然而无论是哪种错 ds.tables都应是Nothing,那么为什么databind代码会被执行到呢?


光就系统报的这个错误来说,DBNULL是数据库的空类型 它不能和任何数据类型转换。你查看 你数据库中 guestbook表,看看你要选显示到grid的数据中有多少字段是允许为NULL的,然后你提交的sql查询就不能是select * from, 假如你要选出的第一个字段名字叫A,字符型,允许为NULL,就要写成Isnull(A,''),如果B是整型 就是Isnull(B,0).按照字段类型依次类推。
comStr = "select A= Isnull(A,''),B=Isnull(B,0)... from guestbook"这样的形式 保证从数据库中返回的结果不会包含DBNULL。

如果你觉得麻烦 可以直接修改数据库表结构,把所有的字段设置为NOT NULL,并且给每个字段指定一个Defual Value,这样也可以保证取出的数据不含NULL

2007-01-04 12:23
zhuifengjian
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2006-12-31
收藏
得分:0 

谢谢各位老大拉!!!!!!!!1

2007-01-04 17:16
zhaozhiming
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-1-18
收藏
得分:0 

操作語言,vb.net 2003 問題主要控件不會使用
Public Strds_report As String = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ds_report;Data Source=dscac;Use Procedure for Prepare=1;Auto Translate=False;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False" ‘連接SQL字符串變量

Dim rst1 As New ADODB.Recordset()
Dim MyDataSet As New DataSet
Dim MyAdpater As New OleDb.OleDbDataAdapter

Conds_report.open(strds_report) ‘連接sql數據庫
rst1.ActiveConnection = Conds_report
rst1.Open("SELECT * FROM product_days ") ‘sql語句,結果賦給rst1記錄集

MyAdpater.Fill(MyDataSet, rst1, "PROD_EDIT") ‘建立dataset
Me.DataGrid1.DataSource = MyDataSet.Tables("PROD_EDIT") “賦值給DATAGRID控件

問題1:我如何將datagrid的修改結果傳回到sql數據庫中?
問題2:我將程序打包后在客戶端不能正常使用,客戶端已安裝了dotnetframework及mdac27sp1.
問題3:如何設定datagrid1數據每欄欄寬.

2007-01-18 19:50
Viviwei
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:344
专家分:0
注 册:2006-4-11
收藏
得分:0 

好久没来了。里面又增加了很多专业人事哦!


爱上思考,爱上编程,爱上.net!
2007-01-18 22:31
快速回复:[求助]Datagird 数据库绑定
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013116 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved