1

我有一个只有文本的 RichTextBox。如何将数据(数据以制表符分隔)放入我的 sql server 表中?(我没有被迫使用 RTB,所以只要整个过程很快,任何其他选项都可以)

RTB 中的文本示例:

John 1985 (tab) 01 (tab) 19 (tab) 1.80 (tab) 70

Tony 1988 (tab) 02 (tab) 27 (tab) 1.67 (tab) 55

sql Server中名为“用户”的表:

Name, Year, Month, Date, Height, Weight

我找到了这段代码Dim lines As String() = myRichTextbox.Text.Split(New Char() {"\n"c}) ,所以我只需要将每一行的每一部分放到一个特定的列中......

有任何想法吗 ?我似乎无法将 RTB 中的数据获取到 SQL SERVER 表中。而且我在网上找不到它...我将每 10 分钟循环一次此过程,因此我不想将 RTB 文本保存到文件中,然后从该文件中读取以将数据保存在表中...

4

2 回答 2

2

解析数据后,您可以使用动态 SQL 或存储过程将数据插入数据库。

SQL 服务器管理器可以为您的表构建 INSERT 语法,例如:

            INSERT INTO [OIS].[dbo].[Burn_Type]
                       ([Burn_Type]
                       ,[Record_Create_Date]
                       ,[Last_Update_Date]
                       ,[Burn_Fee])
                 VALUES
                       (<Burn_Type, varchar(40),>
                       ,<Record_Create_Date, datetime,>
                       ,<Last_Update_Date, datetime,>
                       ,<Burn_Fee, float,>)

您需要将 VALUES 替换为您的数据,然后执行 SQL,这是一些通用代码:

    Public Function UpdateBySQL(ByVal SQL As String, Optional ByVal UserConnectString As String = "") As Integer
    Dim sConStr As String = UserConnectString
    If sConStr.Length = 0 Then sConStr = g.OISConnectString
    Dim cmd As New Data.SqlClient.SqlCommand ' text commands only
    Dim iCnt As Integer
    Try
        ' wouldn't work for transactions
        Using con As New SqlConnection(sConStr)
            con.Open()
            cmd.CommandText = SQL
            cmd.Connection = con
            iCnt = cmd.ExecuteNonQuery()
            con.Close()
        End Using
    Catch ex As Exception
        MsgBox(ex.Message & vbCrLf & vbCrLf & SQL)
    End Try
    Return iCnt
End Function

为了获得更高的安全性和性能,请使用存储过程。

于 2013-06-12T21:36:16.247 回答
1

您可以在换行符 ( chr(10)) 上拆分以获取行,然后在每一行上您可以在制表符 ( chr(9)) 上拆分以获取“列”

Dim rows As String() = source.Split(Chr(10))
Dim columns As String()

For Each line As String In rows
   columns = line.Split(Chr(9))
Next
于 2013-06-12T15:54:09.123 回答