将数据导出到文本文件,并从文本文件导入数据
所谓把数据导出到文本文件,其实就是把数据作为文本以一定格式写入文本文件。然后,把文件里的文本读出来,还原成一行一行一列一列的数据,之后放入数据集。下面这段程序定义了一个窗体。窗体中有两个
DataGrid
和两个
DataSet
。第一个
DataGrid
绑定到第一个
DataSet
的
employees
表,第二个
DataGrid
绑定到第二个
DataSet
的
employees
表。方法
OutputData()用于把第一个DataSet的employees表的数据组合成文本,然后输出到文本文件里,而方法InputData()把文本文件里的文本读出来,分解成一个一个的数据,然后送入第二个DataSet的employees表。
可以把整个代码粘贴到项目文件里,就可以运行。重点看一下OutputData()和InputData()方法。如下所示:
'从数据集把数据导出到文本文件
Private Sub OutputData()
'文件名
Dim fileName As String = "test.txt"
'如果该文件存在就删除
If File.Exists(fileName) Then
File.Delete(fileName)
End If
'创建新的文件
Dim fs As FileStream = File.Create(fileName)
fs.Close()
'打开文件并建立stream writer
fs = File.OpenWrite(fileName)
Dim sw As New StreamWriter(fs)
'得到datatable
Dim dtEmp As DataTable = Me.dsHR.Tables.Item("employees")
'利用双循环把数据一行一列的写到stream writer
For Each row As DataRow In dtEmp.Rows
Dim str As String = ""
For Each col As DataColumn In dtEmp.Columns
str = str & row.Item(col.ColumnName).ToString() & "*"
Next
sw.WriteLine(str)
Next
sw.Flush() '清理缓冲区并写入基础流
sw.Close() '关闭stream writer
End Sub
'从文本文件把数据导入数据集
Private Sub InputData()
'文件名
Dim fileName As String = "test.txt"
If Not File.Exists(fileName) Then
Return
End If
Dim sr As StreamReader = File.OpenText(fileName)
Dim dtEmp As DataTable = Me.dsHR2.Tables("employees")
Dim str As String = sr.ReadLine()
'如果文件里还有行就继续
While Not (str Is Nothing)
'得到新行
Dim row As DataRow = dtEmp.NewRow()
Dim startIndex As Integer = 0
Dim endIndex As Integer = 0
'给新行的每一个字段写入数据
For Each col As DataColumn In dtEmp.Columns
endIndex = str.IndexOf("*", startIndex)
Dim colStr As String
If endIndex > startIndex Then
colStr = str.Substring(startIndex, endIndex - startIndex)
End If
row.Item(col.ColumnName) = colStr
endIndex += 1
startIndex = endIndex
Next
'如果主键没有重复就加入到表里
Dim rows() As DataRow = dtEmp.Select("emp_id =" & row.Item("emp_id").ToString())
If rows.Length < 1 Then
dtEmp.Rows.Add(row)
End If
'读下一行文本
str = sr.ReadLine()
End While
sr.Close()
End Sub
下面给出了全部的代码,作为参考。
Imports
System.IO
Imports
System.Text
Public
Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents adptEmp As System.Data.OleDb.OleDbDataAdapter
Friend WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
Friend WithEvents OleDbInsertCommand1 As System.Data.OleDb.OleDbCommand
Friend WithEvents OleDbUpdateCommand1 As System.Data.OleDb.OleDbCommand
Friend WithEvents OleDbDeleteCommand1 As System.Data.OleDb.OleDbCommand
Friend WithEvents conn As System.Data.OleDb.OleDbConnection
Friend WithEvents dsHR As TxtData.DataSetHR
Friend WithEvents dgEmp As System.Windows.Forms.DataGrid
Friend WithEvents dvEmp As System.Data.DataView
Friend WithEvents btnOutput As System.Windows.Forms.Button
Friend WithEvents btnInput As System.Windows.Forms.Button
Friend WithEvents dgEmp2 As System.Windows.Forms.DataGrid
Friend WithEvents dsHR2 As TxtData.DataSetHR
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.adptEmp = New System.Data.OleDb.OleDbDataAdapter
Me.OleDbDeleteCommand1 = New System.Data.OleDb.OleDbCommand
Me.conn = New System.Data.OleDb.OleDbConnection
Me.OleDbInsertCommand1 = New System.Data.OleDb.OleDbCommand
Me.OleDbSelectCommand1 = New System.Data.OleDb.OleDbCommand
Me.OleDbUpdateCommand1 = New System.Data.OleDb.OleDbCommand
Me.dsHR = New TxtData.DataSetHR
Me.dgEmp = New System.Windows.Forms.DataGrid
Me.dvEmp = New System.Data.DataView
Me.btnOutput = New System.Windows.Forms.Button
Me.btnInput = New System.Windows.Forms.Button
Me.dgEmp2 = New System.Windows.Forms.DataGrid
Me.dsHR2 = New TxtData.DataSetHR
CType(Me.dsHR, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.dgEmp, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.dvEmp, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.dgEmp2, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.dsHR2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'adptEmp
'
Me.adptEmp.DeleteCommand = Me.OleDbDeleteCommand1
Me.adptEmp.InsertCommand = Me.OleDbInsertCommand1
Me.adptEmp.SelectCommand = Me.OleDbSelectCommand1
Me.adptEmp.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "employees", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("emp_age", "emp_age"), New System.Data.Common.DataColumnMapping("emp_dateofbirth", "emp_dateofbirth"), New System.Data.Common.DataColumnMapping("emp_department", "emp_department"), New System.Data.Common.DataColumnMapping("emp_id", "emp_id"), New System.Data.Common.DataColumnMapping("emp_name", "emp_name"), New System.Data.Common.DataColumnMapping("emp_sex", "emp_sex"), New System.Data.Common.DataColumnMapping("emp_single", "emp_single")})})
Me.adptEmp.UpdateCommand = Me.OleDbUpdateCommand1
'
'OleDbDeleteCommand1
'
Me.OleDbDeleteCommand1.CommandText = "DELETE FROM employees WHERE (emp_id = ?) AND (emp_age = ? OR ? IS NULL AND emp_ag" & _
"e IS NULL) AND (emp_dateofbirth = ? OR ? IS NULL AND emp_dateofbirth IS NULL) AN" & _
"D (emp_department = ? OR ? IS NULL AND emp_department IS NULL) AND (emp_name = ?" & _
" OR ? IS NULL AND emp_name IS NULL) AND (emp_sex = ?) AND (emp_single = ?)"
Me.OleDbDeleteCommand1.Connection = Me.conn
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_id", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_id", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_age", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_age", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_age1", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_age", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_dateofbirth", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_dateofbirth", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_dateofbirth1", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_dateofbirth", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_department", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_department", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_department1", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_department", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_name", System.Data.OleDb.OleDbType.VarWChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_name", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_name1", System.Data.OleDb.OleDbType.VarWChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_name", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_sex", System.Data.OleDb.OleDbType.Boolean, 2, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_sex", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_single", System.Data.OleDb.OleDbType.Boolean, 2, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_single", System.Data.DataRowVersion.Original, Nothing))
'
'conn
'
Me.conn.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
"ocking Mode=1;Data Source=""E:/everyday/VS/HELPREN/hr.mdb"";Jet OLEDB:Engine Type=" & _
"5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=Fa" & _
"lse;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet OL" & _
"EDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don'" & _
"t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Us" & _
"er ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
'
'OleDbInsertCommand1
'
Me.OleDbInsertCommand1.CommandText = "INSERT INTO employees(emp_age, emp_dateofbirth, emp_department, emp_name, emp_sex" & _
", emp_single) VALUES (?, ?, ?, ?, ?, ?)"
Me.OleDbInsertCommand1.Connection = Me.conn
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_age", System.Data.OleDb.OleDbType.Integer, 0, "emp_age"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_dateofbirth", System.Data.OleDb.OleDbType.DBDate, 0, "emp_dateofbirth"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_department", System.Data.OleDb.OleDbType.Integer, 0, "emp_department"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_name", System.Data.OleDb.OleDbType.VarWChar, 10, "emp_name"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_sex", System.Data.OleDb.OleDbType.Boolean, 2, "emp_sex"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_single", System.Data.OleDb.OleDbType.Boolean, 2, "emp_single"))
'
'OleDbSelectCommand1
'
Me.OleDbSelectCommand1.CommandText = "SELECT emp_age, emp_dateofbirth, emp_department, emp_id, emp_name, emp_sex, emp_s" & _
"ingle FROM employees"
Me.OleDbSelectCommand1.Connection = Me.conn
'
'OleDbUpdateCommand1
'
Me.OleDbUpdateCommand1.CommandText = "UPDATE employees SET emp_age = ?, emp_dateofbirth = ?, emp_department = ?, emp_na" & _
"me = ?, emp_sex = ?, emp_single = ? WHERE (emp_id = ?) AND (emp_age = ? OR ? IS " & _
"NULL AND emp_age IS NULL) AND (emp_dateofbirth = ? OR ? IS NULL AND emp_dateofbi" & _
"rth IS NULL) AND (emp_department = ? OR ? IS NULL AND emp_department IS NULL) AN" & _
"D (emp_name = ? OR ? IS NULL AND emp_name IS NULL) AND (emp_sex = ?) AND (emp_si" & _
"ngle = ?)"
Me.OleDbUpdateCommand1.Connection = Me.conn
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_age", System.Data.OleDb.OleDbType.Integer, 0, "emp_age"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_dateofbirth", System.Data.OleDb.OleDbType.DBDate, 0, "emp_dateofbirth"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_department", System.Data.OleDb.OleDbType.Integer, 0, "emp_department"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_name", System.Data.OleDb.OleDbType.VarWChar, 10, "emp_name"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_sex", System.Data.OleDb.OleDbType.Boolean, 2, "emp_sex"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("emp_single", System.Data.OleDb.OleDbType.Boolean, 2, "emp_single"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_id", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_id", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_age", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_age", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_age1", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_age", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_dateofbirth", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_dateofbirth", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_dateofbirth1", System.Data.OleDb.OleDbType.DBDate, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_dateofbirth", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_department", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_department", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_department1", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_department", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_name", System.Data.OleDb.OleDbType.VarWChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_name", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_name1", System.Data.OleDb.OleDbType.VarWChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_name", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_sex", System.Data.OleDb.OleDbType.Boolean, 2, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_sex", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_emp_single", System.Data.OleDb.OleDbType.Boolean, 2, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "emp_single", System.Data.DataRowVersion.Original, Nothing))
'
'dsHR
'
Me.dsHR.DataSetName = "DataSetHR"
Me.dsHR.Locale = New System.Globalization.CultureInfo("zh-CN")
'
'dgEmp
'
Me.dgEmp.DataMember = ""
Me.dgEmp.Dock = System.Windows.Forms.DockStyle.Top
Me.dgEmp.HeaderForeColor = System.Drawing.SystemColors.ControlText
Me.dgEmp.Location = New System.Drawing.Point(0, 0)
Me.dgEmp.Name = "dgEmp"
Me.dgEmp.Size = New System.Drawing.Size(416, 224)
Me.dgEmp.TabIndex = 0
'
'btnOutput
'
Me.btnOutput.Location = New System.Drawing.Point(8, 232)
Me.btnOutput.Name = "btnOutput"
Me.btnOutput.Size = New System.Drawing.Size(200, 23)
Me.btnOutput.TabIndex = 1
Me.btnOutput.Text = "把数据集的数据导出到文本文件"
'
'btnInput
'
Me.btnInput.Location = New System.Drawing.Point(224, 232)
Me.btnInput.Name = "btnInput"
Me.btnInput.Size = New System.Drawing.Size(184, 23)
Me.btnInput.TabIndex = 2
Me.btnInput.Text = "从文本文件把数据导入数据集"
'
'dgEmp2
'
Me.dgEmp2.DataMember = ""
Me.dgEmp2.Dock = System.Windows.Forms.DockStyle.Bottom
Me.dgEmp2.HeaderForeColor = System.Drawing.SystemColors.ControlText
Me.dgEmp2.Location = New System.Drawing.Point(0, 262)
Me.dgEmp2.Name = "dgEmp2"
Me.dgEmp2.Size = New System.Drawing.Size(416, 184)
Me.dgEmp2.TabIndex = 3
'
'dsHR2
'
Me.dsHR2.DataSetName = "DataSetHR"
Me.dsHR2.Locale = New System.Globalization.CultureInfo("zh-CN")
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(416, 446)
Me.Controls.Add(Me.dgEmp2)
Me.Controls.Add(Me.btnInput)
Me.Controls.Add(Me.btnOutput)
Me.Controls.Add(Me.dgEmp)
Me.Name = "Form1"
Me.Text = "Form1"
CType(Me.dsHR, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.dgEmp, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.dvEmp, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.dgEmp2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.dsHR2, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.InitDataSet()
Me.InitDataGrid()
End Sub
Private Sub InitDataSet()
Me.adptEmp.Fill(Me.dsHR, "employees")
Me.dvEmp.Table = Me.dsHR.Tables.Item("employees")
End Sub
Private Sub InitDataGrid()
Me.dgEmp.SetDataBinding(Me.dvEmp, "")
Me.dgEmp2.SetDataBinding(Me.dsHR2.Tables("employees"), "")
End Sub
'从数据集把数据导出到文本文件
Private Sub OutputData()
'文件名
Dim fileName As String = "test.txt"
'如果该文件存在就删除
If File.Exists(fileName) Then
File.Delete(fileName)
End If
'创建新的文件
Dim fs As FileStream = File.Create(fileName)
fs.Close()
'打开文件并建立stream writer
fs = File.OpenWrite(fileName)
Dim sw As New StreamWriter(fs)
'得到datatable
Dim dtEmp As DataTable = Me.dsHR.Tables.Item("employees")
'利用双循环把数据一行一列的写到stream writer
For Each row As DataRow In dtEmp.Rows
Dim str As String = ""
For Each col As DataColumn In dtEmp.Columns
str = str & row.Item(col.ColumnName).ToString() & "*"
Next
sw.WriteLine(str)
Next
sw.Flush() '清理缓冲区并写入基础流
sw.Close() '关闭stream writer
End Sub
'从文本文件把数据导入数据集
Private Sub InputData()
'文件名
Dim fileName As String = "test.txt"
If Not File.Exists(fileName) Then
Return
End If
Dim sr As StreamReader = File.OpenText(fileName)
Dim dtEmp As DataTable = Me.dsHR2.Tables("employees")
Dim str As String = sr.ReadLine()
'如果文件里还有行就继续
While Not (str Is Nothing)
'得到新行
Dim row As DataRow = dtEmp.NewRow()
Dim startIndex As Integer = 0
Dim endIndex As Integer = 0
'给新行的每一个字段写入数据
For Each col As DataColumn In dtEmp.Columns
endIndex = str.IndexOf("*", startIndex)
Dim colStr As String
If endIndex > startIndex Then
colStr = str.Substring(startIndex, endIndex - startIndex)
End If
row.Item(col.ColumnName) = colStr
endIndex += 1
startIndex = endIndex
Next
'如果主键没有重复就加入到表里
Dim rows() As DataRow = dtEmp.Select("emp_id =" & row.Item("emp_id").ToString())
If rows.Length < 1 Then
dtEmp.Rows.Add(row)
End If
'读下一行文本
str = sr.ReadLine()
End While
sr.Close()
End Sub
Private Sub btnOutput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOutput.Click
Me.OutputData()
End Sub
Private Sub btnInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInput.Click
Me.InputData()
End Sub
End
Class