2016-08-09 26 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。