vb.net 读取结构化文件.dat 到数据库

抛砖引玉,希望大家有更好的方法

<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)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华文科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值