更新 *。 SDF 数据库文件使用 VB.NET
Update *. SDF database file using VB.NET
我在 Visual Studio 和 SQL Server Compact Edition 3.5 中创建了一个桌面应用程序。我可以毫无错误地插入一条记录。我的问题是 运行 更新后没有错误,之后数据库没有任何变化。
这是我的更新代码:
Dim Cmd As SqlCeCommand
Try
If Con.State = ConnectionState.Closed Then Con.Open()
Cmd = New SqlCeCommand("Update [Meds] SET [Brand] =@Brand,[GenericName]=@GenericName,[Dosage]=@Dosage,[Form]=@Form,[StockDose]=@StockDose,[Supplier]=@Supplier,[Manufacturer]=@Manufacturer,[Quantity]=@Quantity,[PerUnit1]=@PerUnit1,[ExpiryDate]=@ExpiryDate,[SellingPrice]=@SellingPrice WHERE [PerUnit2] =@PerUnit2", 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()
尝试添加:
Dim modified = Cmd.ExecuteNonQuery()
If modified = 0 Then Throw New Exception("Nothing was updated")
如果修改后的值 = 0,那么您的 WHERE 子句有问题,您没有匹配记录。
如果修改值 <> 0 则更新查询 运行 并匹配某些内容。所以问题一定出在您正在更新的值上,或者您正在检查这些值。
您可能检查错了地方,请在您的 bin/debug 文件夹中查找 sdf 文件的副本。最好的方法是在开发期间在连接字符串中使用完整路径(或在运行时构建连接字符串)
感谢所有回答我问题的人。
问题出在我的 WHERE 子句语句中,我正在尝试修改不匹配的记录。
感谢 FloatingKiwi。
我在 Visual Studio 和 SQL Server Compact Edition 3.5 中创建了一个桌面应用程序。我可以毫无错误地插入一条记录。我的问题是 运行 更新后没有错误,之后数据库没有任何变化。
这是我的更新代码:
Dim Cmd As SqlCeCommand
Try
If Con.State = ConnectionState.Closed Then Con.Open()
Cmd = New SqlCeCommand("Update [Meds] SET [Brand] =@Brand,[GenericName]=@GenericName,[Dosage]=@Dosage,[Form]=@Form,[StockDose]=@StockDose,[Supplier]=@Supplier,[Manufacturer]=@Manufacturer,[Quantity]=@Quantity,[PerUnit1]=@PerUnit1,[ExpiryDate]=@ExpiryDate,[SellingPrice]=@SellingPrice WHERE [PerUnit2] =@PerUnit2", 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()
尝试添加:
Dim modified = Cmd.ExecuteNonQuery()
If modified = 0 Then Throw New Exception("Nothing was updated")
如果修改后的值 = 0,那么您的 WHERE 子句有问题,您没有匹配记录。
如果修改值 <> 0 则更新查询 运行 并匹配某些内容。所以问题一定出在您正在更新的值上,或者您正在检查这些值。
您可能检查错了地方,请在您的 bin/debug 文件夹中查找 sdf 文件的副本。最好的方法是在开发期间在连接字符串中使用完整路径(或在运行时构建连接字符串)
感谢所有回答我问题的人。
问题出在我的 WHERE 子句语句中,我正在尝试修改不匹配的记录。
感谢 FloatingKiwi。