抛砖引玉,希望大家有更好的方法
<StructLayoutAttribute(LayoutKind.Sequential, CharSet:=CharSet.Ansi, Pack:=1)> Structure Record '定义一个Record的结构
Dim numb As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=3)> Dim pfm As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=3)> Dim lm As String
Dim ll As Single
Dim zl As Single
Dim wc As Single
Dim year As Short
Dim mon As Byte
Dim day As Byte
Dim hour As Byte
Dim Min As Byte
Dim sec As Byte
Dim ido As Short
Dim idi As Short
End Structure
Dim path As String = "d:\sl3000.dat"
Dim uRecord As Record
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
fs1 = New FileStream(PATH, FileMode.Open, FileAccess.Read)
sr = New BinaryDim i As Integer
For i = 0 To Recordnumb - 1
sr.BaseStream.Seek(i * 39, SeekOrigin.Begin)
uRecord.numb = sr.ReadInt32
sr.BaseStream.Seek(i * 39 + 3, SeekOrigin.Begin)
uRecord.pfm = sr.ReadChars(5)
sr.BaseStream.Seek(i * 39 + 10, SeekOrigin.Begin)
uRecord.lm = sr.ReadChars(3)
sr.BaseStream.Seek(i * 39 + 16, SeekOrigin.Begin)
uRecord.ll = sr.ReadSingle
uRecord.zl = sr.ReadSingle
uRecord.wc = sr.ReadSingle
sr.BaseStream.Seek(i * 39 + 28, SeekOrigin.Begin)
uRecord.year = sr.ReadInt16
uRecord.mon = sr.ReadByte
uRecord.day = sr.ReadByte
uRecord.hour = sr.ReadByte
uRecord.Min = sr.ReadByte
uRecord.sec = sr.ReadByte
uRecord.ido = sr.ReadInt16
uRecord.idi = sr.ReadInt16
'写入数据到sql数据库’
cmd = New SqlCommand("insert_data", Conn)
cmd.CommandType = CommandType.StoredProcedure
cmd = New SqlCommand("insert_data", Conn) '- -------存储过程名称
cmd.CommandType = CommandType.StoredProcedure '- ---------改变类型
cmd.Parameters.Add("@param1", SqlDbType.BigInt).Value = uRecord.numb ' ------------将存储过程中涉及的参数加入进来,并附值。
cmd.Parameters.Add("@param2", SqlDbType.NVarChar).Value = uRecord.pfm
cmd.Parameters.Add("@param3", SqlDbType.NVarChar).Value = uRecord.lm
cmd.Parameters.Add("@param4", SqlDbType.Float).Value = Format(uRecord.ll, "0.0")
cmd.Parameters.Add("@param5", SqlDbType.Float).Value = Format(uRecord.zl, "0.0")
cmd.Parameters.Add("@param6", SqlDbType.Float).Value = Format(uRecord.wc, "0.0")
cmd.Parameters.Add("@param7", SqlDbType.DateTime).Value = CDate(uRecord.year & "/" & uRecord.mon & "/" & uRecord.day & " " & uRecord.hour & " : " & uRecord.Min & " : " & uRecord.sec)
cmd.Parameters.Add("@param8", SqlDbType.SmallInt).Value = uRecord.ido
cmd.Parameters.Add("@param9", SqlDbType.SmallInt).Value = uRecord.idi
cmd.ExecuteNonQuery() ' ------------------执行存储过程。当存储过程涉及到的是插入删除或如果是查询, 则用executereader()
ProgressBar1.Value = i + 1
Next i
sr.Close()
MsgBox("成功导入" & Recordnumb & "条数据")Reader(fs1, System.Text.Encoding.Default)