有关PB与文本的问题,高分!!!

tomcat007 2003-12-16 08:49:54
是这样的,我做了个东西是操作远程数据库的,我想实现这么一个功能.就是在程序安装完成第一次运行的时候要求用户通过图形界面配置服务器地址,帐号等,然后把这些信息保存到*.ini中这样以后程序运行的时候就不用配置数据库了.如果数据库服务器改变的话只要重新配置一下就行了.怎么实现呢?
回答越详细分越高!
...全文
28 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzr72 2003-12-20
  • 打赏
  • 举报
回复
l***是local
*i***是integer
g***是globle
*s**是string
jeff_107 2003-12-20
  • 打赏
  • 举报
回复
我倒,拜托楼主下个例程去研究一下撒!
tomcat007 2003-12-20
  • 打赏
  • 举报
回复
具体点好吗?
我刚刚学习.
还有li_FileIn ,gs_connectfile都是什么变量类型啊?
zhangdatou 2003-12-20
  • 打赏
  • 举报
回复
ding
bomber2001 2003-12-20
  • 打赏
  • 举报
回复
自动创建自测表,和阿
bunnysky 2003-12-20
  • 打赏
  • 举报
回复
为你提供了两个函数:
1、f_connect 该函数自动从配置文件中取得数据库参数,连接数据,如果连接失败,则打开w_setup窗口设置数据库参数
2、f_SetProfile 该函数将新的参数写入配置文件


/*********************************************************************************************************************
**name:f_connect 初始化
**arg:none
**return:none
**modify:20030825
**********************************************************************************************************************/

string ls_ServerName ,ls_LogId,ls_LogPass,ls_mainini

ls_mainini = "test.ini" //配置文件名,可以包含路径

SQLCA.ServerName = profilestring(is_mainini,"database","ServerName","")//数据库服务名
SQLCA.LogId = profilestring(is_mainini,"database","LogId","") //登陆名称
SQLCA.LogPass = profilestring(is_mainini,"database","LogPass","") //登陆密码

connect using SQLCA;

if sqlca.sqlcode <> 0 then
messagebox('错误','~r~n1:数据库连接失败.~r~n2:错误编码:' + string(sqlca.SQLDBCode) +'错误名称:' + sqlca.SQLErrText + '请点【高级】按钮从新配置数据连接!' ,StopSign!)
open(w_setup); //如果连接数据库错误,打开数据库参数设置窗口
end if


/*****************************************************************************************************************
**name:f_SetProfile 设置配置文件
**arg:none
**return:integer
**modify:20030825
******************************************************************************************************************/
string ls_ServerName,ls_LogId,ls_LogPass
long ll_return
string ls_mainini

ls_mainini = "test.ini" //配置文件名,可以包含路径


ls_ServerName = sle_1.text
ls_LogId = sle_2.text
ls_LogPass = sle_3.text


ll_return = SetProfileString(ls_mainini ,'DataBase','ServerName', ls_ServerName)
ll_return = SetProfileString(ls_mainini ,'DataBase','LogId', ls_LogId)
ll_return = SetProfileString(ls_mainini ,'DataBase','LogPass', ls_LogPass)

if ll_return <> 1 then
messagebox('提示','更新配置文件失败,请确认配置文件是否是只读的!')
end if

return 1

******************************************************************************************************************/
test.ini文件内容
******************************************************************************************************************/
[DataBase]
DBMS=O84 ORACLE 8.1.7
#username为登录数据库时使用的用户名
LogId=username
#passwd为对应于username用户的数据库口令
LogPass=passwd
#数据库名
ServerName=TestDatabase


qianfl 2003-12-19
  • 打赏
  • 举报
回复
ProfileString ( filename, section, key, default )
这就是读取用的
tomcat007 2003-12-19
  • 打赏
  • 举报
回复
如何读取啊?
tomcat007 2003-12-18
  • 打赏
  • 举报
回复
是挺详细的,先谢谢大家了.
但是怎么读取呢?
eminena 2003-12-17
  • 打赏
  • 举报
回复

窗口上,加一个tab,在 tab 的 上 tabpage_1 加 5 个 sle, 一个按钮 cb_1(保存)
其中各 sle 用来输入:
sle_1:数据库系统
sle_2:服务器名称
sle_3:数据库名
sle_4:登录用户名
sle_5:登录密码

代码中的 slhis.ini 为配置文件名.

