使用class.forname方法使用数据库的驱动程序后如何发布?
我有一个JAVA程序使用了class.forname动态注册数据库的驱动程序,可无论我如何设置环境变量,它都说这个类找不到,为何?
附源码:
package beangender;
import java.sql.*;
import common.tools.string.StringTool;
import java.io.*;
/**
* Title: JavaBean gender
* Description:
* Copyright: Copyright (c) 2001
* Company: RedDot.com
* @author Haichuang xing
* @version 1.0
*/
public class Bean {
private String beanName;
private String tableName;
private Connection myConn;
private Statement myStat;
private String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String sConnStr="jdbc:microsoft:sqlserver://dbserver:1433";
private String database="ioffice";
private String userName="sa";
private String password="";
private ResultSetMetaData myResult;
public Bean() {
}
public String genCode() throws Exception{
Class.forName(driver); //就是这一句,老说com.microsoft.jdbc.sqlserver.SQLServerDriver类找不到,我已经设置好了classpath,而且此程序在jbuilder5中是可以运行的,但不能拿出来在命令行下执行。
myConn = DriverManager.getConnection(sConnStr,userName,password);
myConn.setCatalog(database);
myStat=myConn.createStatement();
StringBuffer code=new StringBuffer("public class "+beanName+"{\n");
myResult=myStat.executeQuery("select * from ["+tableName+"]").getMetaData();
for(int i=1;i<=myResult.getColumnCount();i++){
code.append("\tprivate "+myResult.getColumnClassName(i)+" "+StringTool.lowCaseFirChr(myResult.getColumnName(i))+";\n");
}
code.append("\n");
for(int i=1;i<=myResult.getColumnCount();i++){
code.append("\tpublic void set"+StringTool.upCaseFirChr(myResult.getColumnName(i))+"(String "+StringTool.lowCaseFirChr(myResult.getColumnName(i))+"){\n");
code.append("\t\tthis."+StringTool.lowCaseFirChr(myResult.getColumnName(i))+" = "+StringTool.lowCaseFirChr(myResult.getColumnName(i))+";\n\t}\n");
code.append("\tpublic "+myResult.getColumnClassName(i)+" get"+StringTool.upCaseFirChr(myResult.getColumnName(i))+"(){\n");
code.append("\t\treturn this."+StringTool.lowCaseFirChr(myResult.getColumnName(i))+";\n\t}\n");
}
code.append("}");
return code.toString();
}
public void setDriver(String driver){
this.driver=driver;
}
public String getDriver(){
return this.driver;
}
public void setConnStr(String connStr){
this.sConnStr=connStr;
}
public String getConnStr(){
return this.sConnStr;
}
public void setDatabase(String database){
this.database=database;
}
public String getDatabase(){
return this.database;
}
public void setUserName(String userName){
this.userName=userName;
}
public String getUserName(){
return this.userName;
}
public void setPassword(String password){
this.password=password;
}
public void setBeanName(String beanName){
this.beanName=beanName;
}
public String getBeanName(){
return beanName;
}
public void setTableName(String tableName){
this.tableName=tableName;
}
public String getTableName(){
return tableName;
}
public void saveTo(String filePath) throws Exception{
FileOutputStream myFile=new FileOutputStream(new File(filePath));
myFile.write(genCode().getBytes());
}
}