各位,初学JDBC把我搞昏迷了。。帮忙看看吧
package sqldemo;
import com.microsoft.*;
import java.sql.*;
import java.net.*;public class Demo
{     
    public static void main(String args[])
    {
        String url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=12;DatabaseName=pubs";
        String qu = "select * from titles";
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;        try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
        } catch (ClassNotFoundException ex)
        {
        }
    //为什么会有异常。。下面
                try {
                    conn = DriverManager.getConnection(url);
                    st = conn.createStatement();
                    rs = st.executeQuery(qu);
                    while(rs.next())
                    {
                    System.out.println(rs.getString(2));
                    }                } catch (SQLException ex1)
                {
                    System.out.print(ex1.getMessage());
                }             
    }
}

解决方案 »

  1.   


    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;public class Demo {
    public static void main(String args[]) {
    String url = "jdbc:odbc:imsdate";
    String qu = "select username,format(birthday),note from db";
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null; try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    } catch (ClassNotFoundException ex) {
    }
    try {
    conn = DriverManager.getConnection(url);
    st = conn.createStatement();
    rs = st.executeQuery(qu);
    while (rs.next()) {
    System.out.println(rs.getString(2));
    }
    } catch (SQLException ex1) {
    System.out.print(ex1.getMessage());
    }
    }
    }
    ----------------------------------------------------------------------
    我在本地用ODBC连了下ACCESS,没有异常。我觉得是url错了。
    url="jdbc:odbc:Driver={SQL Server};Server=localhost:1433;uid=sa;pwd=12;Database=pubs";
    这样好不好用啊?我试不了。你试下。
      

  2.   

    抱的异常是[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
      

  3.   

    应该是IP地址不对,数据库在本地吗?要写实际的IP
      

  4.   

    DriverManager.getConnection(url,user,pwd);
    是“,”不是“;”
      

  5.   

    url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=12;DatabaseName=pubs";查查资料看看吧,顺序好像有问题,一般是端口号后跟数据库名
      

  6.   

    不是程序的原因,更新最新的SQL Server JDBC驱动程序,兄弟!
      

  7.   

    论坛上的:
    代码应该没有错这点我肯定,其次我试过改SQLServer的端口,重新编译程序,重启机子,升级SP,都试过都曾经解决过,但是我觉得都是偶然的... 我的导师说4类驱程是微软抵制java的一种手段,驱程的话最好的还是使用第三方的驱程,具体名字我忘了,可以就在baidu找找,绝对没有问题 
      

  8.   

    用JDBC需要导入:msbase.jar、mssqlserver.jar、msutil.jar 这3个文件,你导了没?没去下,懒的下就用JDBC-ODBC桥的方式连!!!那个不需要导...import java.sql.*;public class jdbcTest
    {
    public static void main(String args[])
    {

    String dbUrl="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=pubs";
    String user="sa";
    String password="";
    try
    {


         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    Connection c=DriverManager.getConnection(dbUrl,user,password);
    Statement s=c.createStatement();



    ResultSet r=s.executeQuery("select title from titles");

    while(r.next())

    //Captitalization doesn't matter:
    System.out.println(r.getString("title"));
    }

    r.close();
    s.close();
    c.close();

    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }

    }
      

  9.   

    我导入了msbase.jar、mssqlserver.jar、msutil.jar 这3个文件啊.但就是报[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.这个异常
      

  10.   

    你的JDBC驱动一定要和你的SQL Server的版本对应!例如:如果你的SQL Server打了SP3补丁,则一定要安装对应SP3的JDBC!
    还有你的URL好像不对!!!!!
      

  11.   

    正确的顺序
    (jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs,"sa","12")如果取不到数据库pubs
    在sql前面加一句use pubs
      

  12.   

    url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=12;DatabaseName=pubs
    url不对啊!jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;
    在getConnection(url,"sa","12");这样才对.楼上的已经说的很清楚了
      

  13.   

    回楼上:
    url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=12;DatabaseName=pubs
    url不对啊!jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;
    在getConnection(url,"sa","12");这样才对.楼上的已经说的很清楚了第一句写的也没有错,可以这么写的,也可以按你写的用getConnection(url,"sa","12");把用户名和密码加上.问题不在这里.
      

  14.   

    如果要用
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=12;DatabaseName=pubs";
    Connection c=DriverManager.getConnection(dbUrl,user,password);
    报出[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.异常问题原因有如下几种:
    1、你用的可能是XP,下个 SQL Server2000的sp4或者sp3补丁
    2、编辑器没有导入3个jar包
    3、SQL Server服务器的端口不为默认的1433(修改服务器的端口即可)
    4、SQL Server的服务器名不为 本地(故不能用 localhost 或者 127.0.0.1),修改服务器名或者在程序中换成你所使用的SQL服务器名