首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

TreeView数据库绑定有关问题 急

2012-01-05 
TreeView数据库绑定问题 急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!先谢谢各位了!

TreeView数据库绑定问题 急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!
先谢谢各位了!!!!

问题:
      根节点显示出来了,子节点出错.我查了半天发现是下面这句(标注******的)没执行,错误提示:未将对象引用设置到对象实例.

表有两个

"学期 "表
学期编号   学期名称
    1               aaaa
    2               bbbb
    3               cccc

"考试 "表
考试编号   学期编号   考试名称   考试信息
    1                 1                   ddd             eee
    2                 1                   fff             ggg
    3                 2                   hhh             iii

Imports   System.Data
Imports   System.Data.OleDb
Public   Class   Form2
        Inherits   System.Windows.Forms.Form


'找出树中当前节点的级数
Public   Function   NodeLevel(ByVal   n   As   TreeNode)   As   Byte    
                Dim   i   As   Byte   =   1
                Do   Until   n.Parent   Is   Nothing
                        n   =   n.Parent
                        i   +=   1
                Loop
                Return   i
End   Function

Private   Sub   Form2_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load
                Dim   strConn   As   String   =   "provider=Microsoft.jet.OLEDB.4.0;Data   Source=信息.mdb "
                Dim   objConn   As   New   OleDbConnection(strConn)
                Dim   objCmd   As   New   OleDbCommand
                Dim   strCmd   As   String

                Try
                        objConn.Close()
                        objConn.Open()

                        strCmd   =   "select   *   from   学期 "
                        objCmd.CommandText   =   strCmd
                        objCmd.Connection   =   objConn
                        Dim   mysqlreader   As   OleDbDataReader   =   objCmd.ExecuteReader



                        TreeView1.Nodes.Clear()

                        While   mysqlreader.Read()

                                Dim   tree_root   As   New   TreeNode

                                tree_root.Tag   =   mysqlreader.GetString(0)      

                                tree_root.Text   =   mysqlreader.GetString(1)  
                               
                                TreeView1.Nodes.Add(tree_root)

                        End   While

                Catch   ex   As   Exception

                        MessageBox.Show(ex.ToString,   "数据表根节点载入错误 ")

                Finally

                        objConn.Close()

                End   Try

                TreeView1.ExpandAll()

                TreeView1.Select()

        End   Sub

Private   Sub   TreeView1_AfterSelect(ByVal   sender   As   System.Object,   ByVal   e   As   System.Windows.Forms.TreeViewEventArgs)   Handles   TreeView1.AfterSelect

                Dim   strConn   As   String   =   "provider=Microsoft.jet.OLEDB.4.0;Data   Source=信息.mdb "
                Dim   objConn   As   New   OleDbConnection(strConn)
                Dim   objCmd   As   New   OleDbCommand
                Dim   strCmd   As   String
                If   NodeLevel(e.Node).ToString   =   "1 "   Then
                        If   e.Node.GetNodeCount(False)   =   0   Then
                                strCmd   =   "select   *   from   考试   where   学期编号= ' "   &e.Node.Tag   &   " ' "
                                    Try

                                        objConn.Open()
                                        objCmd.Connection   =   objConn


                                        objCmd.CommandText   =   strCmd
                                        Label1.Text   =   strCmd
    **************************************************************************                               Dim   objReader   As   OleDbDataReader   =   objCmd.ExecuteReader
**************************************************************************

                                        While   objReader.Read()

                                                Dim   leaf_node   As   TreeNode
                                                leaf_node.Tag   =   objReader.GetString(0)
                                                leaf_node.Text   =   objReader.GetString(2)
                                                TreeView1.SelectedNode.Nodes.Add(leaf_node)
                                        End   While
                                Catch   ex   As   Exception
                                        MessageBox.Show(ex.ToString,   "数据表子节点载入错误 ")
                                Finally
                                        objConn.Close()
                                End   Try

                        End   If
                End   If
        End   Sub


End   Class

[解决办法]
先定义跟数据库打交道的:

Public Class DataBase
Private Const ConnectionStringFormat As String = _
"provider=Microsoft.jet.OLEDB.4.0;Data Source={0} "

Private mdb As String = "信息.mdb "

Public WriteOnly Property File() As String
Set(ByVal value As String)
mdb = value
End Set
End Property

Private Function GetConnection() As OleDb.OleDbConnection
Return New OleDb.OleDbConnection(String.Format(ConnectionStringFormat, mdb))
End Function



Private Function GetCommand(ByVal sql As String) As OleDb.OleDbCommand
Return New OleDb.OleDbCommand(sql, GetConnection)
End Function

Private Function GetDataAdapter(ByVal sql As String) As OleDb.OleDbDataAdapter
Return New OleDb.OleDbDataAdapter(GetCommand(sql))
End Function

Public Sub LoadDataSet(ByVal sql As String, ByVal ds As DataSet)
Using dataAdapter As OleDb.OleDbDataAdapter = GetDataAdapter(sql)
dataAdapter.Fill(ds)
End Using
End Sub

End Class

热点排行