可能是一個非常簡單的問題,但我遇到了一些問題。 目前我正在從OLAP Sever中提取數據並將其寫入SQL數據庫。我用下面的字符串創建了我的數據庫。vb.net SQL連接字符串,只寫入數據庫中的最後一個值
Dim strSQL As String =
"CREATE TABLE Datab(" &
"ID Int IDENTITY(1,1) PRIMARY KEY," &
"No Int NOT NULL," &
"Name NVarChar(40) NOT NULL," &
"basicvalue NVarChar(40) NOT NULL," &
"Datee Date NOT NULL," &
")"
我的連接如下:
昏暗的DbConnection作爲新的SqlConnection(的connectionString)
'A SqlCommand object is used to execute the SQL commands.
Dim cmd As New SqlCommand(strSQL, dbConnection)
Dim regDate As DateTime = DateTime.Now
Dim strDate As String = regDate.ToString("yyyy-MM-dd")
If IsError(mdsRet) = vbTrue Then
MsgBox("Error Connecting: " & IsError(MdsGetLastError))
Else
' MsgBox("Connected to Server: " + mdsRet)
'Check the number of Cubes in OLAP
If tables.TablesCount(srv) >= 0 Then
dbConnection.Open()
'Counter from 1 to nu. of Cubes
cmd1.CommandType = System.Data.CommandType.Text
For counter As Integer = 1 To tables.TablesCount(srv)
cmd1.CommandText = "INSERT INTO Datab(No, Name, basicvalue,datee) VALUES ('" & counter & "','" + tables.TablesName(srv, counter) + "','" & tables.TableGetInfo(srv, tables.TablesName(srv, counter), 56) & "','" & strDate & "')"
cmd1.Connection = dbConnection
cmd.ExecuteNonQuery()
cmd1.ExecuteNonQuery()
counter = counter + 1
Next
End If
End If
'close DB connection
dbConnection.Close()
連接寫入行成數據庫,但不增加索引行,因此我得到了數據庫表中的最後一個值,即執行完成後。總共有大約60行要寫入。
我嘗試了不同的選項來增加計數器,但它不工作。任何人都可以幫助和解釋。
謝謝
刪除'counter = counter + 1'作爲For循環會自動增加'counter'。不確定'tables.TablesName(srv,counter)'的結構,但是它們通常從0開始。所以把'As Counter As Integer = 1'改爲'For Counter As Integer = 0',當你插入'(' 「&counter&」','「'把它改成'('」&(counter + 1)&「','」'你也想看一下'Parameters'而不是連接在一起的字符串 – Bugs
嗨@ Jinx88909,我沒有改變它..如果我改變'對於計數器爲整數= 0'然後我得到一個SQL轉換錯誤從字符串到雙和當我插入'('「&(counter + 1)&」', '''然後它簡單地增加計數器,即當計數器應該是1它寫入2(1 + 1)。 – PUser
是啊,你需要從0開始,最後一點工作。我假設'tables.TablesName'是基於零的意思是第一個記錄從0開始,而不是1?這個錯誤將是別的,它可能有助於通過使用參數來解決這個問題,所以'cmd1.Parameters.Add()'。開啓** Option Strict **也會從長遠來看有助於編碼。 – Bugs