pb开发的程序应用
pb+sqlserver应用程序 原理,把pb开发的程序编译好后,放到客户端, 然后把pb运行跟连接sqlserver需要的dll文件考过来放到pb应用的根目录下,就是放到一块. 然后就可以了 pb+sqlserver客户端需要的dll文件下载
//现在不能下了,大家自己找找吧,有个帖子说名了这些
使用ini文件连接的各个参数的介绍 用ini文件来动态链接数据库
普通链接数据库的方式有三种
odbc还有直连,oledb(这个没有用过) 直接链接 // Profile gzdn SQLCA.DBMS = "MSS Microsoft SQL Server" SQLCA.Database = "gzdn" SQLCA.LogPass = 'hejian520' SQLCA.ServerName = "192.168.0.136" SQLCA.LogId = "sa" SQLCA.AutoCommit = False SQLCA.DBParm = "" 上面的IP地址 192.168.0.138 固定死了,所以如果采用这种方式的话,数据库服务器地址改变后,程序就需要重新编译 很不方便 。ini文件方式 原理就是把数据库的名字,服务器名称等写到ini文件中,,可以理解成一种变量的方式 读写ini文件一般的方法是profilestring//还有其他的类型, ProfileString ( filename, section, key, default ) 第一个参数 要读取得ini文件名 带路径, 第二个,文件中得哪一节 就是刚才得[database]// 第三个, 每一节中得键值名称 比如Database,userid等 第四个 ,默认值, 当找不到ini文件或者找不到节名,或者找不到某一节下的键值的时候才会取最后一个默认值 例程: 在程序跟目录下新建一个文件后缀名为ini 比如 frame.ini 内容为 [database]// DBMS=MSS (Msoft) SQL Server 6.X//驱动器名称,如果是oracle得换成oracle733等等。。 Database=van_store//要连接得数据库名称 UserId=// 连接数据库得id,一般没有 DatabasePassword=//连接数据库得密码,一般没有 ServerName=192.168.0.236//服务器得名称,一般写ip地址 LogId=sa//服务器用户名 LogPassword=//服务器密码 Lock=//一般为空 DbParm=//一般为空 可参考pb中得帮助 profilestring函数 string str_file str_file = "frame.ini"//配置文件得名称 ProfileString ( filename, section, key, default ) 第一个参数 要读取得ini文件名 带路径, 第二个,文件中得哪一节 就是刚才得[database]// 第三个, 每一节中得键值名称 比如Database,userid等 第四个 ,默认值,当找不到ini文件或者找不到节名或者找不到键值的时候取这个值 SQLCA.DBMS = ProfileString(str_file,”database“,"DBMS"," ") SQLCA.Database = ProfileString(str_file,”database“,"DataBase"," ") SQLCA.LogID = ProfileString(str_file,”database“,"LogID"," ") SQLCA.LogPass = ProfileString(str_file,”database“,"LogPassword"," ") SQLCA.ServerName = ProfileString(str_file,”database“,"ServerName"," ") SQLCA.UserID = ProfileString(str_file,”database“,"UserID"," ") SQLCA.DBPass = ProfileString(str_file,”database“,"DatabasePassword", " ") SQLCA.Lock = ProfileString(str_file,”database“,"Lock"," ") SQLCA.DbParm = ProfileString(str_file,”database“,"dbparm"," ") SQLCA.autocommit = false connect using sqlca; pb+asa数据库 这个应用一般是用在单机版. 如果客户端安装了asa数据库的话,,配置一下数据源,也可以运行 但如果不想进行手工配置,,想让程序来实现的话,, 程序需要操作两件事情,,一个就是注册odbc的驱动(不知道这种方法是否正确), 一个就是配置数据库,设置数据库的路径. 这样客户端就需要一些pb的dll文件跟odbc所需要的文件, 下载可见//自己找,现在没法下载了 可以把下载的文件考到客户端跟程序编译后的pbd或者exe文件放到一块. 如果运行中出现问题,可能是下载的odbcad32.exe或者其他几个文件版本不对造成的,可以把编写程序机器上的这个文件考到客户端覆盖,,根据提示替换一下文件. 这个可以参见论坛上的 西门坡公交查询程序,,可以下载后运行一下,看看它都需要了哪些文件 在应用的open事件中需要写的代码 自动注册数据源,odbc //获取程序所在目录 String ls_curdir //ls_curdir=Space(256) 为字符缓冲区开辟内存空间 //GetCurrentDirectoryA(256,ls_curdir) ls_curdir = GetCurrentDirectory() gs_path = ls_curdir string ls_ob Registryget("HKEY_LOCAL_MACHINE/Software","ODBC", RegString!, ls_ob) if ls_ob = '' then registryset("HKEY_LOCAL_MACHINE/Software/",'odbc',regstring!,'') end if registryset("HKEY_LOCAL_MACHINE/Software/odbc",'odbcinst.ini',regstring!,'') ulong ul_num Int Answer,Answer1,Answer2,Answer3,Answer4,Answer5,Answer6,Answer7,ansApp string ls_driver,ls_start,ls_location,apppath,db_path,db_name,ODBCStr,ds_name,ls_dbpath //设置Adaptive Server Anywhere 8.0的驱动程序路径 ls_Location =ls_curdir ls_dbpath=ls_curdir+"/gjcx.db" //判断Adaptive Server Anywhere 8.0的驱动程序是否正确安装 ls_Driver=ls_Location+"/dbodbc8.dll" ls_Start=ls_Location+"/dbeng8.exe" //IF Not (FileExists(ls_Driver) AND FileExists(ls_Start)) Then //MessageBox("错误!","系统中没有安装Adaptive Server Anywhere 7.0"+& //"的驱动程序,系统将终止运行!",StopSign!) //Return //End IF //设置ODBC/ODBCINST.INI/ODBC DRIVERS Answer=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST.INI"+& "/ODBC Drivers","Adaptive Server Anywhere 8.0", RegString!, "Installed") IF Answer = -1 Then MessageBox("错误!","应用程序无法设置ODBC/ODBCINST.INI/"+& "ODBC DRIVERS,系统将终止运行",Information!) Return End if //设置ODBC/ODBCINST.INI/ Answer1=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST."+& "Adaptive Server Anywhere 8.0", "CPTimeout", RegString!, "not pooled") Answer2=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST."+& "INI/Adaptive Server Anywhere 8.0", "Driver", RegString!,ls_Driver) Answer3=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST."+& "INI/Adaptive Server Anywhere 8.0", "Setup", RegString!,ls_Driver) IF Answer1 = -1 OR Answer2 = -1 OR Answer3 = -1 Then MessageBox("错误!","应用程序无法设置ODBC/ODBCINST.INI,"+& "系统将终止运行!",Information!)//程序中不折行 Return End if db_path = ""+ls_dbpath+""//设置数据库路径及文件名 db_name = "gjcx" //设置数据库名称 ds_name = "gjcx" //设置ODBC数据源名 //设置ODBC DATA SOURCE名称 Answer=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& "ODBC Data Sources", ds_name, RegString!, "Adaptive Server Anywhere 8.0") Answer1=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"driver", Regstring!, ls_Driver) Answer2=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"start", Regstring!, ls_Start) Answer3=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"autostop", Regstring!, "yes") Answer4=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"DataBaseFile", Regstring!, db_path) Answer5=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"DataBaseName", Regstring!, db_name) Answer6=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"pWD", Regstring!, "sql") Answer7=RegistrySet("HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.ini/"+& ds_name,"UID", Regstring!, "dba") IF Answer = -1 Then MessageBox("错误!","应用程序无法设置ODBC DATA SOURCE名称,"+& "系统将终止运行!",Information!) //程序中不折行 Return End if //==================================================================== // 设置ODBC.ini细节 //==================================================================== answer1 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+& ds_name,"driver", regstring!, ls_driver) answer2 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+& ds_name,"start", regstring!, ls_start) answer3 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+& ds_name,"autostop", regstring!, "yes") answer4 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+ds_name,& "DataBaseFile", regstring!, db_path) answer5 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+ds_name,& "DataBaseName", regstring!, db_name) answer6 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+ds_name,& "pWD", regstring!, "sql") answer7 = RegistrySet("HKEY_current_user/software/odbc/odbc.ini/"+ds_name,& "UID", regstring!, "dba") If answer1 = -1 Or answer2 = -1 Or answer3 = -1 Or & answer4 = -1 Or answer5 = -1 Or answer6 = -1 Or answer7 = -1 Then MessageBox("错误!","应用程序无法设置ODBC.INI细节,"+& "系统将终止运行!",information!) Return End If odbcstr = 'dsn=' + ds_name +';databasename=' + db_name + ';databasefile=' + db_path sqlca.DBMS = "ODBC" sqlca.Database = db_name sqlca.DBParm = "c" CONNECT Using sqlca; If sqlca.SQLCode = -1 Then MessageBox("数据库连接失败", "不能连接到数据库上,请检查。"+& "~r~n出错的详细原因为:"+sqlca.SQLErrText) Halt End If |
pb开发的程序如何脱离pb的开发环境
最新推荐文章于 2018-09-05 15:49:26 发布