【问题标题】:Update *. SDF database file using VB.NET更新 *。使用 VB.NET 的 SDF 数据库文件
【发布时间】:2016-08-09 03:08:15
【问题描述】:

我有一个在 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 Con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Adrian\Documents\Pharmacy.accdb;")
  • 那不是 SQL Server Compact 版本,那是 Microsoft Access ?? !!
  • 哦,是的,对不起,先生,但我也使用 MS Access 检查故障是否来自数据库,但我错了,问题来自我的 WHERE 语句..

标签: vb.net sql-server-ce


【解决方案1】:

尝试添加:

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

如果修改后的值 = 0,那么您的 WHERE 子句有问题,并且您没有匹配记录。

如果修改后的值 0,则更新查询运行并匹配了某些内容。所以问题一定出在您正在更新的值上,或者您正在检查这些值。

【讨论】:

  • 谢谢你,我的更新现在正在工作,非常感谢你,直到下次先生
  • 没问题。如果这现在有效,您能否将答案勾选为已接受。
【解决方案2】:

您可能检查了错误的位置,请在您的 bin/debug 文件夹中查找 sdf 文件的副本。最好的方法是在开发期间在连接字符串中使用完整路径(或在运行时构造连接字符串)

【讨论】:

  • 嗨 ErikEJ,我检查了路径,它是正确的。我正在使用与我的 INSERT 查询相同的路径。
【解决方案3】:

感谢所有回答我问题的人。

问题出在我的 WHERE 子句语句中,我正在尝试修改不匹配的记录。

感谢 FloatingKiwi。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多