2010-09-09 2 views
0

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

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 
+0

Обновлено с полной информацией о форме. –

+0

надеюсь, что вы не возражаете - я вырезал код, который не имеет значения. Если в будущем вам нужно вставить много кода, используйте pastebin.com или аналогичный. Только соответствующие части :) –

+0

Спасибо, Кэмпбелл, я попробую ваши предложения и очень ценю. –

ответ

1

Вы создаете объект 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

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

& dtpWhen.Text & "'", con)

должен быть

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

+0

Спасибо Барри, я дам ему попытку (Y) –

+0

Не повезло барри, по-прежнему нужна помощь :) –

1

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

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

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

Вы должны также посмотреть на использование parameters вместо конкатенации оператор INSERT вместе.

Смежные вопросы