freedom 发表于 2012-1-3 00:24:06

mdb update的问题-难道是bug? [已解决]

本帖最后由 freedom 于 2012-1-3 20:24 编辑


$test ="update " & $tblname & " set Name='"&$name&"',PassWord='"&$pass&"',Other1='"&$pass&"' WHERE ID" & " = " & $Strnspin
MsgBox("", "", $test)
$addfld.Execute($test)
用update更新数据库的时候,提示update语法不对,在网上查了很多资料,还有论坛上也查了,都是合适的啊。请大神帮忙看看。





我新建了一个数据库,只要列名为 password那么就不能用update 更新数据。。。


$mdb_data_path=@ScriptDir&"\tets.mdb"
$mdb_data_pwd=""
$tblname="users"
$read1="admin888"
$read2="8888888"
$Strnspin="1"
$addfld = ObjCreate("ADODB.Connection")
                $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &$mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                $addfld.execute("update " & $tblname & " setname='"&$read1&"',password='"&$read2&"' WHERE id" & " = " & $Strnspin)
                $addfld.close

nmgwddj 发表于 2012-1-3 01:51:03

$test = "update " & $tblname & " set name='" & $name & "',Password='" & $pass & "',other1='" & $pass & "' where id=" & $Strnspin试试

freedom 发表于 2012-1-3 01:59:36

本帖最后由 freedom 于 2012-1-3 02:08 编辑

试试
nmgwddj 发表于 2012-1-3 01:51 http://www.autoitx.com/images/common/back.gif


    不好意思没看懂这两句有哪里不一样的。。。

现在找到出错的问题了。只要更新 password这个列里的数据就会报错。不更新这个列的数据,数据库就可以正常更新。郁闷了。。。

或是手动在数据库里面把password这个列名,改成 password1也可以正常更新。

难度数据库还可以设置某些列不能用命令更新??直接在access里面是可以修改的。

freedom 发表于 2012-1-3 02:00:06

回复 2# nmgwddj


      不好意思没看懂这两句有哪里不一样的。。。

现在找到出错的问题了。只要修改 password这个列就会报错。把修改这个列取消掉,数据库就可以正常更新。郁闷了。。。

nmgwddj 发表于 2012-1-3 02:13:19

是不是数据类型不对?

freedom 发表于 2012-1-3 02:17:31

回复 5# nmgwddj


    数据类型都是文本。。
要不加我QQ,我把数据库传你,帮看看?

56559878

freedom 发表于 2012-1-3 02:28:01

----> COM Error Encountered in 带mdw数据库写入.au3
----> $ErrorScriptline = 34
----> $ErrorNumberHex = 80020009
----> $ErrorNumber = -2147352567
----> $ErrorWinDescription =
----> $ErrorDescription = UPDATE 语句的语法错误。
----> $ErrorSource = Microsoft JET Database Engine
----> $ErrorHelpFile =
----> $ErrorHelpContext = 5003144
----> $ErrorLastDllError = 0

auto 发表于 2012-1-3 08:50:10

本帖最后由 auto 于 2012-1-3 08:51 编辑

$mdb_data_path=@ScriptDir&"\tets.mdb"
$mdb_data_pwd=""
$tblname="users"
$read1="admin888"
$read2="8888888"
$Strnspin="1"
$addfld = ObjCreate("ADODB.Connection")
                $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &$mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                $addfld.execute("update " & $tblname & " setname='"&$read1&"',password'"&$read2&"' WHERE id" & " = " & $Strnspin)
                $addfld.close


      中间少了“=”也能更新成功?

hzxymkb 发表于 2012-1-3 09:40:56

update 语法错误,去百度一下update的语法!
不要动不动就BUG!

freedom 发表于 2012-1-3 17:32:46

回复 9# hzxymkb


   
$addfld.execute("update " & $tblname & " setname='"&$read1&"',password='"&$read2&"' WHERE id" & " = " & $Strnspin)


$addfld.execute("update " & $tblname & " setname='"&$read1&"'WHERE id" & " = " & $Strnspin)


那麻烦版主帮看看这两句有什么,有没有什么语法错误,只要更新password列的数据就出现语法错误。

第一句不能执行,第二句就可以。

freedom 发表于 2012-1-3 17:34:03

回复 8# auto


    不好意思,输代码的时候,少输了个=号。

auto 发表于 2012-1-3 17:43:03

回复auto


    不好意思,输代码的时候,少输了个=号。
freedom 发表于 2012-1-3 17:34 http://www.autoitx.com/images/common/back.gif


    换个列名应该就可以了,应该是保留关键字
password 可以改为PSW 或UserPassword之类的

freedom 发表于 2012-1-3 17:45:39

回复 12# auto


    如果能换列名就好了。关键是不能换。

auto 发表于 2012-1-3 19:48:16

回复auto


    如果能换列名就好了。关键是不能换。
freedom 发表于 2012-1-3 17:45 http://www.autoitx.com/images/common/back.gif

如果一定要用数据库保留关键字,可以添加[]来解决

$addfld.execute("update " & $tblname & " setname='"&$read1&"',='"&$read2&"' WHERE id" & " = " & $Strnspin)

hzxymkb 发表于 2012-1-3 19:48:41

回复 13# freedom


    传个数据库上来!我这里没有ACCESS·
页: [1] 2
查看完整版本: mdb update的问题-难道是bug? [已解决]