現在的程序,基本上都要和數據庫打交到,以前用C#和Delphi的時候,與數據庫的連接,查詢操作都是十分簡單的,但是第一次用JAVA通過JDBC和數據庫打交到,第一次,用了一上午的時間,仙子按總算成功了,其實第一次配置就成功,只是自己用了IDE工具,而沒有做相關的設置,導致了假象,JDBC的操作不成功:
1,系統環境:
Windows2000 Pro+MS SQL2000 SP4+Tomcat 5 +JCreator3+JDBC1 SP3
2,環境變量:
JAVA_HOME:C:/Program Files/Java/jdk1.5.0_09
CLASS_PATH:%JAVA_HOME%/lib;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msbase.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/mssqlserver.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msutil.jar;
path:%JAVA_HOME%/bin;
3,測試腳本
public class Connect{
private java.sql.Connection con = null;
private final String url = "jdbc:microsoft:sqlserver://";
private final String serverName= "localhost";
private final String portNumber = "1433";
private final String databaseName= "pubs";
private final String userName = "sa";
private final String password = "sa";
// Informs the driver to use server a side-cursor,
// which permits more than one active statement
// on a connection.
private final String selectMethod = "cursor";
// Constructor
public Connect(){}
private String getConnectionUrl(){
return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
}
private java.sql.Connection getConnection(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
if(con!=null) System.out.println("Connection Successful!");
}catch(Exception e){
e.printStackTrace();
System.out.println("Error Trace in getConnection() : " + e.getMessage());
}
return con;
}
/*
Display the driver properties, database details
*/
public void displayDbProperties(){
java.sql.DatabaseMetaData dm = null;
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
if(con!=null){
dm = con.getMetaData();
System.out.println("Driver Information");
System.out.println(" Driver Name: "+ dm.getDriverName());
System.out.println(" Driver Version: "+ dm.getDriverVersion ());
System.out.println(" Database Information ");
System.out.println(" Database Name: "+ dm.getDatabaseProductName());
System.out.println(" Database Version: "+ dm.getDatabaseProductVersion());
System.out.println("Avalilable Catalogs ");
rs = dm.getCatalogs();
while(rs.next()){
System.out.println(" catalog: "+ rs.getString(1));
}
rs.close();
rs = null;
closeConnection();
}else System.out.println("Error: No active Connection");
}catch(Exception e){
e.printStackTrace();
}
dm=null;
}
private void closeConnection(){
try{
if(con!=null)
con.close();
con=null;
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception
{
Connect myDbTest = new Connect();
myDbTest.displayDbProperties();
}
}
把這段代碼另存爲Connect.java,放在c盤根目錄。
這是來自微軟官方一篇對JDBC操作的文章。
http://support.microsoft.com/kb/313100/zh-cn
4,開始-運行-cmd-
調用javac,java命令,編譯Connect.java
javac Connect.java
java Connect.Class
注:javac編譯的是文件,java命令操作的class對象。
5,成功輸出的界面
Connection Successful!
Driver Information
Driver Name:SQLServer
Driver Version: 2.2.0022
Database Information
Database Name:Microsoft SQL Server
Database Version:Microsoft SQL Server 2000 - 8.00.384 (Intel X86)
May 23 2001 00:02:52
Copyright (c) 1988-2000 Microsoft Corporation
Desktop Engine on Windows NT 5.1 (Build 2600: )
Avalilable Catalogs
catalog:master
catalog:msdb
catalog:pubs
catalog:tempdb
6,在IDE中設置
我用的是JCreator3.5漢化版,在配置-選項-JDK配置文件-JDK 版本 1.5.0_11-類-添加-添加存檔
把C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib目錄下的三個jar文件添加進去,然後即可正確的輸出上述代碼。
如果您按照以上操作有其他異常情況,請訪問www.google.cn :)