2015-04-20 50 views
1

這是我放在我的提交按鈕後面的代碼,我有兩個文本框名稱和電子郵件,我想將其添加到我的數據庫中,工作想知道是否有人可以幫助如何在Visual Studio 2012中將數據添加到訪問數據庫中

Dim Strnm As String = Request.Form("txtname") 
     Dim Strem As String = Request.Form("txtemail") 

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

     Dim StrSQL As String 
     Dim dbConn As OleDbConnection = Nothing 

     Dim filepath = "G:\WebSites\WebSite1\App_Data\register_log.ldf" 
     dbConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\registration.accdb") 
     dbConn.Open() 

     StrSQL = "insert into tblregistration (Name, E-mail) values (?,?)" 
     objcmd = New OleDbCommand(StrSQL, dbConn) 
     objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txtname", Strnm)) 
     objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txtemail", Strem)) 


     'close connection 
     dbConn.Close() 
     Response.Write("submitted successfully") 
+1

你沒有執行查詢:'objcmd.ExecuteNonQuery()'。您還應該處理連接和命令對象。 '使用'塊對於這個好的 – Plutonix

+0

添加參數,名稱必須在查詢中有參數名稱。否則只需添加不帶參數名稱的參數。 –

+0

@krish OleDB只是將名爲PARAMS作爲佔位符,並沒有實際使用它們作爲命名參數 – Plutonix

回答

0

您沒有執行查詢。您的代碼也可以用Using塊,其聲明和對事物處置縮短:

Dim Strnm As String = Request.Form("txtname") 
Dim Strem As String = Request.Form("txtemail") 

Dim StrSQL = "insert into tblregistration (Name, E-mail) values (?,?)" 

Using dbConn = New OleDbConnection(connection string...), 
    objcmd = New OleDbCommand(StrSql, objConnection) 

    dbConn.Open() 

    objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txtname", Strnm)) 
    objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txtemail", Strem)) 

    objcmd.ExecuteNonQuery  ' execute the query 
End Using    ' close and dispose of dbConn, objcmd 


Response.Write("submitted successfully") 

還有2級連接聲明(objConnectiondbConn)代碼的對象。

Using的行爲像Dim到目前爲止代碼可以聲明和初始化一行代碼中的東西。但主要是它確保這些東西在封閉結束時關閉並處理掉。代碼還使用構造函數在創建時將SQL和連接傳遞給dbConnobjCmd。它只保存一行或兩行代碼,但假設他們從創建時就擁有所需的內容。

您也可以使用函數來返回Connection對象,以便您不必在整個代碼中都有連接字符串。見this answer

相關問題