Database vb.net如何在我的表格中添加一个数值,并在我的数据库中添加一个数值,并作为新数据更新

Database vb.net如何在我的表格中添加一个数值,并在我的数据库中添加一个数值,并作为新数据更新,database,vb.net,ms-access,Database,Vb.net,Ms Access,这是我的代码,我正在尝试添加2个数字,即Vallbltotalamount.Text和vallbldeposite.Text,其中包含我数据库中的旧数据并更新为新数据,但现在我的代码不起作用,数据将只插入新数字,而不在我的数据库中添加旧数字。 请有人帮帮我 首先,永远不要使用AddWithValue。。有时,它可能不会导致错误/可能不会与数据冲突,但在大多数情况下,它会损坏数据。原因是,它会推断要查询的数据库类型参数 继续讨论下一个问题,您希望使用表中存在的值更新表。除非您确实先从表中检索数据,

这是我的代码,我正在尝试添加2个数字,即Vallbltotalamount.Text和vallbldeposite.Text,其中包含我数据库中的旧数据并更新为新数据,但现在我的代码不起作用,数据将只插入新数字,而不在我的数据库中添加旧数字。 请有人帮帮我

首先,永远不要使用AddWithValue。。有时,它可能不会导致错误/可能不会与数据冲突,但在大多数情况下,它会损坏数据。原因是,它会推断要查询的数据库类型参数

继续讨论下一个问题,您希望使用表中存在的值更新表。除非您确实先从表中检索数据,然后再次使用数据更新表,否则这不是问题

当前您使用的Update语句/查询不会从表/数据库返回/检索值

在这种情况下,您可以使用Select语句:

Private Sub btnpay_Click(sender As Object, e As EventArgs) Handles btnpay.Click
    Dim sql1 As String
    sql1 = "UPDATE GuestDetil SET OutStandingFee=@outstanding,TotalAmount=@totalamount,TotalPaid=@totalpaid WHERE ICNumber=@icnum"
    conn1 = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Sparrow's Resort Database.accdb; Persist Security Info=False;")
    conn1.Open()
    cmd1 = New OleDbCommand(sql1, conn1)
    cmd1.CommandText = sql1
    cmd1.Parameters.AddWithValue("@outstanding", lblnewoutstanding.Text)
    cmd1.Parameters.AddWithValue("@totalamount", Val(lbltotalamount.Text) + Val("@totalamount"))
    cmd1.Parameters.AddWithValue("@totalpaid", Val(lbldeposit.Text) + Val("@totalpaid"))
    cmd1.Parameters.AddWithValue("@icum", lblIC.Text)
    cmd1.ExecuteNonQuery()
    conn1.Close()

    Me.Close()

End Sub
但是你也需要一个WHERE条件,这取决于你的职位/要求

Select * from tableName
我想您知道如何处理@columnValue参数

然后您可以使用2个选项来读取数据

一,。您可以使用datatable。这只有在您希望稍后对该表执行某些操作时才有必要,否则这只是浪费时间和对性能的威胁

您可以使用比datatable快得多的dataReader。我将展示这两者的示例:

数据表

从数据表中获取值

数据阅读器

然后,您可以按照如下方式使用update语句:

  'use OleDbCommand as same as i used in the DATATABLE section

  Dim dr as DataReader = cmd.ExecuteReader

  dr.Read()

  Dim Value1 = dr(0).ToString 

希望这有助于丰富您的知识:

对不起,我不太了解cmd.Parameters的含义。Add@outstanding,OledbType.Varchar.Value=yourValue+value1这行yourValue和value1的值是多少?因为其中一个值在数据库中,所以在本例中,YouValue可能是LBLNEWOUTRANGE.Text和value1是根据我们的帖子从数据库中检索到的列值,它可能是@totalamount。。。如果帮助值1不能是@totalamount,请不要忘记将其标记为答案,因为我无法将带来@this line dim Value1=dr0.ToString的内容变暗。为什么不呢??只需使用Dim Value1=dr0.ToString并将0替换为所需的列号。。。
Dim cmd as New OleDbCommand("Use the select statement stated above",connection)
cmd.Parameters.Add("@paramName" , OledbType.VarChar).Value = ValueHere
Dim dt as New DataTable
Dim ada as New OleDbDataAdapter(cmd)
ada.Fill(dt)
  Dim value1 = table(0)(1).ToString ' Here 0 is the row count and 1 is the column count .. tho row count doesn't matter as your select statement will return only one row
  'use OleDbCommand as same as i used in the DATATABLE section

  Dim dr as DataReader = cmd.ExecuteReader

  dr.Read()

  Dim Value1 = dr(0).ToString 
  Dim cmd As New OledbCommand(""UPDATE GuestDetil SET OutStandingFee=@outstanding,TotalAmount=@totalamount,TotalPaid=@totalpaid WHERE ICNumber=@icnum", connection)

  cmd.Parameters.Add("@outstanding" , OledbType.Varchar).Value = yourValue + value1

  cmd.ExecuteNonQuery()