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>

配列のサイズは可変なので、特大の1行にすることはできません。

4

1 に答える 1

0

以下のように Create Table 文字列を作成します。

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 に答える