2014-09-30 131 views
0

我正在做我的計算機上的編程,它工作正常 - 程序,數據庫本身,插入到數據庫也工作正常。但是,當我發佈它並在另一臺計算機上安裝該程序時。它崩潰並且不執行INSERT命令。插入SQL查詢未執行

這是我的代碼。

Private Sub cmdBlank_Click(sender As System.Object, e As System.EventArgs) Handles cmdBlank.Click 
strTariff1 = txtPart1.Text & " " & txtPName1.Text & " " & txtQty1.Text & " " & txtU1.Text 
strTariff2 = txtPart2.Text & " " & txtPName2.Text & " " & txtQty2.Text & " " & txtU2.Text 
strTariff3 = txtPart3.Text & " " & txtPName3.Text & " " & txtQty3.Text & " " & txtU3.Text 
strTariff4 = txtPart4.Text & " " & txtPName4.Text & " " & txtQty4.Text & " " & txtU4.Text 
'strTariff5 = txtPart5.Text & " " & txtPName5.Text & " " & txtQty5.Text & " " & txtU5.Text 

Call saveToDb() 
frmreportax.Show() 
End Sub 

Private Function saveToDb() 
    conn.Close() 

    Dim cmdAdd, cmdCount, cmdAdd2 As New iDB2Command 
    Dim sqlAdd, sqlCount, sqlAdd2 As String 
    Dim curr1, curr2, curr3, curr4 As String 
    Dim count As Integer 

    conn.ConnectionString = str 
    conn.Open() 

    'Check for duplicate entry 
    sqlCount = "SELECT COUNT(*) AS count FROM cewe WHERE [email protected] AND [email protected]" 

    With cmdCount 
     .CommandText = sqlCount 
     .Connection = conn 

     .Parameters.AddWithValue("@transport", frmPart1.txtTransport.Text) 
     .Parameters.AddWithValue("@blnum", frmPart1.txtNo.Text) 
    End With 

    count = Convert.ToInt32(cmdCount.ExecuteScalar()) 

    If count <> 0 Then 
     MsgBox("Duplicate Entry: " & frmPart1.txtTransport.Text, vbOKOnly + vbExclamation) 
    Else 

     sqlAdd = "INSERT INTO cewe (page) " & _ 
        "VALUES (@page) " 

     With cmdAdd 
      .Parameters.AddWithValue("@page", Val(frmPart1.txtPage.Text)) 
      .CommandText = sqlAdd 
      .Connection = conn 
      .ExecuteNonQuery() 
     End With 
    end if 


    cmdAdd.Dispose() 
    cmdAdd2.Dispose() 
    conn.Close() 
end function 

請告訴我我做錯了什麼?當我運行並在我的電腦上安裝該程序時,它工作得很好。但是當我在另一臺PC上運行/安裝它時,它會在單擊cmdBlank後崩潰。

+0

這可能是數據庫連接的問題(安裝或配置與應用程序正確運行)。通過應用程序記錄異常\錯誤,以確定問題到底是什麼。 – souser 2014-09-30 04:28:38

+0

我如何記錄異常\錯誤? – shesxue28 2014-09-30 04:38:32

+0

查看企業庫的日誌記錄模塊。或者,您可以簡單地將插入引發的異常詳細信息記錄在簡單的文本文件中。 – souser 2014-10-02 01:12:32

回答

0

可能有很多事情會導致問題,但首先要看的是任何錯誤日誌或崩潰報告,可能會提供一些問題的指示。嘗試調試或記錄以獲得更好的照片。除此之外,還有一些小建議可能會在下面提供幫助。

另一臺計算機是否可以訪問您指向的數據庫?數據庫連接是否指向本地主機?在這種情況下,您需要確保您擁有在新計算機上的數據庫服務器上設置的相同憑據(主機,用戶名,密碼,端口等)。新電腦上安裝了數據庫驅動程序嗎?兩臺機器之間的根本區別是什麼?

+0

嗨!除了這個命令外,我還有另一種從數據庫中檢索數據的形式。我正在使用AS/400 iSeries DB2。它運行良好,數據正在從數據庫中獲取並顯示在datagridview中。但是在這個特定的按鈕中,它將新的數據添加到數據庫中。無論何時添加數據,或程序在INSERT命令上運行,應用程序都會突然崩潰。這隻發生在測試電腦上。它可以在我的電腦上正常工作。 – shesxue28 2014-09-30 04:37:12

+0

我想這是與司機如此做的。您可以製作一個小程序來嘗試從測試框連接以查看會發生什麼。您還可以檢查測試盒是否可以訪問AS/400,但會按以下順序進行故障排除。檢查驅動程序(版本等),檢查該機器是否可以訪問,編寫小程序以訪問。 – cherrysoft 2014-09-30 04:43:02

+0

我認爲該程序可以訪問數據庫,因爲如果沒有,數據庫中的記錄的查看/讀取會產生問題。從那時起,它應該已經崩潰了。但它不會顯示所有記錄。它還計算數據庫中存在的記錄數。我認爲主要的問題是INSERT命令。我在哪裏可以做到這一點?我的意思是我沒有使用ADO.NET或DSN進行連接。這裏是我的連接字符串: – shesxue28 2014-09-30 04:48:40