当前位置: 代码迷 >> PB >> pb+sql server打包有关问题
  详细解决方案

pb+sql server打包有关问题

热度:97   发布时间:2016-04-29 09:48:19.0
pb+sql server打包问题
已经完成了pb+sql server的BS数据库系统,而且pb是通过ODBC数据源与数据库连接的.我想实现在不安装pb和sql server,不配置数据源的电脑上安装打包好的文件setup.exe即可.可是不知道在setup factory下,数据库和数据源怎样配置,同时打包需要数据库文件(存储表的.MDF文件)吗?如果不需要,那数据库信息怎样打包到安装文件setup.exe.希望高手相助,感激不尽...

------解决方案--------------------
写配置脚本,安装执行脚本,如果没有MDF文件,需要个备份数据库文件,先创建再恢复,如果有MDF文件,直接附加...
------解决方案--------------------
还有你怎么可能不安装sql server呢?数据放哪?如果不想安装就有用Sybase的数据库
------解决方案--------------------
数据库需要安装,如果你把sqlserver打包到安装程序中,那估计你的安装程序不是三天二天能够完成的,估计要几个周,需要研究数据库的注册表及数据库安装程序都做了些什么工作,目前还没有人这么办

建议你不要这么做了,数据库是单独的安装程序,程序做一个安装程序即可
------解决方案--------------------
好像有个桌面版的ms sql 2000 从来都没有用过,不过数据库可以写出create语句,但是要在安装的时候连上sql ,
------解决方案--------------------
sql server 2000可以不装客户端只拷贝两个文件,就可以运行,这个可以在网上查到相关文章。偶们公司以前实验过了。 
odbc的话你可以通过注册表来设置odbc的配置
------解决方案--------------------
不安装sql不行吧,好象至少也要安装个msde2000之类的
------解决方案--------------------
你可以把你的安装分成两个步聚,先安装完MSDE2000,在安装你开发的程序,创建数据库之类的都可以在安装程序里写代码
------解决方案--------------------
odbc自动注册sql server数据源;
可以参考:

//***********************************************
// 函数名: of_setodbc_sqlserver
// 功能: 完成SQL Server ODBC数据源的注册功能
// 输入参数:
// as_database 数据库名
// as_user 数据库用户
// as_pwd 密码
// as_server 数据库服务器名称或ip
// 返回值:
// true 表示自动配置成功
// false 表示自动配置失败
// 设计者: adamswater
// 完成时间: 2005年6月
//***************************************************
integer li_rtn
string ls_dsnname,ls_dbfullname,ls_driver,temp,ls_version 
string ls_syspath,ls_root,ls_root_dsn

integer rtn

ls_syspath = Space( 255 ) 
//获得操作系统的目录
GetSystemDirectoryA(ls_syspath,255)
//
ls_driver = ls_syspath + "\sqlsrv32.dll"
ls_dsnname = as_dsn 
ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"
ls_root_dsn = ls_root + "\" + ls_dsnname
//注册数据源的名字
li_rtn = registryset(ls_root,ls_dsnname,regstring!,"")
if li_rtn= - 1 then
return false
end if
//注册数据库库名称
li_rtn = registryset(ls_root_dsn,"Database",regstring!,as_database)
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
end if
//注册数据库用户
li_rtn = registryset(ls_root_dsn,"LastUser",regstring!,as_user)
if li_rtn= - 1 then
return false
end if
//注册数据库服务器
li_rtn = registryset(ls_root_dsn,"Server",regstring!,as_server)
if li_rtn= - 1 then
return false
end if
return true
  相关解决方案