Chinaunix首页 | 论坛 | 博客
  • 博客访问: 793193
  • 博文数量: 132
  • 博客积分: 3477
  • 博客等级: 中校
  • 技术积分: 1359
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-30 21:53
文章分类

全部博文(132)

文章存档

2024年(3)

2023年(10)

2022年(4)

2021年(10)

2020年(9)

2018年(1)

2017年(1)

2014年(4)

2013年(3)

2012年(12)

2011年(24)

2010年(2)

2009年(8)

2008年(6)

2007年(34)

2006年(1)

分类: 数据库开发技术

2011-10-03 01:03:12

写在前面的话:在开发基于 PowerBuild 的 Client/Server 数据库系统的时候,我们使用得最多的是 ODBC 或者各数据库的专用连接方式,这些方式连接方式简洁,操作效率高,对于快速开发系统很有好处,然而这样的方式也有一个不容忽视的弊端。那就是数据库的连接参数必须写入到客户端的注册表中,而且是采用明码方式存放,这对于我们的系统带来了巨大的安全隐患,试想一下,如果我们的数据库服务器的地址、访问数据库的用户名和密码均暴露在客户端,那会是一种什么样的后果?如果我们最终发布的系统依然采用这样的方式,那系统的安全是完全没有保障的。

基于以上的原因,我们自然会需要想到一种解决办法,如果能将数据库地址、访问数据库的用户名、密码采取一种加密的方式存放,则系统的安全性就会大大提高。

然而遗憾的是,采用 ODBC或其他数据库的专有访问方式连接数据库,如果对存放于注册表中的数据库地址、访问数据库的用户名、,密码进行加密存放,结果是无法访问数据库。如果采用文件DSN来访问数据库呢?看起来是一个解决问题的思路,如果能采用文件 DSN 来访问数据库,则可以在读入 DSN 文件后,进行解密,然后交由 PowerBuild 程序管理数据库的连接,这似乎是一个不错的想法,可惜在实际测试中依然没有成功。

那么有没有其他的办法呢?近来 JAVA 程序很流行,很多数据库都提供了 JDBC 的方式访问数据库,经过反复测试,发现 JDBC 方式访问数据库,只需要将访问的参数传递给 PowerBuild 的数据库访问对象中定义的相关参数,就能够实现与数据库的连接与访问,而这些连接参数可以放置在一个配置文件中,通过一定的方式读取,如果我们能对这个配置文件进行加密,则既可以保证系统的安全性,又能提供一个很好的访问数据库的手段。

本文不探讨文件的加密部分,配置文件的加密请各位自己实现,本文仅探讨采用 JDBC 方式连接数据库。

以下内容以 SQLAnyWhere 10.01 数据库为例,PowerBuild 12.01.Net 版本上实现,其他数据库的连接方式大同小异,主要的区别在于 DriverName 和 URL 的参数不同,其他部分大体一致,请大家自己摸索。

1、首先启动 SQLAnyWhere 的 SyBase Central 管理中心来创建一个数据库,我们假设数据库名为 testdb,数据库的用户为 test、访问密码为 test ,数据库部署在本机上,访问地址为 localhost 。

2、启动 SQLAnyWhere 10.01 的网络服务器,加载 testdb 数据库。

3、在 PowerBuild 12.01中打开 DB Profile,展开 JDB JDBC 项,点击右键,选择 New Profile 来配置 JDBC 访问的参数信息。

3、在 connection 标签页中定义信息内容(信息内容如下)
      Profile Name:Test
      URL                 :  jdbc:sybase:Tds:localhost:2638?ServiceName=TestDB
      Driver Name  :  com.sybase.jdbc3.jdbc.SybDataSource
      Login  ID        :  test
      Password       :  test

4、在系统的环境参数中配置 CLASSPATH=<你的 SQLAnyWhere 10.01 的安装目录\java\jconn3.jar>

5、点击 Preview 标签页,我们观察到配置的信息内容如下:
      // Profile Account
      SQLCA.DBMS = "JDBC"
      SQLCA.LogPass = <*******>
      SQLCA.LogId = "test"
      SQLCA.AutoCommit = False
       SQLCA.DBParm = "Driver='com.sybase.jdbc3.jdbc.SybDataSource',URL='jdbc:sybase:Tds:localhost:2638?ServiceName=TestDB'"

点击该页面上的 Test Connection 按钮看看,是不是连接上了? ^_^.

至于说在 PowerBuild 程序中如何调用上面的信息,和 ODBC 的连接方式一样,不需要俺在继续啰嗦了吧?

需要注意的是:采用此种连接方式,我们需要安装 jre 或者是 jdk , 俺采用的是 1.6 的版本。

==================================================================
PS:原创文档,请尊重知识产权,转载请注明来源。

风之舞    2011-10-03



阅读(2536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~