最近在做毕业设计,是一个用powerbuilder开发的小系统,这个东东跟两年前学的vb差不多,但是呢又不太一样,熟悉熟悉环境就开始做了,现在系统已经完成,总结一下这几天遇到的小问题,有时候解决不了确实挺烦人的,但愿给一些用得到的朋友提供一点思路吧。
每次运行系统都要选择数据源,登录sql server
连接数据库不成功,未正确配置连接
说到这里,先介绍四种连接方式.
一、使用 snc sqlnative client方式连接数据库
sqlca = createtransaction
sqlca.dbms= snc sql native client(ole db) //接口说明
sqlca.logid = sa //数据库管理员id
sqlca.logpass= //数据库管理员密码
sqlca.servername = . //数据库服务器名称或者ip地址
sqlca.dbparm= database='techmager' //要连接的数据库名称
sqlca.autocommit=true //设置是否自动提交
connectusing sqlca ; //执行数据库连接
使用snc sql native client方式连接数据库时,客户端电脑需要安装 snc sql native client客户端程序驱动接口
二、使用ole db方式连接数据库
sqlca.dbms= ole db //接口说明
sqlca.logid = sa //数据库管理员id
sqlca.logpass= //数据库管理员密码
sqlca.autocommit= false //设置是否自动提交
sqlca.dbparm =provider='sqloledb',datasource='.',providerstring='database=techmager' //定义连接的参数datasource参数说明数据库服务器地址,可以是计算机名称或者ip , providerstring='database=techmager'说明要连接的数据是 techmager
connectusing sqlca; //执行数据库连接
三、使用 ado.net连接数据库
sqlca.dbms= ado.net //接口说明
sqlca.logid = sa //数据库管理员id
sqlca.logpass= '' //数据库管理员密码
sqlca.autocommit= false //设置是否自动提交
sqlca.dbparm =namespace='system.data.sqlclient',datasource='.',database='techmager' //定义连接的参数datasource参数说明数据库服务器地 址,可以是计算机名称或者ip,database='techmager'说明要连接的数据是 techmager
connectusing sqlca ; //执行数据库连接
使用ado.net连接数据库方式连接数据库时,客户端电脑需要安装dotnetframework运行环境才能成功连接到数据库
四、使用 odbc连接数据库
sqlca.dbms = odbc //接口说明
sqlca.servername=. //服务器名称或者ip地址
sqlca.autocommit = false //是否自动提交
sqlca.dbparm =connectstring='dsn=technology;uid=sa;pwd=zab' //服务器数据源配置
connect using sqlca; //执行数据库连接
使用odbc接口方式连接数据库,客户端电脑必须配置odbc数据源
我用的odbc连接,先配置好odbc数据源,然后写连接字符串就可以了,但当时由于自己写错了连接字符串,所以为避免出错,我建议大家还是直接复制配置好的连接语句吧。可以在这里找。
首先,找到database
然后,找到自己建立的数据源,右键properties,在preview窗口下。
进入登录界面,输入用户名密码后,又弹出错误提示:
this applicationneeds a script for its open event
解决:
应用程序运行的时候需要一个入口程序,就是运行时执行的第一个事件。
在application的open中写入代码: open (w_login)
习惯了vs中右键——设为启动项目,竟忘记了要给它一个启动入口程序,唉。。
系统运行中,又出错了,原以为是我程序中写的字段和数据库字段不一致导致找不到或者什么无效之类的,一个个核对完之后发现:不是我的错!
这个问题也好解决,把数据库连接改一下
sqlca.dbparm = connectstring='dsn=drivers;uid=sa;pwd=123456',disablebind=1,staticbind=0,callescape='no',delimitidentifier='yes',stripparmnames='yes'
因为系统用到了存储过程,odbc不允许带参数,所以必须使得datawindow获得参数的实际值后再直接调用执行过程。高手如是说。
