java JDBC 提高程序可移植性
2009-02-10 12:10 乱世文章 阅读(238) 评论(0) 编辑 收藏 举报
介绍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源文件放在同一个目录下面.