Инструкция SQL не будет вставлена ​​в DB.sdf - PullRequest
0 голосов
/ 09 сентября 2010

Я использую Visual Studio 2008 и правильно подключил базу данных, поскольку я выполнил вход в систему, который работает нормально, хотя, когда я пытаюсь вставить информацию, представленную в текстовых полях, в другую таблицу, она не появляется после завершения программы чтобы проверить это все еще нет данных. Есть идеи?

    Dim con As SqlCeConnection = New SqlCeConnection("Data Source=NESdb.sdf")        
    Dim myDA As SqlCeDataAdapter
    Dim myDataSet As DataSet
    Dim dt As New DataTable()        

    'Connect to database'
    con.Open()
    'Attempt to retrieve data'
    Try ' Select username and password that match'
        Dim cmd As SqlCeDataAdapter = New SqlCeDataAdapter("INSERT INTO ScrapVehicles(Fname, Lname, Add1, Add2, Town, PostCode, Telephone, Mob, Email, VehicleType, RegNo, Year, Make, Model, V5, Collected, CollectionDate)" + "VALUES('" & txtFname.Text & "', '" & txtLname.Text & "', '" & txtAdd1.Text & "', '" & txtAdd2.Text & "', '" & txtTown.Text & "', '" & txtPostCode.Text & "', '" & txtTelephone.Text & "', '" & txtMob.Text & "', '" & txtEmail.Text & "', '" & comboVehicleType.Text & "', '" & txtReg.Text & "', '" & comboYear.Text & "', '" & comboMake.Text & "', '" & txtModel.Text & "', '" & chkV5.Text & "', '" & chkCollected.Text & "', '" & dtpWhen.Text & "')", con)
        'Catch errors'
    Catch ex As Exception
    End Try
    'Close connection to database'
    If con.State <> ConnectionState.Closed Then
        con.Close()
    End If

Ответы [ 3 ]

1 голос
/ 09 сентября 2010

Вместо использования SqlCeDataAdapter используйте объект SqlCeCommand . И после его создания, фактически используйте его (вызовите ExecuteNonQuery для него). И удалите строки Try, Catch Ex as Exception и End Try, чтобы, , если возникла ошибка , вы действительно ее увидели.

Это то, что я вижу по 30 секундам просмотра.

Редактировать

Вам также следует обратить внимание на использование параметров вместо того, чтобы объединять оператор INSERT вместе.

1 голос
/ 09 сентября 2010

Вы создаете объект cmd, но не выполняете его.

Предложите отказаться от адаптера при вставке. Попробуйте вместо этого:

/*snipped values for brevity.*/
Dim insertSql As String = "INSERT INTO ScrapVehicles(Fname, Lname, Add1, Add2, Town) VALUES(@FName, @LName, @Add1, @Add2, @Town)" 

conn.Open()
Dim cmd As New SqlCeCommand(insertSql, conn)
cmd.Parameters.Add(New SqlCeParameter("@FName", txtFirstName.Text.Trim()))
cmd.Parameters.Add(New SqlCeParameter("@LName", txtLastName.Text.Trim()))
cmd.Parameters.Add(New SqlCeParameter("@Add1", txtAdd1.Text.Trim()))
cmd.Parameters.Add(New SqlCeParameter("@Add2", txtAdd2.Text.Trim()))

cmd.ExecuteNonQuery()
conn.Close()
1 голос
/ 09 сентября 2010

В конце отсутствует скобка

& dtpWhen.Text & "'", con)

должно быть

& dtpWhen.Text & "')", con)

...