java JDBC 提高程序可移植性

 

介绍jdbc一般的程序: 【程序编程相关:jb+oracle+weblogic c

 

很多java初学者在开始接触jdbc编程的时候,在网上与大部分的教材上都是这样 【推荐阅读:Java线程入门——什么是线程

 

import java.sql.*; 【扩展信息:关于J2ME与C#通过HTTP进行通信时

 

//可以运行的完整程序

 

public class databasedemo

{

 

 public static void main(string args[])

 

 {

 

  connection con;

 

  statement stmt;

 

  resultset rs;

 

  

 

  //load the driver class

 

  try

 

  {//直接在程序里面写字符串 com.microsoft.jdbc.sqlserver.sqlserverdriver

 

   //降低了程序的可移植性.

}catch(classnotfoundexception e) 【程序编程相关:jb+oracle+weblogic c

 

   class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver"); 【推荐阅读:Java线程入门——什么是线程

 

   system.out.println(e.getmessage()); 【扩展信息:关于J2ME与C#通过HTTP进行通信时

 

  {

 

  }

 

  

 

  //get database connection ,statement and the resultset

 

  try

 

  {

 

   con=drivermanager.getconnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs", "sa", "");

 

   

 

   stmt=con.createstatement();

 

   rs=stmt.executequery("select * from authors");

 

   

 

   while(rs.next())

 

   {

 

    for(int i=1;i<=rs.getmetadata().getcolumncount();i++)

 

    {

 

     system.out.print(rs.getstring(i)+" | ");

 

    }

 

    system.out.println();

 

   }

 

  }catch(sqlexception e)

 

  {

 

   system.out.println(e.getmessage());

 

  }

 

 }

 

 

 

}

 

这个程序明显有一个问题,就是程序的可移植性很差,加入我现在不用sql server了,我要使用sybase或orcale

 

而程序已经大包了,怎么办.
...在这里我们可以像在vc ado中的 uld文件一样.使用我们的properties文件.把属性与对应的值写入属性文件.例如我们在属性文件 basic.properties 输入一些内容:

 

drivermanager:com.microsoft.jdbc.sqlserver.sqlserverdriver 【程序编程相关:jb+oracle+weblogic c

 

connectionurl:jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs 【推荐阅读:Java线程入门——什么是线程

 

password: 【扩展信息:关于J2ME与C#通过HTTP进行通信时

 

userid:sa

 

//注意属性与值之间要有一个冒号,英文模式,不是中文冒号.

 

我们可以通过 java.util包里面的properties类来读取文件属性的值.

 

 

java.util.properties  pro=new java.util.properties  pro();

 

try

 

{

 

   pro.load(new  fileinputstream("basic.properties"));

 

}catch(ioexception e){.......}

 

consql=pro.getproperty("connectionurl");

 

 driverstr=pro.getproperty("drivermanager");

 

 userid=pro.getproperty("userid");

 

 password=pro.getproperty("password");

 

这样我们就可以得到properties中的属性值.当我们的应用程序要改用其他的数据库管理系统的时候我们只要

 

修改 properties文件就可以了.

 

把上面的程序完善一些(可以运行的)

 

/*

 

 aa.java

 

*/

 

import java.util.*;

 

import java.io.*;

 

import java.sql.*;

 


{ 【程序编程相关:jb+oracle+weblogic c

 

public class aa 【推荐阅读:Java线程入门——什么是线程

 

 { 【扩展信息:关于J2ME与C#通过HTTP进行通信时

 

 public static void main(string args[])

 

  string consql;

 

  string driverstr;

 

  string userid;

 

  string password;

 

  connection con;

 

  statement stmt;

 

  resultset rs;

 

  properties pro=new properties();;

 

  //load the properties file and get the proterties

 

  try

 

  {

 

     

 

   pro.load(new  fileinputstream("basic.properties"));

 

  }catch(ioexception e)

  {

 

   system.out.println(e.getmessage());

 

  }

 

  

 

  consql=pro.getproperty("connectionurl");

 

  driverstr=pro.getproperty("drivermanager");

 

  userid=pro.getproperty("userid");

 

  password=pro.getproperty("password");

 

  system.out.println(consql+"/n"+driverstr+"/n"+userid+"/n"+password);

 

  // load the driver class

 

  try

 

  {

 

   class.forname(driverstr);

 

  }catch(classnotfoundexception e)

 

  {

 

   system.out.println(e.getmessage());

 

  }

 

  

 

  // get the database connection

 

  try

 

  {

 

   con=drivermanager.getconnection(consql,userid,password);

 

   string querystr="select * from authors";

 

   stmt=con.createstatement();

 

   rs=stmt.executequery(querystr);

 

   

 

   while(rs.next())

 

   {

 

    for(int i=1;i<=rs.getmetadata().getcolumncount();i++)

 

    {

 

     system.out.print(rs.getstring(i)+" | ");

 

    }

 

    system.out.println();

 

   }

 

  }catch(sqlexception e)

 

  {

 

   system.out.println(e.getmessage());

 

  }

 

  

 

 }

 

 

 

}

 

注意了::::属性文件要与你的java源文件放在同一个目录下面.

posted @ 2009-02-10 12:10  springMVC3.1例子  阅读(133)  评论(0编辑  收藏  举报