2014-09-30 8 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에서 프로그램을 실행하고 설치할 때 완벽하게 작동합니다. 하지만 다른 PC에서 실행/설치하면 cmdBlank를 클릭 한 후 충돌이 발생합니다.

+0

데이터베이스 연결 (응용 프로그램과 함께 올바르게 실행되는 설치 또는 구성)에 문제가있을 수 있습니다. 응용 프로그램을 통해 예외 \ 오류를 기록하여 문제가 정확히 무엇인지 파악하십시오. – souser

+0

어떻게 예외 \ 오류를 기록 할 수 있습니까? – shesxue28

+0

엔터프라이즈 라이브러리의 로깅 모듈을 확인하십시오. 또는 간단한 텍스트 파일에 삽입 된 예외 정보를 기록 할 수도 있습니다. – souser

답변

0

문제의 원인은 여러 가지가있을 수 있지만 처음에는 문제의 징후를 줄 수있는 오류 로그 또는 오류 보고서가 있습니다. 더 나은 그림을 얻으려면 디버깅이나 로깅을 시도하십시오. 그 너머 아래에 도움이 될 수있는 몇 가지 작은 제안이 있습니다.

다른 컴퓨터가 당신이 가리키는 데이터베이스에 접근 할 수 있습니까? 데이터베이스 연결이 localhost를 가리 킵니까? 이 경우 새 컴퓨터의 데이터베이스 서버에 동일한 자격 증명 (호스트, 사용자 이름, 암호, 포트 등)을 설정해야합니다. 데이터베이스 드라이버가 새 컴퓨터에 설치되어 있습니까? 두 기계의 근본적인 차이점은 무엇입니까?

+0

안녕하세요! 이 명령 외에도 데이터베이스에서 데이터를 검색하는 또 다른 형식이 있습니다. AS/400 iSeries DB2를 사용 중입니다. 그것은 잘 작동, 데이터가 데이터베이스에서 가져 오는되고 datagridview에 표시됩니다. 그러나이 특정 단추에서 데이터베이스에 새 데이터를 추가합니다. 데이터를 추가하거나 프로그램이 INSERT 명령으로 실행될 때마다 응용 프로그램이 갑자기 충돌합니다. 이것은 테스트 PC에서만 발생합니다. 그것은 내 PC에서 잘 작동합니다. – shesxue28

+0

나는 그것이 운전자와 그렇게하는 것이라고 상상한다. 테스트 상자에서 연결하려고 시도하는 작은 프로그램을 만들면 어떤 일이 벌어지는 지 알 수 있습니다. 또한 테스트 상자에 AS/400에 대한 액세스 권한이 있지만 다음 순서로 문제를 해결할 수 있는지 확인할 수 있습니다. 드라이버 (버전 등)를 확인하고 컴퓨터에 액세스 할 수 있는지 확인하고 액세스 할 수있는 작은 프로그램을 작성하십시오. – cherrysoft

+0

나는 프로그램이 데이터베이스에 접근 할 수 있다고 생각한다. 왜냐하면 만약 문제가 없다면 데이터베이스에서 레코드를 보거나 가져 오는 것이 문제가 될 것이기 때문이다. 그때부터, 그것은 이미 추락했을 것입니다. 그러나 그렇지 않습니다. 모든 기록을 보여줍니다. 또한 데이터베이스에있는 레코드 수를 계산합니다. 나는 주된 문제는 INSERT COMMAND라고 생각한다. 내가 어디에서 할 수 있니? 나는 ADO.NET 또는 DSN을 연결에 사용하지 않는다는 것을 의미합니다. 여기 내 연결 문자열입니다 : – shesxue28