2016-11-18 78 views
0

可能是一個非常簡單的問題,但我遇到了一些問題。 目前我正在從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行要寫入。

我嘗試了不同的選項來增加計數器,但它不工作。任何人都可以幫助和解釋。

謝謝

+0

刪除'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

+0

嗨@ Jinx88909,我沒有改變它..如果我改變'對於計數器爲整數= 0'然後我得到一個SQL轉換錯誤從字符串到雙和當我插入'('「&(counter + 1)&」', '''然後它簡單地增加計數器,即當計數器應該是1它寫入2(1 + 1)。 – PUser

+0

是啊,你需要從0開始,最後一點工作。我假設'tables.TablesName'是基於零的意思是第一個記錄從0開始,而不是1?這個錯誤將是別的,它可能有助於通過使用參數來解決這個問題,所以'cmd1.Parameters.Add()'。開啓** Option Strict **也會從長遠來看有助於編碼。 – Bugs

回答

0

我想通了,我這樣的傻瓜.. 在每次執行它執行創建查詢,這意味着它是刪除表,並創造新的。

我從循環中刪除了行cmd.ExecuteNonQuery()並在循環執行前添加了它。它工作完美。

儘管謝謝@ Jinx88909

+0

你知道嗎,我錯過了最重要的問題,並認爲其他CMD只是你測試:)很高興你已經整理它。 – Bugs