小弟初学JAVA...用的是SQL SERVER 2000 
最近在学习JAVA数据库方面的
写了个程序
import java.sql.*;
import java.util.*;
public class ConnetionTest{
public static void main(String args[]){
String output="a";
String output1="";
String output2="";
Connection con;
        Statement sql;
        ResultSet rs;
        try{
          output="b";
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch(ClassNotFoundException e){output1="None!";}
        try{
        con=DriverManager.getConnection("jdbc:odbc:simplejee","sa","sa");
        output="c";
        sql=con.createStatement();
        rs=sql.executeQuery("SELECT Name FROM Info");
    while(rs.next()){
     output=output+rs.getString(1)+"\n";
    }
    con.close();
    }
    catch(SQLException ex) {output2="NULL";}
    System.out.println(output+","+output1+","+output2);
    }
}程序的输出是:b,,NULL
发现没有连接到数据库simplejee,又没用抛出异常。
而simplejee中是有表Info,其里中有3条数据的,可用查询分析器查出。
上述程序问题出在哪里?应该如何改正才能输出表Info里name字段的内容?请各位大大赐教.十分感激!

解决方案 »

  1.   

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    jdbc odbc 桥式连接真正项目都不用这个的,效率太低了。
      

  2.   

    发现没有连接到数据库simplejee,又没用抛出异常。这句话不见得吧?你的catch里面也有打印,你怎么知道是try里面打印的还是catch打印的?定位:
    在你的catch里面加一句:ex.printStacTrace();  如果打印一大堆的堆栈信息,肯定有异常了。问一句:你的sqlserver 2K有没有打sp3补丁?没打的赶紧打上。
    打上了再测。
      

  3.   

    今天把问题搞懂了,原来的问题是找不到数据源的原因。将con=DriverManager.getConnection("jdbc:odbc:simplejee","sa","sa");
    改成con=DriverManager.getConnection("jdbc:odbc:Driver={SQL Server};Server=vizyhe;Database=simplejee","sa","sa");就OK了。感谢大家的帮忙。
      

  4.   

    我用的也是sqlserver2000,但是一般都用jtds来连接数据库
      

  5.   

    第二个catch捕捉到异常,catch里加个e.printStackTrace();看看是什么异常!
      

  6.   

    用java连接sqlserver2000 需要打sp3补丁,sqlserver2005不用。