建立连接套接字失败,是不是你的SqlServer没有启动,或是端口不对,你使用企业管理器能不鞥连接上你的服务器?

解决方案 »

  1.   

    给你个例子看看,用到的JDBC是mm.mysql-2.0.14-you-must-unjar-me.jar,要在classpath中调配这个jdbc,用绝对路径就可以<%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head>
    <meta http-equiv="content-Type" content="text/html;charset=gb2312">
    <title>注册确认</title>
    <link rel=stylesheet href="bbs.css" type="text/css">
    </head>  
    <body>
    <Br><br><br>
    <center>
    <%@ page import="java.util.*"%>
    <%@ page import="java.text.*"%>
    <%@ page import="java.lang.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.sql.*"%>  
    <% Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
       String url ="jdbc:mysql://192.168.1.61/AddrBook_database?user=heyi&password=123&useUnicode=true&characterEncoding=gb2312"; 
       Connection conn= DriverManager.getConnection(url);  
       //取值
       String username=request.getParameter("username");
       username= new String(username.getBytes("ISO8859-1"),"GBK");
       session.putValue("username",username);
       String status=request.getParameter("status");
       String password=request.getParameter("password");
       //已经声明的变量不能再声明,取时间
       long miliSeconds = Calendar.getInstance().getTimeInMillis();
       long nowtime=miliSeconds/1000;
       Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
       Statement stmt1=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
       String sql1="select max(UserID) from IM_Users";
       out.println(sql1);
       ResultSet rs1=stmt.executeQuery(sql1);
       int UserID1;
       int UserID;
       int rownum;
       rs1.last();//记录集指针放到最后一行
       rownum=rs1.getRow();//取记录数
    if (rownum==0){//rs1如果为空不能取东西,不然有错
       UserID1=1;
    }else{
       UserID=rs1.getInt(1);
       UserID1=UserID+1;

       String sql="insert into IM_Users(UserID,UserName,Password,HA1,Status,SipUrl,CreateTime) values('"+UserID1+"','"+username+"','"+password+"','"+password+"','"+status+"','"+username+"','"+nowtime+"')"; 
       out.println(sql);
       stmt1.executeUpdate(sql); 
       //rs.close();
       stmt1.close();
       rs1.close();
       stmt.close();
       conn.close();
       response.sendRedirect("regok.jsp?username="+username+"");
    %>
      

  2.   

    Java连接各种数据库的实例  
    此文中的代码主要列出连接数据库的关键代码,其他访问数据库代码省略1、Oracle8/8i/9i数据库(thin模式) 
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
    String url="jdbc:oracle:thin:@localhost:1521:orcl"; 
    //orcl为数据库的SID 
    String user="test"; 
    String password="test"; 
    Connection conn= DriverManager.getConnection(url,user,password); 2、DB2数据库 
    Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); 
    String url="jdbc:db2://localhost:5000/sample"; 
    //sample为你的数据库名 
    String user="admin"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 3、Sql Server7.0/2000数据库 
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; 
    //mydb为数据库 
    String user="sa"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 4、Sybase数据库 
    Class.forName("com.sybase.jdbc.SybDriver").newInstance(); 
    String url =" jdbc:sybase:Tds:localhost:5007/myDB"; 
    //myDB为你的数据库名 
    Properties sysProps = System.getProperties(); 
    SysProps.put("user","userid"); 
    SysProps.put("password","user_password"); 
    Connection conn= DriverManager.getConnection(url, SysProps); 5、Informix数据库 
    Class.forName("com.informix.jdbc.IfxDriver").newInstance(); 
    String url = 
    "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; 
    user=testuser;password=testpassword"; 
    //myDB为数据库名 
    Connection conn= DriverManager.getConnection(url); 6、MySQL数据库 
    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=
    true&characterEncoding=8859_1" 
    //myDB为数据库名 
    Connection conn= DriverManager.getConnection(url); 7、PostgreSQL数据库 
    Class.forName("org.postgresql.Driver").newInstance(); 
    String url ="jdbc:postgresql://localhost/myDB" 
    //myDB为数据库名 
    String user="myuser"; 
    String password="mypassword"; 
    Connection conn= DriverManager.getConnection(url,user,password); 8、odbc桥接
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //装载JDBC-ODBC驱动程序 
    strCon = "jdbc:odbc:Test_DB"; //设置数据库连接字符串 ,test_DB
     
     
      

  3.   

    你加SQL的三个驱动jar文件了吗
      

  4.   

    你加mssql2000的三个驱动了吗,是三个jar文件
      

  5.   

    你将那三个jar文件驱动,考到lib文件加下了么!
      

  6.   

    看来我来对了,因为我也有这本书,但是它的光盘里面的程序好烂
    我把我的程序发给你,测试成功的
    <%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
    <html>
    <body>
    以下是从MS SQL SERVER 数据库读取的数据:<hr>
    <table border=1>
    <tr>
    <td>图书ID号</td>
    <td>书    名</td>
    <td>出 版 社</td>
    <td>价    格</td>
    </tr>
    <%!
    String parseChinese(String in)
     {
        String s = null;
        byte temp [];
        if (in == null)
        {
            System.out.println("Warn:Chinese null founded!");
            return new String("");
        }
        try
        { 
    temp=in.getBytes("iso-8859-1");
            s = new String(temp); 
        }
        catch(UnsupportedEncodingException e)
        {
            System.out.println (e.toString());
        }
        return s;
      }
    %>
    <%! String trans(String chi)
    {
    String result=null;
    byte temp[];
    try
    {
    temp=chi.getBytes("iso-8859-1");
    result=new String(temp);
    }
    catch(UnsupportedEncodingException e)
    {
    System.out.println(e.toString());
    }
    return result;
    }
    %>
    <%!String native2Unicode(String s) 
    {
                if (s == null || s.length() == 0)
         {
                   return null;
                 }
                byte[] buffer = new byte[s.length()];
                for (int i = 0; i < s.length(); i++) 
    {
                   buffer[i] = (byte)s.charAt(i);
                }
                return new String(buffer);
            }       
    %>
    <%!String unicode2Native(String s) 
    {
               if (s == null || s.length() == 0) {
                  return null;
               }
               char[] buffer = new char[s.length() * 2];
               char c;
               int j = 0;
               for (int i = 0; i < s.length(); i++) {
                  if (s.charAt(i) >= 0x100) {
                     c = s.charAt(i);
                     byte []buf = (""+c).getBytes();
                     buffer[j++]  = (char)buf[0];
                     buffer[j++]  = (char)buf[1];
                  }
                  else {
                     buffer[j++] = s.charAt(i);
                  }
       }
               return new String(buffer, 0, j);
    }
    %><%
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jspdev";
    //jspdev为你的数据库名称
    String user="jiayu";
    String password="jiayu";
    Connection conn= DriverManager.getConnection(url,user,password);//Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jspdev","LocalSystem","LocalSystem");
    Statement stmt=conn.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book order by price");
    while(rst.next())
    {
    out.println("<tr>");
        out.println("<td>"+native2Unicode(rst.getString("bookid"))+"</td>");
    out.println("<td>"+rst.getString("bookName")+"</td>");
    out.println("<td>"+rst.getString("publisher")+"</td>");
    out.println("<td>"+rst.getFloat("price")+"</td>");
    out.println("</tr>");
    }
    //关闭连接,释放资源
    rst.close();
    stmt.close();
    conn.close();
    %>
    </table>
    </body>
    </html>
      

  7.   

    再次提醒各位:我提的问题可以参照:高手请进:j2dk+tomcat数据库连接问题
      

  8.   

    mssql2000的jdbc驱动,是三个jar文件,拷贝到/web-inf/lib文件夹中
      

  9.   

    当然你的sqlserver肯定要启动阿
      

  10.   

    你的代码在机器上是可以正确执行的,我知识修改了库名和表名以及字段,我的配置是win200pro+mssql2000+tomcat5.016此外tomcat5没有sqlserver的jdbc驱动,自己下载一个吧,根据你的贴出来的错误提示是没有启动mssql的服务管理器
      

  11.   

    yujiabian(流氓兔子雨) 谢谢你
    你的程序里我修改如下,还是不能运行:
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jspdev";
    //jspdev为你的数据库名称
    String user="bn";
    String password="bn";
    Connection conn= DriverManager.getConnection(url,user,password);//Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhStatement stmt=conn.createStatement();ost:1433;DatabaseName=jspdev","LocalSystem","LocalSystem");
    你能把你的配置说一下吗
    能不能在你的机子上运行一下该程序,谢谢谢谢谢谢谢谢谢谢谢谢!!!!!!!!!!
    一位老兄说在jbuilder上运行可以
    痛苦ing!参考了很多文章,环境变量改了一遍又一遍都不行
      

  12.   

    再次谢谢各位的热心
    我们用的是局域网,在vc里访问数据库没问题
    我在我自己的单机上(设置的环境和我们实验室的一样)
    sql server肯定是运行的
    steveyue(约翰岳) 你说的jdbc不就是Microsoft SQL Server 2000 Driver for JDBC我不但装了,连补丁都装了请各位在自己的机子上试运行一下!!!thanks!!!!
      

  13.   

    唉。_____________________________________________________________________________该问题已经结贴 ,得分记录:  zairwolfc (300)
      

  14.   

    zairwolfc(君子兰找工中(★★★★★)  讲点职业道德好不好
    捣什么乱?
    我又没结贴
      

  15.   

    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
    <html>
    <body>
    以下是从Ms sql server数据库读取的数据:<hr>
    <table border=1>
    <tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
    <%! String trans(String chi)
    {
                   String result = null;
                   byte temp [];
                   try
                   {
                           temp=chi.getBytes("iso-8859-1");
                          result = new String(temp);
                    }
                    catch(UnsupportedEncodingException e)
                    {
                            System.out.println (e.toString());
                    }
    return result;
    }
    %>
    <%   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
       Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test","sa","sa");
       Statement stmt=con.createStatement();
        ResultSet rst=stmt.executeQuery("select * from student;");
        while(rst.next())
        {
        out.println("<tr>");
        out.println("<td>"+trans(rst.getString("Sno"))+"</td>");
        out.println("<td>"+trans(rst.getString("Sname"))+"</td>");
        out.println("<td>"+trans(rst.getString("Ssex"))+"</td>");
        out.println("<td>"+rst.getFloat("Sage")+"</td>");
        out.println("</tr>");
        }
        //关闭连接、释放资源
        rst.close();
        stmt.close();
        con.close();
        %>    
    </table>
    </body>
    </html>
    换成我自己的数据库后的代码,可以正确执行;
    暂停MSSQL服务管理器后的错误提示如下:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver][SQLServer]SQL Server ??????????????? org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
    org.apache.jsp.testMssql_jsp._jspService(testMssql_jsp.java:87)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    root cause java.sql.SQLException: [Microsoft][SQLServer JDBC Driver][SQLServer]SQL Server ??????????????? com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
    com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)
    org.apache.jsp.testMssql_jsp._jspService(testMssql_jsp.java:64)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    note The full stack trace of the root cause is available in the Tomcat logs.
      

  16.   

    如果你确实是启动了数据库,那么说明你的jdbc驱动有问题
      

  17.   

    还有可以考虑一下安装mssqlserver的方式,要选择域用户方式安装的,呵呵
      

  18.   

    我的机器上同时安装了jbuilder
    是不是会冲突?
      

  19.   

    没连上数据库,用localhost试试
      

  20.   

    1、jdbc驱动放对地方了吗?
    2、out.println("<td>"+trans(rst.getString("Sno"))+"</td>");
        out.println("<td>"+trans(rst.getString("Sname"))+"</td>");
        out.println("<td>"+trans(rst.getString("Ssex"))+"</td>");
        out.println("<td>"+rst.getFloat("Sage")+"</td>");
    你的表里有这些字段吗?
      

  21.   

    你的环境:“我是用的局域网服务器是windows 2000 server+mssql 200我的机器上安装的是windows 2000 professional+j2dk+tomcat+mssql2000客户端。”
    根据你的问题:“javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket”
    我觉得文提出在url
    Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","bn","bn");
    应改为:Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://服务器的ip;DatabaseName=jspdev","bn","bn");
      

  22.   

    snowstormlu
    我靠!你真是高手!我试了,一个字“行”
    没说的送分
    其它各位也辛苦了,沾边的都给点,snowstormlu你可不要提意见呀!有福同享