`
wsql
  • 浏览: 11716123 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

获取数据库表结构和表数据的小程序(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

分享到:
评论

相关推荐

    vb.net开发的C/S结构超市管理系统

     本软件的内部功能主要为实现了vb程序设计语言与数据库的结合,以及部分API函数的调用。  2.3.2 外部功能 本软件具有外部功能包括以下几个内容: (1)销售管理:对超市的整个销售过程进行管理,包括收银员的登陆...

    自己写的获取表结构的小程序

    自己写的获取表结构和表数据的小程序,对于不方便直接访问数据库服务器的童鞋来说,可是方便了不少啊,呵呵。。。可以自己配置config文件来修改数据库连接字符串,程序用VB.net做成。可以直接打开debug中.exe运行。

    asp.net知识库

    利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    第ii部分 业务对象和数据访问第8章 数组、集合和泛型 311 8.1 数组 312 8.1.1 多维数组 313 8.1.2 ubound函数 314 8.1.3 redim语句 314 8.1.4 preserve关键字 315 8.2 集合 315 8.2.1 循环语句 317 ...

    精通sql结构化查询语句

    20.4.2 算术运算符的应用 20.4.3 表达式的应用 20.5 数据维护与触发器的应用 20.5.1 添加数据的实现 20.5.2 更新数据的实现 20.5.3 删除数据的实现 20.5.4 在VB.NET中应用触发器20.6 小结第21章 VB 6.0与SQL Server...

    ASP.NET的网页代码模型及生命周期

    在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,但是ASP.NET网站和ASP.NET应用程序开发过程和编译过程是有区别的。ASP.NET应用程序主要有以下特点: q 可以将ASP.NET应用程序拆分成多个项目以方便开发,管理和...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    实际上C#就一般的操作来说,只是区分大小写和多了一个分号这两点与VB.NET不同其他都差不多啊。在ASP里面我们读取数据就直接用RECORDSET,然后在HTML代码里面穿插就可以显示了,但是ASP.NET讲究的是代码分离,如果...

    《Visual Basic 2008应用程序开发实例精讲》全书所有实例程序源代码

    第11章 vb.net邮件发送实例260 11.1 实例功能说明260 11.2 设计思路与关键技术261 11.2.1 电子邮件收发协议简介261 11.2.2 关键技术点拨261 11.3 程序实现与代码263 11.4 实例总结265 第4篇 多媒体应用开发实例 第12...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    1.6 封装和数据隐藏 12 1.6.1 接口 12 1.6.2 实现 13 1.6.3 接口/实现范型的一个实际例子 13 1.6.4 接口/实现范型的模型 14 1.7 继承 15 1.7.1 超类和子类 16 1.7.2 抽象 16 1.7.3 is-a关系 17 1.8 多态 ...

    VB2008应用程序开发实例精讲(光盘文件)

    第11章 VB.NET邮件发送实例260 11.1 实例功能说明260 11.2 设计思路与关键技术261 11.2.1 电子邮件收发协议简介261 11.2.2 关键技术点拨261 11.3 程序实现与代码263 11.4 实例总结265 第4篇 多媒体应用开发实例 第...

    Visual Basic 2010入门经典(第6版)完整版 之2/2

     Visual Basic 2010是微软公司较为流行的VB.NET编程语言的最新版本,是Visual Studio 2010环境支持的几种语言之一。Visual Basic 2010的优势在于其易用性和高速度,利用该语言可以轻松、快捷地编写出Windows Forms...

    数据库商品销售管理系统课程设计.doc

    合理的数据库结构设计可以提高数据存储的 效率,保证数据的完整和一致。 数据库技术是由传统的文件系统发展而来的,从层次模型、网状模型发展到关系模型 。数据库技术是数据管理的最新技术,是计算机科学的一个重要...

    Visual Basic 2010入门经典(第6版)完整版 之1/2

     Visual Basic 2010是微软公司较为流行的VB.NET编程语言的最新版本,是Visual Studio 2010环境支持的几种语言之一。Visual Basic 2010的优势在于其易用性和高速度,利用该语言可以轻松、快捷地编写出Windows Forms...

    Access 2007 VBA宝典 1/4

     Access从一开始(大约14年前)就是一个关系型数据库程序,它在表中存储数据,并使用自己的查询、窗体和报表对数据进行排序、筛选、显示和打印。随着Office版本的升级,在Office组件(特别是Word、Excel和Outlook)...

    Access 2007 VBA宝典 4/4

     Access从一开始(大约14年前)就是一个关系型数据库程序,它在表中存储数据,并使用自己的查询、窗体和报表对数据进行排序、筛选、显示和打印。随着Office版本的升级,在Office组件(特别是Word、Excel和Outlook)...

    Access 2007 VBA宝典 3/4

     Access从一开始(大约14年前)就是一个关系型数据库程序,它在表中存储数据,并使用自己的查询、窗体和报表对数据进行排序、筛选、显示和打印。随着Office版本的升级,在Office组件(特别是Word、Excel和Outlook)...

    Access 2007 VBA宝典 2/4

     Access从一开始(大约14年前)就是一个关系型数据库程序,它在表中存储数据,并使用自己的查询、窗体和报表对数据进行排序、筛选、显示和打印。随着Office版本的升级,在Office组件(特别是Word、Excel和Outlook)...

    MySQL5.1参考手册官方简体中文版

    获取最新CHM及PDF版本,请访问:hemon.ecjtu.net 。 张伟,华东交通大学。 摘要 这是MySQL参考手册 它涉及MySQL 5.1至5.1.2-alpha版本。 文档生成于: 2005-11-15 ----------------------------------------...

    MySQL 5.1中文手冊

    8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM日志文件内容 8.13. perror:解释错误代码 8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. ...

Global site tag (gtag.js) - Google Analytics