0

我有一个读取的 csv 文件并将其创建为 string(),现在我想将所有这些输入到 SQL 表中。它应该变成这样: TIME string(0) string(1) string(2) ...

我将如何解决这个问题vb.net,我通常只对这样的东西使用一个小循环,但我认为这不会起作用,因为它是一个 SQL 命令。

例子:

" dim sqlcreatetable As String = _

    "USE MainDB1" & vbCrLf & _

    "IF EXISTS (SELECT * FROM sysobjects WHERE Name = 'logging' AND TYPE = 'u')" & vbCrLf & _

    "BEGIN" & vbCrLf & _

    "DROP TABLE MainDB1.dbo.logging" & vbCrLf & _

    "END" & vbCrLf & _

    "Create Table logging (TIME NVarchar(20) NOT NULL,"
    For i As Integer = 1 To aantaltags
        If (i = aantaltags) Then
            sqlcreatetable += csvtagssplit(3 * i - 2) & ") nvarchar(20) NOT NULL)"
        Else
            sqlcreatetable += csvtagssplit(3 * i - 2) & ") NVarChar(20) NOT NULL,"
        End If
    Next
    Dim dbConnection As New SqlCommand(sqlcreatetable, connection)
    connection.Open()
    dbConnection.ExecuteNonQuery()
    connection.Close()</code>

数组的大小是可变的,所以我不能只让它成为一条过大的线。

4

1 回答 1

0

制作如下所示的创建表字符串:

Dim objConn As New SqlConnection("Server=<servername>;uid=<userid>;pwd=<password>;database=<dbaname>")

Dim csvStr as String  //Suppose It has Whole CSV file as a string
Dim csvWithoutQuotes As String = csvStr.Replace("""",""); //I am assuming that csv's any string doesn't have comma
Dim csvStrArrayOfOneLine() As String = csvWithoutQuotes.split(vbCrLf);
Dim csvStrArray() As String = csvStrArrayOfOneLine(0).split(","); 
Dim csvStrLength as Integer = csvStrArray.Length

Dim cmdString as string = "Create Table logging (TIME NVarchar(20) NOT NULL,"

For i As Integer = 0 To csvStrLength 
If ( i = csvStrLength ) Then
    cmdString += "log(" & i.ToString & ") NVarChar(20) NOT NULL)"
Else 
    cmdString += "log(" & i.ToString & ") NVarChar(20) NOT NULL,"
End If
Next
objConn.Open()
Dim objCmd As New SqlCommand(cmdString, objConn)
objCmd.CommandType = CommandType.Text
objCmd.ExecuteNonQuery()

我不是 vb.net 程序员,但我已尽力满足您的回答。如果有任何错误;让我知道。

于 2013-05-14T07:23:07.143 回答