2015-08-21 237 views
0

我一直在爲此排查一個星期。我嘗試將一個值插入到SQL Server數據庫中。它不顯示任何錯誤,但是當我檢查數據庫時,沒有插入任何數據。我可能在這裏做錯了什麼,但我找不到它。感謝您的幫助。ASP.NET,VB.NET無法將數據插入到SQL Server數據庫中

Dim connect As New SqlConnection(ConfigurationManager.ConnectionStrings("SqlServer").ToString()) 

Using coa As New SqlCommand() 
    With coa 
     .Connection = connect 
     .CommandType = CommandType.Text 
    End With 

    Try 
     connect.Open() 

     Dim insertcmd As String 

     insertcmd = "insert into tblUserSection (@newValue, @SectionName, @newSectionID) values ," _ 
     & "@newValue, @SectionName, @newSectionID);" 

     coa.Parameters.Add(New SqlParameter("@newValue", SqlDbType.BigInt)) 
     coa.Parameters("@newValue").Value = newValue 

     coa.Parameters.Add(New SqlParameter("@SectionName", SqlDbType.NVarChar)) 
     coa.Parameters("@SectionName").Value = SectionName.ToString 

     coa.Parameters.Add(New SqlParameter("@newSectionID", SqlDbType.BigInt)) 
     coa.Parameters("@newSectionID").Value = newSectionID 

     coa.ExecuteNonQuery() 
     connect.Close() 

     MsgBox("success insert") 

    Catch ex As Exception 
     MsgBox("Fail to Save to database") 
    End Try 
End Using 
+0

不知道爲什麼你不會看到一個異常;該查詢字符串看起來不正確。 –

+0

任何想法如何寫一個正確的查詢? –

+0

我編輯來自Microsoft頁面的示例以符合我的代碼。 –

回答

1

插入命令不正確。它具有列名和值的參數;參數名稱只能用於值。

假設列名稱與參數名稱匹配,這裏是該命令的更新版本。

insertcmd = "insert into tblUserSection (newValue, SectionName, newSectionID) values ," _ 
     & "@newValue, @SectionName, @newSectionID);" 

更奇怪的問題是爲什麼不出現錯誤。這是因爲insert語句永遠不會被執行。 ExecuteNonQuery命令針對連接運行,但insertcmd從不以任何方式與執行相關聯。

我建議創建一個SQLCommand並使用它來執行查詢。下面是一個示例(和我的代碼可能有錯誤,我的vb.net荒廢):

Dim sqlcommand as New SqlCommand(coa) 
sqlcommand.text = insertcmd 
sqlcommand.type = Text 
sqlcommand.Parameters.Add(New SqlParameter("@newValue", SqlDbType.BigInt)) 
sqlcommand.Parameters("@newValue").Value = newValue 
sqlcommand.Parameters.Add(New SqlParameter("@SectionName", SqlDbType.NVarChar)) 
sqlcommand.Parameters("@SectionName").Value = SectionName.ToString 
sqlcommand.Parameters.Add(New SqlParameter("@newSectionID", SqlDbType.BigInt)) 
sqlcommand.Parameters("@newSectionID").Value = newSectionID 
sqlcommand.ExecuteNonQuery() 
+0

Plus:**在** values的關鍵字之後,會有一個額外的錯誤逗號,並且'values'關鍵字後面的後括號缺失.... –

+0

與我所做的類似。仍然沒有運氣。一切編譯並運行良好。但是在數據庫中沒有更新。 –

0

您需要設置的CommandText財產的SqlCommand創建插入命令字符串之後。 like:

Dim connect As New SqlConnection(ConfigurationManager.ConnectionStrings("SqlServer").ToString()) 
    Using coa As New SqlCommand() 
     With coa 
      .Connection = connect 
      .CommandType = CommandType.Text 
     End With 
     Try 
      connect.Open() 
      Dim insertcmd As String 
      insertcmd = "insert into [TableName] (newValue, SectionName, newSectionID) values " _ 
      & "(@newValue, @SectionName, @newSectionID);" 
      coa.CommandText = insertcmd 
      coa.Parameters.Add(New SqlParameter("@newValue", SqlDbType.BigInt)) 
      coa.Parameters("@newValue").Value = newValue 
      coa.Parameters.Add(New SqlParameter("@SectionName", SqlDbType.NVarChar)) 
      coa.Parameters("@SectionName").Value = SectionName.ToString() 
      coa.Parameters.Add(New SqlParameter("@newSectionID", SqlDbType.BigInt)) 
      coa.Parameters("@newSectionID").Value = newSectionID 
      coa.ExecuteNonQuery() 
      connect.Close() 
      MsgBox("success insert") 
     Catch ex As Exception 
      MsgBox("Fail to Save to database") 
     End Try 
    End Using 
+0

我插入命令文本。但仍然不工作。 –

+0

@IsmaelBinAzman使用這個完整的代碼,在我的最後工作正常。我在你的查詢字符串中發現了一些問題。 –

相關問題