zoukankan      html  css  js  c++  java
  • 获取数据库表结构和表数据的小程序(VB.NET版本)

              以前在项目实施过程中经常要到客户方去进行调查。由于客户的生产网络环境是封闭的,而且不能去查看真实的数据库,因此做了个小程序来采集数据库中指定表的数据和指定表的结构。代码如下:

              'GetTableStuct  获取表的结构
        Private Function GetDataTableSchame(ByVal strTableName As String) As DataSet

            On Error GoTo theError

            InitialConnectionString()
            Dim dba As New SqlDataProvider.DataBaseAccess(con_SPEC_DB)


            Dim dsTableSchame As New DataSet
            Dim strSql As String
            'Get Table Schame
            strSql = "SELECT syscolumns.name as columnname,systypes.name as columntype,syscolumns.isnullable," & _
                     "syscolumns.length FROM syscolumns, systypes  " & _
                     "WHERE(syscolumns.xusertype = systypes.xusertype) " & _
                     " AND syscolumns.id = object_id('" & strTableName & "') "

            dsTableSchame = dba.FillDataset(strSql, CommandType.Text)

            Return dsTableSchame
            Exit Function
    theError:
            MessageBox.Show("获取表" & strTableName & "的结构失败!")
            Return Nothing
            Exit Function

        End Function


        'GetTableData  获取表的数据
        Private Function GetTableData(ByVal strTableName As String) As DataSet

            On Error GoTo theError

            InitialConnectionString()
            Dim dba As New SqlDataProvider.DataBaseAccess(con_SPEC_DB)


            Dim dsTableData As New DataSet
            Dim strSql As String
            'Get Table Schame
            strSql = "select  * from  " & strTableName

            dsTableData = dba.FillDataset(strSql, CommandType.Text)

            Return dsTableData
            Exit Function
    theError:
            MessageBox.Show("获取表" & strTableName & "的数据失败!")
            Return Nothing
            Exit Function

        End Function

    '将表的结构写入到文件中

     Private Function WriteTableStruct(ByVal strTableName As String, ByVal fs As FileStream, ByVal sw As StreamWriter, ByVal ds As DataSet) As Boolean

            If ds Is Nothing Then
            Else
                sw.WriteLine(ds.Tables(0).Columns(0).ColumnName & "," & ds.Tables(0).Columns(1).ColumnName & "," & _
                    ds.Tables(0).Columns(2).ColumnName & "," & ds.Tables(0).Columns(3).ColumnName)
                Dim i As Int16
                For i = 0 To ds.Tables(0).Rows.Count - 1
                    sw.WriteLine(ds.Tables(0).Rows(i)(0).ToString() & "," & ds.Tables(0).Rows(i)(1).ToString() & "," & _
                    ds.Tables(0).Rows(i)(2).ToString() & "," & ds.Tables(0).Rows(i)(3).ToString())
                Next
                sw.WriteLine("--------------------------------------")
                sw.WriteLine()
            End If

        End Function

    '将表的数据写入到文件中
        Private Function WriteTableData(ByVal strTableName As String, ByVal fs As FileStream, ByVal sw As StreamWriter, ByVal ds As DataSet) As Boolean

            If ds Is Nothing Then
            Else
                Dim j As Int16
                For j = 0 To ds.Tables(0).Columns.Count - 1
                    If j = ds.Tables(0).Columns.Count - 1 Then
                        sw.Write(ds.Tables(0).Columns(j).ColumnName)
                        sw.WriteLine()
                    Else
                        sw.Write(ds.Tables(0).Columns(j).ColumnName & ",")
                    End If
                Next

                Dim i As Int16
                For i = 0 To ds.Tables(0).Rows.Count - 1
                    For j = 0 To ds.Tables(0).Columns.Count - 1
                        If j = ds.Tables(0).Columns.Count - 1 Then
                            sw.Write(ds.Tables(0).Rows(i)(j).ToString())
                            sw.WriteLine()
                        Else
                            sw.Write(ds.Tables(0).Rows(i)(j).ToString() & ",")
                        End If
                    Next
                Next
                sw.WriteLine("--------------------------------------")
                sw.WriteLine()
            End If

        End Function


    ‘调用上面程序的Demo代码如下:


    ’获取表结构的代码

    Private Sub btnGetTableStruct_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetTableStruct.Click

            On Error GoTo theError

            Dim strPath As String
            strPath = System.Windows.Forms.Application.StartupPath

            'Create New File
            Dim strOutputFileName As String
            strOutputFileName = "TableStruct-" + DateTime.Now.ToString("yyyyMMddhhmmss")
            strOutputFileName = strPath & "\" & strOutputFileName
            Dim fs As System.IO.FileStream = New System.IO.FileStream(strOutputFileName & ".csv", IO.FileMode.CreateNew, IO.FileAccess.Write)
            Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(fs)

            Dim ds As New DataSet
            ds = Nothing
            Dim strTableName As String
            strTableName = "Test"
            sw.WriteLine(strTableName & "表结构如下:")
            ds = GetDataTableSchame(strTableName)
            WriteTableStruct(strTableName, fs, sw, ds)
            ds.Clear()


            sw.Close()
            fs.Close()

            MessageBox.Show("生成表结构文件成功!")
            Exit Sub

    theError:
            MessageBox.Show("生成表结构文件失败!")
            sw.Close()
            fs.Close()
            Exit Sub


        End Sub


    '获取表数据的代码

    Private Sub btnGetTableData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click

            On Error GoTo theError

            Dim strPath As String
            strPath = System.Windows.Forms.Application.StartupPath

            'Create New File
            Dim strOutputFileName As String
            strOutputFileName = "TableData-" + DateTime.Now.ToString("yyyyMMddhhmmss")
            strOutputFileName = strPath & "\" & strOutputFileName
            Dim fs As System.IO.FileStream = New System.IO.FileStream(strOutputFileName & ".csv", IO.FileMode.CreateNew, IO.FileAccess.Write)
            Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(fs)

            Dim ds As New DataSet
            ds = Nothing
            Dim strTableName As String
            strTableName = "Test"
            sw.WriteLine(strTableName & "表数据如下:")
            ds = GetTableData(strTableName)
            WriteTableData(strTableName, fs, sw, ds)
            ds.Clear()

             sw.Close()
            fs.Close()

            MessageBox.Show("生成表数据文件成功!")
            Exit Sub

    theError:
            MessageBox.Show("生成表数据文件失败!")
            sw.Close()
            fs.Close()
            Exit Sub

        End Sub

  • 相关阅读:
    vue2.0 移动端,下拉刷新,上拉加载更多 封装组件
    Mac 安装RN android开发环境
    JavaScript 复杂判断的更优雅写法
    JSBridge的原理及使用
    FlatList列表组件的使用
    React Native ScrollView中TextInput焦点问题
    pod update报错(Cocoapods: Failed to connect to GitHub to update the CocoaPods/Specs specs repo)报错解决方案
    如何在pc端通过adb连接手机调试,不用usb数据线
    react学习之搭建后台管理系统
    node+koa2+axios踩坑记
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2233421.html
Copyright © 2011-2022 走看看