找回密码
 加入
搜索
查看: 9443|回复: 17

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

  [复制链接]
发表于 2012-1-3 00:24:06 | 显示全部楼层 |阅读模式
本帖最后由 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 & " set  name='"&$read1&"',password='"&$read2&"' WHERE id" & " = " & $Strnspin)
                $addfld.close

发表于 2012-1-3 01:51:03 | 显示全部楼层
$test = "update " & $tblname & " set name='" & $name & "',Password='" & $pass & "',other1='" & $pass & "' where id=" & $Strnspin
试试
 楼主| 发表于 2012-1-3 01:59:36 | 显示全部楼层
本帖最后由 freedom 于 2012-1-3 02:08 编辑
试试
nmgwddj 发表于 2012-1-3 01:51



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

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

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

难度数据库还可以设置某些列不能用命令更新??直接在access里面是可以修改的。
 楼主| 发表于 2012-1-3 02:00:06 | 显示全部楼层
回复 2# nmgwddj


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

现在找到出错的问题了。只要修改 password这个列就会报错。把修改这个列取消掉,数据库就可以正常更新。郁闷了。。。
发表于 2012-1-3 02:13:19 | 显示全部楼层
是不是数据类型不对?
 楼主| 发表于 2012-1-3 02:17:31 | 显示全部楼层
回复 5# nmgwddj


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

56559878
 楼主| 发表于 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
发表于 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 & " set  name='"&$read1&"',password'"&$read2&"' WHERE id" & " = " & $Strnspin)
                $addfld.close


        中间少了“=”也能更新成功?
发表于 2012-1-3 09:40:56 | 显示全部楼层
update 语法错误,去百度一下update的语法!
不要动不动就BUG!
 楼主| 发表于 2012-1-3 17:32:46 | 显示全部楼层
回复 9# hzxymkb


   

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


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


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

第一句不能执行,第二句就可以。
 楼主| 发表于 2012-1-3 17:34:03 | 显示全部楼层
回复 8# auto


    不好意思,输代码的时候,少输了个=号。
发表于 2012-1-3 17:43:03 | 显示全部楼层
回复  auto


    不好意思,输代码的时候,少输了个=号。
freedom 发表于 2012-1-3 17:34



    换个列名应该就可以了,应该是保留关键字
password 可以改为PSW 或UserPassword之类的
 楼主| 发表于 2012-1-3 17:45:39 | 显示全部楼层
回复 12# auto


    如果能换列名就好了。关键是不能换。
发表于 2012-1-3 19:48:16 | 显示全部楼层
回复  auto


    如果能换列名就好了。关键是不能换。
freedom 发表于 2012-1-3 17:45


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

$addfld.execute("update " & $tblname & " set  name='"&$read1&"',[password]='"&$read2&"' WHERE id" & " = " & $Strnspin)
发表于 2012-1-3 19:48:41 | 显示全部楼层
回复 13# freedom


    传个数据库上来!我这里没有ACCESS·
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 18:45 , Processed in 0.137892 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表