
final String connectStr = “jdbc:odbc:Driver={SQL Server};Server=.;Database=master;UID=sa;PWD=121fs”; …… if( (conn = FoolDB.openDB(connectStr, null, null)) == null)
final String connectStr = “jdbc:mysql://localhost/phome”; final String userName = “root”; // final String passwd = ““; …… if( (conn = FoolDB.openDB(connectStr, userName, passwd)) == null)
final String connectStr = “jdbc:oracle:thin:@WBS:1521/oracle088”; final String userName = “test”; final String passwd = “test”;
final String connectStr = “jdbc:derby:FoolDB”; …… if( (conn = FoolDB.openDB(connectStr, null, null)) == null)
//Insert records for(int i = 0; i < RECORD_COUNT; ++i) { //Add each operation to batch if(FoolDB.addBatch(execStat, “insert into user_info values('guest” + Integer.toString(i + 1) + “', '666666', '我是中国人')”) == false) …… FoolDB.execBatch(execStat); //Execute batch operations FoolDB.commit(conn); FoolDB.setAutoCommit(conn, true);
//Select from table String sql = "select * from user_info"; if( (queryRS = FoolDB.openQuery(queryStat, sql)) == null) { … } … while(FoolDB.moveNext(queryRS) == true) { //Field ui_id, text(64) type FoolDB.getFieldByName(queryRS, “ui_id”); //Field ui_passwd, text(64) type FoolDB.getFieldByName(queryRS, “ui_passwd”); //Field ui_real_name, text(64) type FoolDB.getFieldByName(queryRS, “ui_real_name”); }
FoolDB.closeDB(conn); //Close connection if(framework.equals("embedded") == true) //If in embedded mode { //Use URL to shutdown Derby if(FoolDB.openDB("jdbc:derby:;shutdown=true", null, null) == null) { //If shutdown failure means that Derby already shutdown isShutdownOk = true; } if (isShutdownOk == false) //Not shutdown normally { System.out.println("Derby shutdown NG."); } }
注意:关闭和判断Derby数据库是否正常关闭的连接字符串中是不包含数据库名的。
7.记录各步骤操作的时间戳
以上的操作中,在各个步骤之间添加了时间戳,以此来记录各个数据库平台的执行耗费。
五、结果及分析 
在对试用结果进行评价之前,读者需要考虑各款数据库平台的特点,而不能简单地从执行时间的长短来进行判断,以下是笔者根据开发经验总结出的需要注意的地方:
(1)要保证JDBC驱动和数据库平台的连接是无缝的。例如Oracle和JavaDB数据库本身就是由Java开发,其JDBC驱动和数据库平台的连接可以做到完全无缝,这样可以充分体现出该款数据库平台的特性。反之,Access和SQL Server与对应的JdbcOdbc驱动之间的耦合可能就不如与ADO驱动那么吻合,那么这些数据平台的很多特性就无法通过这些JDBC驱动得以体现。之前我们也提到,Microsoft专门有提供MS SQL Server的JDBC驱动,数据库与这种“对口”的JDBC驱动的耦合肯定要超过JdbcOdbc这种通用型的驱动。
(2)数据库平台要有良好的可移植性。换句话说就是数据库跨操作系统的性能。在这些方面Oracle,MySQL和JavaDB就要比Access和SQL Server有明显优势,它们不仅可以支持Windows平台而且也支持Solaris和Linux平台。而且数据库平台的可移植很大程度也决定了应用系统的可移植性。
(3)数据库平台要支持应用的多样化(需求弹性)。数据库平台应该不仅可以对应传统的C/S,B/S模式,而且还可以扩展为三层的,甚至是多层的模式,或者支持嵌入式系统的应用。显而易见,本身使用Java开发的Oracle和JavaDB在这些方面就具有得天独厚的优势。而且JavaDB还支持嵌入式应用,这样以来数据库的应用空间就更为广阔了。
所以基于以上几点的考虑,我们就可以得出初步的意向:
(1)对于一般的中小型的C/S和B/S架构,MySQL可以说是我们当前首选。它在跨平台和执行效率方面表现得相当的出色。
(2)对于那些对系统构架弹性要求比较高的系统,可以选择Oracle平台,并结合EJB规范进行搭建系统构架无疑将是很好的选择。
(3)选用JavaDB进行嵌入式平台开发似乎是不错的主意。由于现在很多嵌入式设备中都嵌入了Java内核,JavaDB也就可以得以应用了,嵌入式设备与其他系统共享数据的接口就变得及其简单。
(4)如果只在Windows平台进行开发的中小型系统,用Access或者SQL Server平台也不妨是一种简单快捷的途径。
| 第1页: 引言、评测框架 | 第2页: 试用准备、过程、结果分析 |
| 第3页: 结束语 |