为什么我的SQL更新中总是出现参数错误?

时间:2018-11-14 22:16:41

标签: sql ms-access pyodbc

我一直在尝试将SQL与PYQT4结合使用,以使用用户输入到我的程序中的信息更新访问数据库。我不想只更新特定记录和特定列数(10列中的5列)来更新所有记录。但是,我不断收到错误消息:

  

“ pyodbc.Error:('07002','[07002] [Microsoft] [ODBC Microsoft Access   驱动程序]参数太少。预期为6.(-3010)(SQLExecDirectW)')“

我似乎无法解决。

这是我的代码:

SelectDatabase.execute('UPDATE Order_Table SET DateDue=(dateDueString), TimeDue=(timeDueString), PaymentType=(paymentExp), Paid=(paidExp), Customer_ID=(customerExp) WHERE OrderLine_ID=(orderlineExp)') 

方括号内的值是我创建的变量,我正尝试调用它们,我已经对其进行了多次验证,包括对它们的拼写检查,但我发现这方面没有问题。

如果有人有任何想法或需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

我设法找出问题所在。我试图在我的SQL中使用一个变量,一旦我格式化了不同的格式后,立即可以将其更改为该变量。

  SelectDatabase.execute('UPDATE Order_Table SET DateDue=?, TimeDue=?, PaymentType=?, Paid=?, Customer_ID=? WHERE OrderLine_ID=?', dateDueString,timeDueString,paymentExp,paidExp,customerExp,orderlineExp)

通过这种方式,可以在SQL过程中将值更改为未知数,并在编辑后按顺序引用它们,以允许找到变量的字符串值和要编辑的正确列。

谢谢您的帮助。

答案 1 :(得分:0)

好吧,我想您首先需要在SQL中使用所有参数创建存储过程,然后再简单地调用它。

setTimeout(function() {
  $('.testDiv')[0].childNodes[1].nodeValue = "1"
}, 500);
setTimeout(function() {
  $('.testDiv')[0].childNodes[1].data = '2'
}, 900);

setTimeout(function() {
  var $el = $('.testDiv'),
    $preStuff = $el.find('span').clone(true);
  $el.text('3').prepend($preStuff);

}, 1300);