2012-07-30 2 views
-1

안녕하세요, 코드가 mysql 명령을 삽입해야하는 개인 하위 코드를 만들었습니다 .... 그리고 가장 재미있는 부분은 데이터베이스에서 disideares라는 것입니다. debbug를 멈추고 그걸로 시작하면 데이터베이스에조차도 없어요. 왜?blank mysql 데이터베이스에 삽입

Private Sub gravarAtleta() 
    Dim sqlStatement = "insert into atl([nome],[morada],[sexo],[datan],[telf],[desporto]) " 
    sqlStatement &= "VALUES (@nome, @morada, @sexo, @datan, @telf, @desporto)" 

    Using xConn As New SqlConnection(myConnectionString) 
     Try 
      Dim xComm As New SqlCommand(sqlStatement, xConn) 
      With xComm 
       .CommandType = CommandType.Text 
       .Parameters.AddWithValue("@nome", txtNome.Text) 
       .Parameters.AddWithValue("@morada", txtMorada.Text) 
       .Parameters.AddWithValue("@sexo", ComboSexo.Text) 
       .Parameters.AddWithValue("@datan", CType(txtDataN.Text, DateTime).ToString("yyyy-MM-dd")) 
       .Parameters.AddWithValue("@telf", txtTelemovel.Text) 
       .Parameters.AddWithValue("@desporto", ComboBox1.Text) 
      End With 

      xConn.Open() 
      xComm.ExecuteNonQuery() 
      xComm.Dispose() 
      Label1.Content = "O atleta " + txtNome.Text + " foi registado!!!" 
     Catch ex As SqlException 
      MsgBox(ex.Message) 
      Label1.Content = "Falhou a ligação a base de dados!!!" 
     End Try 
    End Using 
End Sub 
+0

Leva 당신은 왜 SQL Server 연결을 mysql 명령을 삽입해야합니까? –

답변

1

필자는 코드가

Private Sub gravarAtleta() 

     Dim sqlStatement = "INSERT INTO atl([nome],[morada],[sexo],[datan],[telf],[desporto]) " 
     sqlStatement &= "VALUES (@nome, @morada, @sexo, @datan, @telf, @desporto)" 

     Using xConn As New SqlConnection(myConnectionString) 
      Using xComm As New SqlCommand(sqlStatement, xConn) 
       With xComm 
        .CommandType = CommandType.Text 
        .Parameters.AddWithValue("@nome", txtNome.Text) 
        .Parameters.AddWithValue("@morada", txtMorada.Text) 
        .Parameters.AddWithValue("@sexo", ComboSexo.Text) 
        .Parameters.AddWithValue("@datan", CType(txtDataN.Text, DateTime).ToString("yyyy-MM-dd")) 
        .Parameters.AddWithValue("@telf", txtTelemovel.Text) 
        .Parameters.AddWithValue("@desporto", ComboBox1.Text) 
       End With 
       Try 
        xConn.Open 
        xComm.ExecuteNonQuery 
        Label1.Content = "O atleta " + txtNome.Text + " foi registado!!!" 
       Catch ex As SqlException 
        Msgbox (ex.Message) 
        Label1.Content = "Falhou a ligação a base de dados!!!" 
       Finally 
        xConn.Close 
       End Try 
      End Using 
     End Using 
End Sub 
+0

nop try 문이 잘못되었습니다. try 문 안에 cath이 있어야합니다. –

+0

죄송합니다. Prince, xcomm dispose 명령은 xcomm 객체를 "볼"수 없으므로 Option Explicit On을 사용하면 컴파일되지 않습니다. 특히 xComm을 얻을 수 있습니다. 보호 수준으로 인해 액세스 할 수 없을 수도 있습니다. " –

0

는 첫째, 명령 생성이 사용하는 문을 수행해야 작동하는지 확인 수정; 그렇게하면 dispose 문을 사용할 필요가 없으며 데이터베이스 생성 및 예외가 발생하더라도 개체가 삭제됩니다. 예 :

Using xComm As New SqlCommand(sqlStatement, xConn) 
     With xComm 
      .CommandType = CommandType.Text 
      .Parameters.AddWithValue("@nome", txtNome.Text) 
      .Parameters.AddWithValue("@morada", txtMorada.Text) 
      .Parameters.AddWithValue("@sexo", ComboSexo.Text) 
      .Parameters.AddWithValue("@datan", CType(txtDataN.Text, DateTime).ToString("yyyy-MM-dd")) 
      .Parameters.AddWithValue("@telf", txtTelemovel.Text) 
      .Parameters.AddWithValue("@desporto", ComboBox1.Text) 

      xConn.Open() 

      .ExecuteNonQuery() 
     End With 
    End Using   

둘째, 앱 배포를 위해 데이터베이스를 포함 시켰습니까? 나는 이것이 MySQL을 사용하여 가능할지조차 확신하지 못한다. 그러나 우리는 데이터베이스 (SQLCE, Access)의 복사본을 솔루션의 내용으로 포함시키고 빌드시 output 디렉토리로 복사하기 전에 이와 같은 문제에 부딪혔다.

이전 디버그 사이클 중에 변경된 내용이 새로 복사 된 데이터베이스에 의해 덮어 쓰여지기 때문에 이로 인해 큰 혼란이 발생합니다.

+0

그래서 삽입 명령 작업이 문제가 릴리스 =라는 것을 의미합니다. 즉, 프로젝트를 실행할 때마다 디버그 폴더의 모든 파일이 새 파일로 변경됩니다. 솔루션 디렉토리에서 복사 하시겠습니까? –

관련 문제