2014-04-29 1 views
1

У меня есть 3 текстовых поля, которые я использую в качестве контактной формы. Я пытаюсь использовать VB для получения этих данных и добавления их в мою базу данных. Я выполнил отладку и говорит, что ошибка находится в строке INSERT INTO. ! [Захват отладки экрана] [1]: http://i.stack.imgur.com/ufYPs.pngВставить текст из текстового поля в базу данных Access 2010 и использовать VB.Net

Любые идеи?

Imports System 

Импорт System.Data Импорт System.Data.OleDb Частичный класс Контакт Inherits System.Web.UI.Page

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim Name As String = txtName.Text 
    Dim Email As String = tbxEmail.Text 
    Dim Comment As String = tbxComment.Text 

    Dim objConnection As OleDbConnection = Nothing 
    Dim objcmd As OleDbCommand = Nothing 

    Dim strSql As String 
    Dim dbConn As OleDbConnection = Nothing 

    dbConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = Z:\Documents\Databases\user.accdb") 
    dbConn.Open() 

    strSql = "INSERT INTO user (username, email, comments) VALUES (?,?,?)" 
    objcmd = New OleDbCommand(strSql, dbConn) 
    objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@username", Name)) 
    objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@email", Email)) 
    objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@comments", Comment)) 
    objcmd.ExecuteNonQuery() 


    dbConn.Close() 
    Response.Write("Submitted Successfully") 

End Sub 

ответ

1

USER является зарезервированным ключевым словом в MS-Access, чтобы использовать это как таблица назвать вашу потребность вложить его в квадратных скобках

strSql = "INSERT INTO [user] (username, email, comments) VALUES (?,?,?)" 

в качестве примечания, попробуйте использовать Using Statement при работе с одноразовыми объектами.

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim Name As String = txtName.Text 
    Dim Email As String = tbxEmail.Text 
    Dim Comment As String = tbxComment.Text 

    Using dbConn = New OleDbConnection(".......") 
     dbConn.Open() 
     Dim strSql = "INSERT INTO [user] (username, email, comments) VALUES (?,?,?)" 
     Using objcmd = New OleDbCommand(strSql, dbConn) 
      objcmd.Parameters.AddWithValue("@username", Name) 
      objcmd.Parameters.AddWithValue("@email", Email) 
      objcmd.Parameters.AddWithValue("@comments", Comment) 
      objcmd.ExecuteNonQuery() 
     End Using 
    End Using 
    Response.Write("Submitted Successfully") 
End Sub 
+0

Спасибо за ответ. – mredfern79

+0

Спасибо за ответ, я попробовал 2 вещи. Если я добавлю оператор Using, я в итоге получаю ошибки сборки, указав, что '' dbconn'' и 'objcmd' скрыть переменную и вложенный блок. – mredfern79

+0

Я пробовал работать без «Использование оператора», просто добавляя квадратные скобки к пользователю '[user]'. При отладке следующее сообщение об ошибке выбрасывается исключение _Unhandled в строке 940, столбце 13 в HTTP: // локальный: 1169/ScriptResource.axd д = DT3YJR8QaqV61-teuz0hgq5a3FQA8MHrkniUz6btQKrdAAJIBru1i4ufsCj0lnk7SbkE-BpmROGP1Po5qv6t2Vic05otOdeKe1XYXd0-lSx5dnzvvNHmrEh9dnlkqayZF065umFxuLGoU_dhd8lCxQ2 & т = ffffffffda74082d 0x800a139e - JavaScript, ошибка времени выполнения:? Sys.WebForms .PageRequestManagerParserErrorException: сообщение, полученное с сервера, невозможно разобрать ._ – mredfern79