PB连接access数据库

来源:互联网 发布:ps做淘宝详情页切片 编辑:程序博客网 时间:2024/06/11 16:26
/*********************************************************************************
*函数名称:f_reg_db_access
*参数列表:无
*返回值:0-失败,1-成功
*作者:李永结
*函数功能:注册数据库(微软access)
*创建时间:2011/10/03
*说明:需要文件:
*********************************************************************************/


long ll_rtn
string ls_driver,ls_db_path,ls_db_name,ls_ds_name,ls_dbms


//设置数据库路径及文件名
ls_db_path = gs_rootpath +"\modeldb.accdb" 
//设置数据库名称
ls_db_name = "modeldb.accdb" 
//设置ODBC数据源名称
ls_ds_name = "modeldb.accdb"


//如果连接数据库方式不是ODBC,则不需要注册数据库
ls_dbms = trim(profilestring("system.ini","database","DBMS","ODBC"))
if upper(ls_dbms) <> "ODBC" then
f_log("连接数据库方式不是ODBC,不需注册数据库")
return 1
end if


//检查数据库是否已经注册
ll_rtn=RegistryGet("HKEY_current_user\Software\ODBC\ODBC.INI\ODBC Data Sources","modeldb.accdb",RegString!,ls_driver)
IF ll_rtn=1 THEN
f_log(ls_db_name+"数据库已经注册,不需要再注册")
RETURN 2
ELSE
f_log(ls_db_name+"数据库没有注册,准备注册")
END IF


//取得数据库驱动程序的路径
ll_rtn=RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb, *.accdb)","driver",RegString!,ls_driver)
IF ll_rtn=-1 THEN
Messagebox("错误","应用程序无法获取Windows的系统目录,系统统将终止运行!",Stopsign!)
f_log("应用程序无法获取Windows的系统目录,系统统将终止运行!")
RETURN -1
END IF


//添加数据源
ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\ODBC Data Sources',ls_ds_name,RegString!,'Microsoft Access Driver (*.mdb, *.accdb)')
IF ll_rtn=-1 THEN
Messagebox('错误','应用程序无法设置ODBC DATA SOURCE名称,系统将终止运行',StopSign!)
RETURN -1
END IF


//设置ODBC.INI的细节
ll_rtn=RegistrySet("HKEY_current_user\Software\ODBC\odbc.ini\" + ls_db_name,"driver",RegString!,ls_driver)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(driver),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(driver),系统将终止运行")
RETURN -1
END IF


ll_rtn=RegistrySet("HKEY_current_user\Software\ODBC\odbc.ini\" + ls_db_name,"DBQ",RegString!,ls_db_path)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(DBQ),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(DBQ),系统将终止运行")
RETURN -1
END IF


ll_rtn = RegistrySet("HKEY_current_user\Software\ODBC\odbc.ini\" + ls_db_name,"FIL",RegString!,'MS Access')
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(MS Access),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(MS Access),系统将终止运行")
RETURN -1
END IF


ll_rtn = RegistrySet("HKEY_current_user\Software\ODBC\odbc.ini\" + ls_db_name,"UID",RegString!,'')
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(UID),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(MS Access),系统将终止运行")
RETURN -1
END IF


ll_rtn = Registryset("HKEY_current_user\Software\ODBC\odbc.ini\" + ls_db_name,"DriverId",RegULong!, 25)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(DriverId),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(DriverId),系统将终止运行")
RETURN -1
END IF


ll_rtn = Registryset("HKEY_current_user\Software\ODBC\odbc.ini\" + ls_db_name,"SafeTransactions",RegULong!, 0)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(SafeTransactions),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(SafeTransactions),系统将终止运行")
RETURN -1
END IF


//设置ODBC.INI\engines子健的细节
ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\' + ls_db_name,'engines',RegString!,'')
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(engines),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(engines),系统将终止运行")
RETURN -1
END IF


ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\dianlicl\engines\jet','implicitcommitsync',RegString!,'')
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(engines\jet\implicitcommitsync),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(engines\jet\implicitcommitsync),系统将终止运行")
RETURN -1
END IF


ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\dianlicl\engines\jet','usercommitsync',RegString!,'yes')
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(engines\jet\usercommitsync),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(engines\jet\usercommitsync),系统将终止运行")
RETURN -1
END IF


ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\dianlicl\engines\jet','maxbuffersize',regulong!,2048)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(engines\jet\maxbuffersize),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(engines\jet\maxbuffersize),系统将终止运行")
RETURN -1
END IF


ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\dianlicl\engines\jet','pagetimeout',regulong!,5)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(engines\jet\pagetimeout),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(engines\jet\pagetimeout),系统将终止运行")
RETURN -1
END IF


ll_rtn=RegistrySet('HKEY_current_user\Software\ODBC\ODBC.INI\dianlicl\engines\jet','threads',regulong!,3)
IF ll_rtn = -1 THEN
Messagebox('错误','应用程序无法设置odbc.ini(engines\jet\threads),系统将终止运行',StopSign!)
f_log("应用程序无法设置odbc.ini(engines\jet\threads),系统将终止运行")
RETURN -1
END IF


f_log(ls_db_name + "数据库注册完成")


return 1