VB.Net实现将文本文件中的数据自动插入数据库的小工具
2012-11-20 00:50
471 查看
1.原因:大家都遇到过需要手动输入大量数据到数据库中的任务(例如:客户委托将其人事管理系统的资料输入到数据库中),不但耗时而且无技术含量。
2.目的:节省时间,有空余时间承接其他软件设计任务,提高上级对自身的重视程度。
3.模拟:假设 Fu Chen接到一个任务。将某部门的人员的基本信息输入到数据库中由于种种原因需要手动输入。需要添加的字段分别简化为 人员编号,用户名,口令,性别,住
址。每个人员的信息均为一个单独的文本文件。只含有上述几个字段的信息每个字段占一行,字段名称和值用空格隔开。如图所示
为方便讲解我在此外利用了大家非常熟悉的Sqlserver2005 设计此表。可根据实际情况酌情更改。
4.分析:每个文本文件相当于一条记录(Row),而文本文件中的每行内容相当于某个具体字段。可看成 M X N 形式。
5.方案: 根据以上分析,设计表如上图片所示,需要注意的是若字段长度太小,会引发异常:
****************************************************
未处理 System.Data.SqlClient.SqlException
Class=16
ErrorCode=-2146232060
LineNumber=1
Message="将截断字符串或二进制数据。 语句已终止。"
Number=8152
**************************************************************
(1)首先读取一个文本文件的内容,处按行读取,加入到ARRAYLIST 或HASHTABLE中以方便向表中插入数据。
(2)操作数据库,将每行数据依次插入到相应表中。如此循环即可。任务完成后如图所示:
OK.现在具体代码如下所示:
*@Author : Fu Chen
*@Email:detion9@163.com
*@ 'QQ: 2512909458
*********************************************
2.目的:节省时间,有空余时间承接其他软件设计任务,提高上级对自身的重视程度。
3.模拟:假设 Fu Chen接到一个任务。将某部门的人员的基本信息输入到数据库中由于种种原因需要手动输入。需要添加的字段分别简化为 人员编号,用户名,口令,性别,住
址。每个人员的信息均为一个单独的文本文件。只含有上述几个字段的信息每个字段占一行,字段名称和值用空格隔开。如图所示
为方便讲解我在此外利用了大家非常熟悉的Sqlserver2005 设计此表。可根据实际情况酌情更改。
4.分析:每个文本文件相当于一条记录(Row),而文本文件中的每行内容相当于某个具体字段。可看成 M X N 形式。
5.方案: 根据以上分析,设计表如上图片所示,需要注意的是若字段长度太小,会引发异常:
****************************************************
未处理 System.Data.SqlClient.SqlException
Class=16
ErrorCode=-2146232060
LineNumber=1
Message="将截断字符串或二进制数据。 语句已终止。"
Number=8152
**************************************************************
(1)首先读取一个文本文件的内容,处按行读取,加入到ARRAYLIST 或HASHTABLE中以方便向表中插入数据。
(2)操作数据库,将每行数据依次插入到相应表中。如此循环即可。任务完成后如图所示:
OK.现在具体代码如下所示:
*@Author : Fu Chen
*@Email:detion9@163.com
*@ 'QQ: 2512909458
*********************************************
Imports System.IO Imports System.Data.SqlClient Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Dim iipath As String = "D:\\DemoTest_0100\\用户10001009.txt" '需要读取的文件夹 Dim ifile As FileInfo = Nothing '创建文件对象 'Dim reader As StreamReader = ifile.OpenText() '创建输入流 Dim reader As StreamReader = Nothing Dim ipath As String = "D:\\DemoTest_0100\\" '文本文件存路径(即人员基本信息) Dim ifileArr() As String = Directory.GetFiles(ipath) '存放文件名的数组 Dim isFinished As Boolean = False '文件读取完成标志 Try For i = 0 To ifileArr.Length - 1 ifile = New FileInfo(ifileArr(i)) '实例化文件对象 reader = ifile.OpenText() '实例化StreamReader If (Not isFinished) Then isFinished = F_Readfile(reader) End If 'Threading.Thread.Sleep(1000) isFinished = False Next Catch ex As ApplicationException ex.Message.ToString() Finally End Try End Sub Private Function F_Readfile(ByRef reader As StreamReader) As Boolean Using (reader) Dim sstr1 As String = reader.ReadLine() '执行按行读取文件内容 Dim myArr As ArrayList = New ArrayList() '创建ARRAYLIST对象,以加入每条记录内容 While (Not (sstr1 Is Nothing)) Try If (Not (sstr1.Trim().Equals(""))) Then myArr.Add(sstr1.Trim()) TextBox1.Text &= sstr1 & vbCrLf End If Catch ex As ApplicationException ex.Message.ToString() End Try sstr1 = reader.ReadLine() End While '--加入到HashTable中 F_WritetoDatabase(myArr) F_Readfile = True End Using F_Readfile = False End Function Private Function F_WritetoDatabase(ByRef myArr As ArrayList) As Boolean Dim myhash As Hashtable = New Hashtable() Dim myIndex As Integer '定位索引值 For i = 0 To myArr.Count - 1 '加入到HashTable中 myIndex = myArr(i).ToString().Trim().IndexOf(" ") '每个字段的名称和值按空格分开 myhash.Add(i + 1, Mid(myArr(i).ToString(), myIndex + 1)) 'Key与Value形如 1=>Value Next For i = 1 To myhash.Count TextBox2.Text &= myhash(i).ToString().Trim() & vbCrLf '测试用 Next '---将HashTable的Values内容加入到数据库对应的字段中 Dim connectionString As String = "Server=.\SQLEXPRESS;Initial Catalog=DemoTest_0100;Persist Security Info=True;User Id=sa;Pwd=admin123456;" Using connection As New SqlConnection(connectionString) '打开数据库连接 connection.Open() If (connection.State = ConnectionState.Open) Then 'MsgBox("稻香") End If Dim strInsert As String = "insert into tb_User2(uId,uName,uPassword,uGender,uAddress) " & _ "values(@uId,@uName,@uPassword,@uGender,@uAddress)" '揽入到tb_User2中的Sql语句 Dim cmdInsert As SqlCommand = New SqlCommand(strInsert, connection) '创建Command对象 Dim strField() As String = {"OK", "@uId", "@uName", "@uPassword", "@uGender", "@uAddress"} For i = 1 To myhash.Count cmdInsert.Parameters.AddWithValue(strField(i), myhash(i).ToString().Trim()) '读取的每行记录插入表中 Next Try cmdInsert.ExecuteNonQuery() '执行具体的插入查询动作 Catch ex As ApplicationException ex.Message.ToString() End Try End Using End Function6.综上所述,我们在工作中难免会接到此类任务,此处愿开启思路。更希望得到大家的更简单的解决方案。此处望大家多给些建议。以完成更多更有效率的程序,更上一层楼。
相关文章推荐
- VB .NET 读取数据库数据处理后再循环插入数据库
- asp.net 读取文本文件并插入数据库的实现代码
- asp.net 读取文本文件并插入数据库的实现代码
- [VB.NET]插入数据到数据库问题!!
- [VB.NET]求如何用VB.NET语言+ACCECC数据库实现一个对会员等级自动升级功能!
- asp.net 读取文本文件并插入数据库的实现代码
- easyui复选框树动态加载后台数据,实现自动选中数据库中数据。后台语言是.NET
- vb 利用ADO.Net实现数据库的连接,修改,删除,插入操作
- vb.net 利用ADO实现数据库的删除、插入、修改操作(adodb)
- 用java实现从文本文件批量导入数据至数据库
- 小学生之Hibernate插入数据修改数据使用数据库默认值的实现
- (二)不同数据库间的交叉数据查询插入等操作实现
- Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。
- 详解vb.net实现图片以二进制形式上传和读取到数据库
- 关于VB.NET项目打包后数据库无法写入数据的解决方案
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- VB2005(1、使用ADO.NET访问数据库--Windows窗体中的数据体系结构)
- vb.net向acces数据库添加记录,怎么用代码实现?
- VB.net 程序需连接Oralce数据库查询 日志提示“数据类型不被支持”
- SSM+mybatis数据库实现百万数据分页取出并分页插入Excel中