2013-06-12 70 views
1

我有一個只有文本的RichTextBox。我怎樣才能獲得數據(數據是製表符分隔)到我的SQL服務器表? (我不是被迫使用RTB所以任何其他選項罰款,只要會做的整個過程將是快速的)文本的如何將RichTextBox數據放入我的sql服務器表中?

實例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文本保存到文件中,然後從該文件中讀取以保存表格中的數據...

+0

請注意Split(New Char(){「\ n」c})在VS中給我一個錯誤...如果你真的需要換行符{「\ n」},並且你想要添加每個標籤字段到數組中使用Split(New Char(){vbTab}) – maxedev

+0

語法'\ n'用於C#,其中反斜槓「轉義」下列字符。你可以使用myRichTextBox.Lines來獲取行,或者如果它真的被換行符分割而不是回車,換行符,你可以在Chr(10)上分割。 –

+0

有很多方法可以做到這一點。這裏是一個:[如何將csv文件讀入.net數據表](http://stackoverflow.com/questions/1050112/how-to-read-a-csv-file-into-a-net-datatable) 。然後使用[SqlBulkCopy](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx)。 – Neolisk

回答

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

您需要使用您的數據替換值,則執行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 

爲了獲得更高的安全性和性能,請使用存儲過程。

相關問題