很多程序有系统保留字(也称关键字),sql2000、access都不例外。这次为了偷懒,serv-u的数据库中竟然还用user作为字段。开始还简单,把user用[]括起来就可以正常运行了。可是在处理用rs.open,conn,1,3来执行更新(查询更新)时就发现很棘手的问题。系统总是提示:user处有问题!如果把rs("user")写成rs("[user]"),提示找不到该字段,怎么办呢?
无意中想起自己在学校写serv-u的ini文件数据导入到sql的转换文件时,并没有出现这种情况。好像也是用rs.open,conn,1,3来执行更新的。马上找到这个文件,经过仔细排查对比,唯一的区别在于sql的连接代码上(连接字符),出现问题的连接代码是这样写的:
set conn=server.createobject("adodb.connection")
StrSQL="driver={sql server};server=127.0.0.1;database=servdisk;uid=serv;pwd=serv"
conn.open StrSQL
没有出现问题的连接代码是这样写的:
dbsql="servdisk" 'Initial Catalog=数据库名称
Pass_word="serv" 'Password=帐号密码
User_ID="serv" 'User ID=登陆帐号
Data_Source="127.0.0.1" 'Data Source=服务名称或者ip / 本地选(local) 或 localhost
cntimeout=15
StrSQL="Provider=SQLOLEDB.1;Password='"&pass_word&"';Persist Security InFso=true;User ID='"&User_ID&"';Initial Catalog='"&dbsql&"';Data Source='"&Data_Source&"';CONNect Timeout="&cntimeout&""
Set CONN = Server.CreateObject("ADODB.CONNection")
CONN.Open StrSQL