在窗口的 Open 事件中:
tab_1.tabpage_1.sle_1.text = sqlca.DBMS
tab_1.tabpage_1.sle_2.text = sqlca.ServerName
tab_1.tabpage_1.sle_3.text = sqlca.Database
tab_1.tabpage_1.sle_4.text = sqlca.LogId
tab_1.tabpage_1.sle_5.text = sqlca.LogPass

在 cb_1的 单击事件中:

transaction tran_try
/////////////////////////////////////
tran_try = create transaction

tran_try.dbms = tab_1.tabpage_1.sle_1.text
tran_try.servername = tab_1.tabpage_1.sle_2.text
tran_try.database = tab_1.tabpage_1.sle_3.text
tran_try.logid = tab_1.tabpage_1.sle_4.text
tran_try.logpass = tab_1.tabpage_1.sle_5.text

connect using tran_try;

if tran_try.sqlcode <> 0 then
messagebox('提示信息','修改的数据库连接失败,请按取消或恢复按钮!')
closewithreturn(w_login,0)
ib_ok = false
else
if tran_try <> sqlca then
disconnect using sqlca;
disconnect using tran_try;
sqlca.dbms = tran_try.dbms
sqlca.servername = tran_try.servername
sqlca.database = tran_try.database
sqlca.logid = tran_try.logid
sqlca.logpass = tran_try.logpass
connect using sqlca;
closewithreturn(w_login,1)
setprofilestring ("..\slhis.ini","database","dbms",tab_1.tabpage_1.sle_1.text)
setprofilestring ("..\slhis.ini","database","servername",tab_1.tabpage_1.sle_2.text)
setprofilestring ("..\slhis.ini","database","database",tab_1.tabpage_1.sle_3.text)
setprofilestring ("..\slhis.ini","database","logid",tab_1.tabpage_1.sle_4.text)
setprofilestring ("..\slhis.ini","database","logpass",tab_1.tabpage_1.sle_5.text)
end if
ib_ok = true
end if

destroy tran_try
xiongxiao 2003-12-17
  • 打赏
  • 举报
回复
注意注册表也要改
liliang800207 2003-12-17
  • 打赏
  • 举报
回复
学学
lywangyong 2003-12-17
  • 打赏
  • 举报
回复
sqlca.logid = ProfileString (gs_connectfile,'Database', "LogId", "")
sqlca.logpass = ProfileString (gs_connectfile,'Database', "LogPassword", "")

这两句这样用用户名和口令都是写到文件里的,会有安全性问题的,这两句不建议使用。
workhand 2003-12-17
  • 打赏
  • 举报
回复
你就用一个应用完成吗?那用楼上的写文件的方法就可以了。

我们是用单独的一个小应用来配置ini的
qianjia 2003-12-17
  • 打赏
  • 举报
回复
界面是你自已设计
你把用户的信息保存到INI文件去就可以
intuition444 2003-12-17
  • 打赏
  • 举报
回复
只能帮你UP一下了!
  • 打赏
  • 举报
回复
首先从界面中获取ls_servername,ls_dbname,ls_username的值
通过写文件的方式
li_FileIn = FileOpen(gs_connectfile, LineMode!, write!, LockWrite! ,Replace! )
gs_connectfile="[Database]"
gs_connectfile=gs_connectfile+"~r~nDBMS=MSS Microsoft SQL Server 2000"
gs_connectfile=gs_connectfile+"~r~nServerName="+ls_servername
gs_connectfile=gs_connectfile+"~r~nDatabase="+ls_dbname
gs_connectfile=gs_connectfile+"~r~nLogId="+ls_username
gs_connectfile=gs_connectfile+"~r~nLogPassword="+ls_password
gs_connectfile=gs_connectfile+"~r~nBackupPath="
FileWrite(li_Filein, gs_connectfile)
fileclose(li_Filein)
最后
sqlca.DBMS = ProfileString (gs_connectfile,'Database', "DBMS", "")
sqlca.DBMS = ProfileString (gs_connectfile, "database", "dbms", "")
sqlca.database = ProfileString (gs_connectfile,'Database', "Database", "")
sqlca.logid = ProfileString (gs_connectfile,'Database', "LogId", "")
sqlca.logpass = ProfileString (gs_connectfile,'Database', "LogPassword", "")
sqlca.servername = ProfileString (gs_connectfile,'Database', "ServerName", "")
sqlca.autocommit = False
sqlca.dbparm =''
treesoft 2003-12-17
  • 打赏
  • 举报
回复
楼上几位写得真详细啊! :)
mittee 2003-12-16
  • 打赏
  • 举报
回复
ProfileString ( filename, section, key, default )
SetProfileString ( filename, section, key, value )
完全满足要求

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