当前位置: 首页 > 图文教程 > .Net技术 > VB.NET > 用VB.Net读写数据库

VB.NET
大话“基于对象”与“面向对象”
VB 内存分配与流读写 代码
VB.NET语法基础
vb.net与c#.net区别
用VB.Net读写数据库
百万程序员的苦恼-选择VB.NET还是C#
VB.net 多线程实例
VB.NET也区会大小写
VB.NET 2005编写定时关机程序
VB.NET控件编程定制拦截击键动作
如何实现.net程序的进程注入
VB.NET 菜单设计初级入门
VB.NET中关于DataGrid颜色的自定义
VB网络编程中Winsock的使用
VB.net编程教程:编写文字加解密程序
VB.NET中快速访问注册表技巧
VB.NET:在VB.NET中串行化对象
VB.NET:在 VB.NET 编程中使用数组
VB.NET:VB.NET路在何方?
大话“基于对象”与“面向对象”

VB.NET 中的 用VB.Net读写数据库


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 115 ::
收藏到网摘: n/a

 

'//
'// Name:用VB.Net读写数据库
'// Author:Q&f
'// Email:[email protected]
'//

Imports System.Data.Odbc  ' [/ Imports System.Data.OleDb/ Imports System.Data.SqlClient(三者在使用方法上基本上相同)]
 
    '// 显示数据
    Private Sub ShowData()
        Dim Cnn As OdbcConnection
        Dim Cmd As OdbcCommand
        Dim Da As OdbcDataAdapter
        Dim Ds As DataSet
        Dim intIndex As Integer

        '// 连接到数据库
        Cnn = New OdbcConnection
        Cnn.ConnectionString = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.MDB)};" & _
                            "DBQ=" & Server.MapPath("database/database.mdb") & ";UID=;PWD=;"       
        Cnn.Open()

        Cmd = New OdbcCommand
        Cmd.Connection = Cnn
        Cmd.CommandType = CommandType.Text

        Da = New OdbcDataAdapter
        Ds = New DataSet
        Da.SelectCommand = Cmd

        '// 注意以下语句可以将不同SQL语句执行结果添加到同一个表中
        Da.SelectCommand.CommandText = "SELECT ID,Title,Issuer,IssueDate,DepName AS Range " & _
                                       "FROM IssueInforTable,DepartmentTable " & _
                                       "WHERE IssueInforTable.DepID = DepartmentTable.DepID"
        Da.Fill(Ds, "IssueInforTable")
        Da.SelectCommand.CommandText = "SELECT ID,Title,Content,Issuer,IssueDate,Range " & _
                                       "FROM IssueInforTable WHERE Range ='ALL'"
        Da.Fill(Ds, "IssueInforTable")

        If Ds.Tables("IssueInforTable").Rows.Count > 0 Then
            DataGrid1.EditItemIndex = -1
            DataGrid1.CurrentPageIndex = 0
            DataGrid1.DataSource = Ds
            DataGrid1.DataBind()
            txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
            lblInfor.Text = "记录总数:" & Ds.Tables("IssueInforTable").Rows.Count & _
                            "条.当前,第" & DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."
        Else
            CreateTempTable()
            txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
            lblInfor.Text = "没有找到任何相关记录"
        End If
        '// 保存数据集
        Session("DataSet") = Ds
        '// 保存记录总数
        Session("RecordCount") = Ds.Tables("IssueInforTable").Rows.Count

        Ds.Dispose()
        Da.Dispose()
        Cmd.Dispose()
        Cnn.Dispose()

    End Sub

  

    '// 显示数据
    Private Sub ShowData1()
        Dim Cnn As OdbcConnection
        Dim Cmd As OdbcCommand
        Dim Da As OdbcDataAdapter
        Dim Ds As DataSet
        Dim strSQL As String

        '// 连接到数据库
        Cnn = New OdbcConnection
        Cnn.ConnectionString = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.MDB)};" & _
                               "DBQ=" & Server.MapPath("database/database.mdb") & ";UID=;PWD=;"       
        Cnn.Open()

        strSQL = "SELECT ID,Title,Issuer,IssueDate FROM IssueInforTable ORDER BY IssueDate DESC"
        Cmd = New OdbcCommand
        Cmd.Connection = Cnn
        Cmd.CommandType = CommandType.Text
        Cmd.CommandText = strSQL

        Da = New OdbcDataAdapter
        Da.SelectCommand = Cmd
        Ds = New DataSet

        Da.Fill(Ds, "IssueInforTable")

        If Ds.Tables("IssueInforTable").Rows.Count > 0 Then
            DataGrid1.EditItemIndex = -1
            DataGrid1.CurrentPageIndex = 0
            DataGrid1.DataSource = Ds
            DataGrid1.DataBind()
            txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
            lblInfor.Text = "记录总数:" & Ds.Tables("IssueInforTable").Rows.Count & _
                            "条.当前,第" & DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."
        Else
            DataGrid1.EditItemIndex = -1
            DataGrid1.CurrentPageIndex = 0
            DataGrid1.DataSource = Ds
            DataGrid1.DataBind()
            txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
            lblInfor.Text = "没有找到任何相关记录"
        End If

        '// 保存数据集
        Session("DataSet") = Ds
        '// 保存记录总数
        Session("RecordCount") = Ds.Tables("IssueInforTable").Rows.Count

        Ds.Dispose()
        Da.Dispose()
        Cmd.Dispose()
        Cnn.Dispose()

    End Sub

   

    '// 创建一个临时表,用于添加内容
    Private Sub CreateTempTable()
        Dim Dt As DataTable
        Dim Dr As DataRow

        '// 创建数据表
        Dt = New DataTable
        Dt.Columns.Add(New DataColumn("ID", GetType(String)))
        Dt.Columns.Add(New DataColumn("Title", GetType(String)))
        Dt.Columns.Add(New DataColumn("Issuer", GetType(String)))
        Dt.Columns.Add(New DataColumn("IssueDate", GetType(String)))
        Dt.Columns.Add(New DataColumn("Range", GetType(String)))

        '// 生成一新行
        Dr = Dt.NewRow()
        Dr(0) = "-"
        Dr(1) = "-"
        Dr(2) = "-"
        Dr(3) = "-"
        Dr(4) = "-"
        '// 向数据表添加行
        Dt.Rows.Add(Dr)

        '// 绑定数据源
        DataGrid1.EditItemIndex = -1
        DataGrid1.CurrentPageIndex = 0
        DataGrid1.DataSource = New DataView(Dt)
        DataGrid1.DataBind()

        Dr = Nothing
        Dt = Nothing

    End Sub

    '// 分页显示,页面改变
    Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, & _
        ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
        On Error Resume Next

        DataGrid1.CurrentPageIndex = e.NewPageIndex
        DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
        DataGrid1.DataBind()
        txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
        lblInfor.Text = "记录总数:" & Session("RecordCount") & "条.当前,第" &  _
        DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."

    End Sub

    '// 跳转到指定页
    Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
        On Error Resume Next

        If IsNumeric(txtPage.Text.Trim) = True Then
            Dim intPage As Integer
            intPage = (CInt(txtPage.Text.Trim))
            If intPage > 0 And intPage <= DataGrid1.PageCount Then
                DataGrid1.CurrentPageIndex = intPage - 1
                DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
                DataGrid1.DataBind()
            End If
        End If
        txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
        lblInfor.Text = "记录总数:" & Session("RecordCount") & "条.当前,第" &  _
        DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."

    End Sub

    '// 第一页
    Private Sub btnFirstPage_Click(ByVal sender As System.Object, & _
        ByVal e As System.EventArgs) Handles btnFirstPage.Click
        On Error Resume Next

        DataGrid1.CurrentPageIndex = 0
        DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
        DataGrid1.DataBind()
        txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
        lblInfor.Text = "记录总数:" & Session("RecordCount") & "条.当前,第" &  _
        DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."

    End Sub

    '// 上一页
    Private Sub btnPrePage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrePage.Click
        On Error Resume Next
        Dim intPage As Integer

        intPage = DataGrid1.CurrentPageIndex
        intPage = intPage - 1
        If intPage <= 0 Then
            DataGrid1.CurrentPageIndex = 0
            DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
            DataGrid1.DataBind()
        Else
            DataGrid1.CurrentPageIndex = intPage
            DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
            DataGrid1.DataBind()
        End If
        txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
        lblInfor.Text = "记录总数:" & Session("RecordCount") & "条.当前,第" & _
                     DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."

    End Sub

    '// 下一页
    Private Sub btnNextPage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNextPage.Click
        On Error Resume Next
        Dim intPage As Integer

        intPage = DataGrid1.CurrentPageIndex
        intPage = intPage + 1
        If intPage >= DataGrid1.PageCount Then
            DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1
            DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
            DataGrid1.DataBind()
        Else
            DataGrid1.CurrentPageIndex = intPage
            DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
            DataGrid1.DataBind()
        End If
        txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
        lblInfor.Text = "记录总数:" & Session("RecordCount") & "条.当前,第" &  _
        DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."

    End Sub

    '// 最后一页
    Private Sub btnLastPage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLastPage.Click
        On Error Resume Next

        DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1
        DataGrid1.DataSource = CType(Session("DataSet"), DataSet)
        DataGrid1.DataBind()
        txtPage.Text = CStr(DataGrid1.CurrentPageIndex + 1)
        lblInfor.Text = "记录总数:" & Session("RecordCount") & "条.当前,第" &  _
        DataGrid1.CurrentPageIndex + 1 & "页,总计" & DataGrid1.PageCount & "页."

    End Sub

    '// 验证用户是否存在
    Public Function UserLoginVerifying(ByVal strUserName As String, ByVal strPassword As String) As Boolean
        On Error GoTo ErrorHandler
        Dim Cnn As OdbcConnection
        Dim Cmd As OdbcCommand
        Dim Dr As OdbcDataReader
        Dim Flag As Boolean

        Cnn = New OdbcConnection
        Cnn.ConnectionString = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.MDB)};" & _
                               "DBQ=" & Server.MapPath("database/database.mdb") & ";UID=;PWD=;"       
        Cnn.Open()

        Cmd = New OdbcCommand
        Cmd.Connection = Cnn
        Cmd.CommandType = CommandType.Text
        Cmd.CommandText = "SELECT UserID,UserName,UserPwd,DepartmentTable.DepID AS DepID,DepName FROM " & _
                           "UserInforTable,DepartmentTable " & _
                           "WHERE UserInforTable.DepID=DepartmentTable.DepID"
        Dr = Cmd.ExecuteReader()
        If Dr.HasRows = True Then
            Flag = False
            Do While Dr.Read
                If (StrComp(Trim(Dr.GetString(1)), Trim(strUserName), CompareMethod.Binary) = 0) And _
                   (StrComp(Trim(Dr.GetString(2)), Trim(strPassword), CompareMethod.Binary) = 0) Then
                    Flag = True
                    Exit Do
                End If
            Loop
        Else   
            Flag = False
        End If
        
        Dr.Close()
        Cmd.Dispose()
        Cnn.Dispose()

        If Flag = True Then
            Return True
        Else
            Return False
        End If

     End Function