【问题标题】:SQL Update Command In Visual StudioVisual Studio 中的 SQL 更新命令
【发布时间】:2014-06-03 12:23:56
【问题描述】:

我在 Visual Studio 中使用 UPDATE 命令时遇到了一些问题。
我会直入主题。

我有一个 MS Access 关系数据库后端,我已经在 vb 中连接了它,我可以显示记录等,但是我无法更新它。 我在 Form_Load 中有这个

Dim strQuery As String = "SELECT ContractID AS [Contract ID], ProductName AS [Product Name], SigningDate AS [Date Signed], StartDate AS [Start Date], EndDate AS [End Date] FROM ((PolicyContract) INNER JOIN Clients on PolicyContract.ClientID = Clients.ClientID) INNER Join Products on PolicyContract.ProductID = Products.ProductID WHERE PolicyContract.ClientID = '" + clientID + "' ORDER BY PolicyContract.ContractID;"

    'initialise the data adapter
    daPolicyContract = New OleDbDataAdapter(strQuery, connection)
    'initialise the dataset
    dsAllroundInsurance = New DataSet
    'fill the dataset
    daPolicyContract.Fill(dsAllroundInsurance, "PolicyContract")

    'bind data grid to data in PolicyContract table
    dgvPolicies.DataSource = dsAllroundInsurance.Tables("PolicyContract")
    'autosize columns to fit grid size
    dgvPolicies.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill

它工作正常,它显示正确的记录,但我想更新记录。
当我单击一个按钮时,我想更新特定合同的“结束日期”值。当我执行这个命令时:

UPDATE ((PolicyContract) 
INNER JOIN Clients
ON PolicyContract.ClientID = Clients.ClientID)
INNER JOIN Products
ON PolicyContract.ProductID = Products.ProductID
SET PolicyContract.EndDate = '1/1/1111'
WHERE PolicyContract.ContractID = 'C100102';

在 MS Access 中正确更新,所以命令没问题。当我尝试在这样的单击事件处理程序中执行命令时:

daPolicyContract.UpdateCommand = New OleDbCommand("UPDATE ((PolicyContract) INNER JOIN Clients ON PolicyContract.ClientID = Clients.ClientID) INNER JOIN Products ON PolicyContract.ProductID = Products.ProductID SET PolicyContract.EndDate = '1/1/1111' WHERE PolicyContract.ContractID = 'C100102';", connection)

什么都没有发生,我没有收到错误消息,但它仍然没有更新。我很确定 vb 正在执行命令,但它没有更新数据库。
任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 你有一个 SQL 注入漏洞。
  • 你执行命令了吗? (我的意思是你叫 daPolicyContract.Update() 吗?
  • 这是一个学校项目 SQL 注入漏洞不是问题。是的,我将上面的 vb 更新命令放在了单击事件处理程序中,当我单击按钮时,命令执行时没有错误,但是如果我重新加载表单或在 MS 访问中检查数据库,它还没有更新。

标签: sql vb.net visual-studio-2012 sql-update


【解决方案1】:

我看不到命令​​的执行。你必须确保在你的命令上调用ExecuteNonQuery()。否则不会被执行。

【讨论】:

  • 我还没有执行那个命令。这可能是问题所在。我在哪里执行这个?语法是什么?
  • 天哪,就是这样。谢谢!!在学校里,我们一直在使用命令生成器来更新语句,但我有多个基表,所以我需要自己编写。非常感谢,我什至从未听说过这个命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多