pb连接SYBASE、MS SQL SERVER

来源:互联网 发布:h5 js老虎机抽奖特效 编辑:程序博客网 时间:2024/06/05 15:25


pb连接SYBASE、MS SQL SERVER

分类: 数据库 5427人阅读 评论(0)收藏 举报
sql serversybase数据库database数据库服务器string
PowerBuilder程序与数据库之间传递信息的一个结构变量,共有15个成员.你可以详细列表它的所有成员看看它的组成.PB的应用程序会初始化一个全局的结构体变量,SQLCA,当然你也可以自定义一个自己的事务对象.
1 DBMS string 所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC。
2 Database string 要连接的数据库名字。
3 UserID string 连接数据库所用的用户名。有的DBMS不需要此项。
4 DBPass string 用户连接数据库的口令。
5 Lock string 这是数据库的保护级别,一般不必给出。
6 LogID string 登录到数据库服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle需要指定这个参数。
7 LogPass string 登录到数据库服务器上的用户口令。这个属性可设可不设,但Sybase和Oracle需要指定口令。
8 ServerName string 数据库服务器名。
9 AutoCommit boolean 指定是否将数据库设置成自动提交所有事务。默认是False,也就是说,必须在应用程序中进行事务管理,并在适当的时候对数据库提交事务。如果选择True,则每个事务都由系统自动提交。
10 DBParm string 用于向数据库传递特殊信息的属性。
11 SQLCode long 指示最近一次SQL操作失败或成功。它的取值为: 返回结果 0 无错误。 -1 出现一个错误。 100 没有检索到数据。
12 SQLNRows long 最近一次SQL操作影响的行数,数据库不同其含义也不同。
13 SQLDBCode long 数据库错误代码。不同的数据库的含义不同。
14 SQLErrText string 相应于SQLDBCode属性中错误码的文字说明。
15 SQLReturnData string 返回DBMS执行SQL的附加信息,不同的DBMS其值不同。
pb连接MS SQL Server
一.连接步骤
1)服务器安装SQL Server并启动,创建数据库。
2)客户机安装SQL Server客户端。
3)启动PB,配置数据源描述(通过直连接口,不建议用ODBC)。
4)连接。
二.DB_profile的写法
在ini文件里设置
[Database]
DBMS=MSS Microsoft SQL Server 6.x
Database=databasename
UserId=
LogID=
DatabasePassword=
LogPass=
ServerName=
AutoCommit=False
在程序里用profilestring读取
附加资料:ms sql server 配置文件设置
ms sql server 配置文件设置:
dbms="mss"//只须在*.ini文件中用这个代码便告诉pb使用的ms sql server
Database:所用数据库
LogId:sql server的登陆账号
LogPass=口令
servername:允许数据库服务器连接的计算机名
autocommit:控制pb 是工作在事务处理范围内还是工作在事务处理范围外
dbparm:dbms的专用连接参数
以下参数:
language:在显示错误消息和日期格式时指定要使用的语言,在服务器上必须设置该直.
lock:事务处理隔离层
log:文本和图像数据的更新是否应该纪录到事务日志中.
systemprocs:系统存储过程和用户定义的存储过程是否显示在各种各样的pb画板中.
pbcatalogowner:pb存储中表的缺省者.
async:允许在服务器上进行同步操作.0:同步,1:异步
dbgettime:当async=1时,使用该参数设置用户在检索行时pb等待来自pb的响应的秒数.
cursorlock:release和cursorscroll参数一起使用可设置光标的锁定选项.lock,opt,optval,readonly
cursorscroll:设置光标的滚动选项.
staticbind:控制pb是否在检索数据前获取dbms中的结果集描述.
dbtextlimit:控制返回的文本字段的最大长度而不用将文本作为二进制大型数据对象来处理.
appname:设置连接时所使用的应用程序名.
host:设置连接似的工作站名.
packetsize:设置使服务器向pb传送数据时所设置的包大小.
secure:设置是否想使用winnt集成逻辑安全性和安全sql server连接缺省0使用标准安全性,1集成安全性.
//连接数据库需要配置SQLCA的属性有:
SQLCA.DBMS = "MSS Microsoft SQL Server"     --数据库类型
SQLCA.ServerName = "."                      //服务器名称
SQLCA.Database = "factory"               // 数据库名称
SQLCA.LogId = "sa"                           //登录帐号
SQLCA.LogPass = <**>                       //帐号密码
SQLCA.AutoCommit = False

