日期:2014-05-20  浏览次数:20732 次

关于JBuilder 2006连接数据库的问题
我做了一个简单的查询数据库的系统,其中连接数据库的cardConnect类如下:
package card;

import java.sql.*;

public class cardConnect {
  public static Connection conn=null;

  public cardConnect() {
  try{
  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  }catch(ClassNotFoundException ee){
  }
  }
  public static Connection getconn() {
  try{
  String url="jdbc:microsoft:sqlserver:QXM9YDAUVR0AL90:1433;DatabaseName=dbcard";
  String username="sa";
  String password="sa";
  return DriverManager.getConnection(url,username,password);
  }catch(Exception e){
  e.getMessage();
  }
  return conn;
  }

  public static void close(ResultSet rs){
  try{
  rs.close();
  }
  catch(Exception ee){}
  }
  public static void close(Statement stmt){
  try{
  stmt.close();
  }
  catch(Exception ee){}
  }
  public static void close(Connection conn){
  try{
  conn.close();
  }
  catch(Exception ee){}
  }

  public static cardConnect con=new cardConnect();
}
当我再创建其它的类要访问数据库时,如果直接写con=cardConnect.getconn();就会报错,而如果每次都将
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://QXM9YDAUVR0AL90:1433;DatabaseName=dbcard";
con=DriverManager.getConnection(url,"sa","sa");
这三句话重写一遍的话,便可以很顺利地连接数据库.
请问大虾们这是怎么回事呀?

------解决方案--------------------
conn=cardConnect.getconn();
肯定会报错,报错的类型是打不到sqlserver驱动程序.
原因是你在得到连接之前没有加载驱动程序:
可以这样解决:

//注册驱动
public static cardConnect() { 
try{ 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
}catch(ClassNotFoundException ee){ 


//返回conn
public static Connection getconn() { 
cardConnect();
try{ 
String url="jdbc:microsoft:sqlserver:QXM9YDAUVR0AL90:1433;DatabaseName=dbcard"; 
String username="sa"; 
String password="sa"; 
return DriverManager.getConnection(url,username,password); 
}catch(Exception e){ 
e.getMessage(); 

return conn; 


------解决方案--------------------
那就是说再加一句cardConnect();?
可是我下面已经写了一句
public static cardConnect con=new cardConnect();
这个不算加载驱动程序吗?