PowerBuilder 中连接Access数据库的三种方法
方式一:
SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='driver=Microsoft Access Driver (*.mdb);DBQ=c:\foodmart.mdb'" CONNECT; IF SQLCA.SQLCode <> 0 THEN MessageBox("数据库连接失败","请与管理员联系。错误号:" + String(SQLCA.SQLCode) + "~r~n错误原因:" + SQLCA.SQLErrText) RETURN else MessageBox("数据库连接成功","现在进入系统... ...") end if
方式二:
SQLCA.DBMS = "OLE DB" SQLCA.AutoCommit = False SQLCA.DBParm = "PROVIDER='Microsoft.Jet.OLEDB.4.0',DATASOURCE='C:\foodmart.mdb'" CONNECT;
方式三:
建立DSN,通过ODBC连接。这个就不用多说了。
例如:
// Profile my_ass SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=my_ass'"
问题:
catalog tables could not be created and are not available for use
问题解决方法:
这种情况多见于从SQL server 转到 Access 数据库,用ODBC连接的情况
把sqlserver数据库里的五个‘pb’字母开头的数据表导入到access数据库里去,再连接就不提示了
关于动态注册ODBC数据源
关于动态注册Access数据源
//*********************************************** // 函数名: gf_setodbc_access // 功能: 完成access数据源的注册功能 // 输入参数: // as_database 数据库名 // (即Access数据库文件名字,不含扩展名) // as_path 数据库文件所在的目录 // 返回值: // true 表示自动配置成功 // false 表示自动配置失败 //*************************************************** boolean lb_rtn string ls_root,ls_root_dsn,ls_root_Jet,ls_root_Engines integer li_rtn string ls_dsnname,ls_dbfullname,ls_driver,temp,ls_version string ls_syspath environment env integer rtn ls_syspath = Space( 40 ) //获得*作系统的目录 GetSystemDirectoryA(ls_syspath,60) ls_driver = ls_syspath + "\odbcjt32.dll" lb_rtn = true ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini" //数据源名字为:文件名字+“_DT” ls_dsnname = as_database + "_DT" ls_root_dsn = ls_root + "\" + ls_dsnname ls_root_Engines = ls_root_dsn + "\" + "Engines" ls_root_Jet = ls_root_Engines + "\" + "Jet" ls_dbfullname = as_path + "\" + as_database + ".mdb" //注册数据源的名字 li_rtn = registryset(ls_root,ls_dsnname,regstring!,"") if li_rtn= - 1 then return false end if //注册数据库名字 li_rtn = registryset(ls_root_dsn,"DBQ",regstring!,ls_dbfullname) if li_rtn= - 1 then return false end if //注册数据库驱动程序 li_rtn = registryset(ls_root_dsn,"Driver",regstring!,ls_driver) if li_rtn= - 1 then return false
连接ACCESS不能修改数据问题
打开数据窗口,选择菜单中rows,然后选择update properties 然后选中allow update 之后,在将 每个tab order 的顺序进行设置,从10开始 ,就可以了 ;