CONNECT USING SQLCA;
if SQLCA.SQLCode = - 1 then
    MessageBox("系统提示","连接数据库失败!请检查参数是否正确。")       
end if

简单的情况可以直接写,为了以后使用的方便,应该在ini文件中提取相关参数。可以放在一个函数中:
wf_connectdb(filename)
filename是对应的ini文件。连接成功返回1,连接失败返回 - 1。   
if FileExists(Filename) then //是函数的参数
    //检验是否能够连接服务器
    ls_server = ProfileString("main.INI", "DATABASE", "servername", "")
    if ls_server = '' OR IsNull(ls_server) then
        return -1
    end if
    SQLCA.ServerName = ls_server

        //以下代码是连接远程数据库时,检查网络情况
    myconnect = CREATE connection
    myconnect.Driver = "WinSock"
    myconnect.Application = "1433" //sql的端口号
    myconnect.Location = ls_server
    li_return = myconnect.ConnectToServer()
    if li_return = 52 then
        MessageBox("系统提示","服务器连不上,网络或数据库服务有问题!")
        halt CLOSE;
    end if

    //以下是连接数据库
    SQLCA.DBMS = ProfileString("main.INI", "DATABASE", "DBMS", "ODBC")
    ls_db = ProfileString("main.INI", "DATABASE", "database", "")
    if ls_db = '' OR IsNull(ls_db) then
        return -1
    end if
    SQLCA.Database = ls_db
   
    //登陆服务器
    ls_logid = ProfileString("main.INI", "DATABASE", "logid", "")
    if ls_logid = '' OR IsNull(ls_logid) then
        return -1
    end if
   
    SQLCA.LogID = ls_logid
    SQLCA.LogPass = ProfileString("main.INI", "DATABASE", "logpass", "")
    SQLCA.AutoCommit = FALSE

    CONNECT USING SQLCA;
    if SQLCA.SQLCode = 0 then
        return 1
    else
        return -1
    end if
else
    return -1
end if
重新建立与数据库的连接:
string           ls_servername
string           ls_logid
string           ls_logpass
string           ls_database

if ddlb_database.text = '' or isnull(ddlb_database.text) then
messagebox('提示信息','请选择数据库!')
return 0
end if

//通过窗口重新设置数据库连接的参数:

ls_servername = mle_server.text
ls_logid = mle_username.text
ls_logpass = mle_passwd.text
ls_database = ddlb_database.text

if isnull(ls_servername ) or ls_servername = '' then
messagebox('提示信息','请先输入服务器名称!')
return 0
end if
if isnull(ls_logid) or ls_logid = '' then
messagebox('提示信息','请输入用户名称!')
return 0
end if
// 连接数据库服务器,取得所有数据库的名称
disconnect using sqlca;

SQLCA.DBMS = "MSS Microsoft SQL Server "   //给连接对象重新赋值
SQLCA.Database = ls_database
SQLCA.ServerName = ls_servername
SQLCA.LogId = ls_logid
SQLCA.LogPass = ls_logpass
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect using sqlca;
if sqlca.sqlcode <> 0 then
     MessageBox ("无法连接数据库", sqlca.sqlerrtext)
     return
end if
gt_task.server = ls_servername    
gt_task.username = ls_logid
gt_task.passwd = ls_logpass
gt_task.database = ls_database

//写到ini文件中

SetProfileString(gs_mypath + "/" + "main.INI", 'database', 'Servername',ls_servername )
SetProfileString(gs_mypath + "/" + "main.INI", 'database', 'logid',ls_logid )
SetProfileString(gs_mypath + "/" + "main.INI", 'database', 'logpass',gf_encrypt(ls_logpass ))
SetProfileString(gs_mypath + "/" + "main.INI", 'database', 'database',ls_database )
open(w_login)
Close(parent)

0 0
原创粉丝点击