2016-08-09 35 views
0

我有一個在Visual Studio和SQL Server Compact Edition 3.5中創建的桌面應用程序。我可以插入一條沒有錯誤的記錄。我的問題是運行更新後沒有錯誤,之後數據庫沒有任何更改。更新*。使用VB.NET的SDF數據庫文件

這裏是我的更新代碼:

Dim Cmd As SqlCeCommand 
     Try 
      If Con.State = ConnectionState.Closed Then Con.Open() 
      Cmd = New SqlCeCommand("Update [Meds] SET [Brand] [email protected],[GenericName][email protected],[Dosage][email protected],[Form][email protected],[StockDose][email protected],[Supplier][email protected],[Manufacturer][email protected],[Quantity][email protected],[PerUnit1][email protected],[ExpiryDate][email protected],[SellingPrice][email protected] WHERE [PerUnit2] [email protected]", Con) 
      Cmd.Parameters.Add(New SqlCeParameter("@Brand", SqlDbType.NVarChar)).Value = txtBrand.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@GenericName", SqlDbType.NVarChar)).Value = txtGenericName.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Dosage", SqlDbType.NVarChar)).Value = txtDosage.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Form", SqlDbType.NVarChar)).Value = cbForm.SelectedText 
      Cmd.Parameters.Add(New SqlCeParameter("@StockDose", SqlDbType.NVarChar)).Value = txtStockDose.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Supplier", SqlDbType.NVarChar)).Value = txtSupplier.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Manufacturer", SqlDbType.NVarChar)).Value = txtManufacturer.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Quantity", SqlDbType.NVarChar)).Value = txtQty.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@PerUnit1", SqlDbType.NVarChar)).Value = cbPerUnit1M.SelectedText 
      Cmd.Parameters.Add(New SqlCeParameter("@ExpiryDate", SqlDbType.DateTime)).Value = dtpExpiry.Value 
      Cmd.Parameters.Add(New SqlCeParameter("@SellingPrice", SqlDbType.NVarChar)).Value = txtPrice.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@PerUnit2", SqlDbType.NVarChar)).Value = cbPerUnit2M.SelectedText 
      Cmd.ExecuteNonQuery() 
      MsgBox("Items already UPDATED!") 
      List.Show() 
      Me.Close() 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 
     Con.Close() 
+0

請分享您的連接字符串 – ErikEJ

+0

Dim Con As OleDbConnection = New OleDbConnection(「Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\ Users \ Adrian \ Documents \ Pharmacy.accdb;」) – dran1979

+0

這不是SQL Server精簡版,即Microsoft Access? ! – ErikEJ

回答

0

嘗試增加:

Dim modified = Cmd.ExecuteNonQuery() 
If modified = 0 Then Throw New Exception("Nothing was updated") 

如果修改後的值= 0,那麼什麼是錯的與你的WHERE子句和你不匹配的記錄。

如果修改後的值<> 0,那麼更新查詢會運行並匹配一些東西。因此,問題必須與您正在更新的值相關,或者您正在檢查這些值。

+0

將嘗試此..謝謝 – dran1979

+0

謝謝,我的UPDATE現在正在工作,非常感謝你,直到下一次先生 – dran1979

+0

沒問題。如果這個工作正在進行中,請您按照接受的方式打勾。 – FloatingKiwi

0

您可能正在檢查錯誤的地方,請在bin/debug文件夾中查找sdf文件的副本。最好的方法是在開發過程中在連接字符串中使用完整路徑(或在運行時構建連接字符串)

+0

嗨ErikEJ,我檢查了路徑,它是正確的。我正在使用相同的路徑在我的INSERT查詢工作。 – dran1979

0

感謝所有回答我的問題的人。

問題出在我的哪裏子句聲明,我試圖修改一個不匹配的記錄。

感謝FloatingKiwi。