请问各位大虾:
要Sqlserver2000与java程序连接要怎么连啊
为什么我的程序老是包错:[microsoft][sql server 2000 dirver for jdbc][sqlserver]用户'sa'登陆失败。
原因:未与信任sqlserver连接相关联。我已经装了jdbc for sqlserver2000 把lib\的三个jar文件设置了classpath,
程序编译时通过。运行是报上面错误。程序如下:
firm.class
import java.sql.*;
public class firm
{
String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String sConnStr="jdbc:microsoft:sqlserver://sun:1433";
String userName="sa";
String passWord="";
private Connection conn=null;
private Statement stmt=null;
ResultSet rs=null;public firm()
{
 try
        {
            Class.forName(sDBDriver).newInstance();
        }
        catch (Exception e)
        {
            System.out.println("SQLSERVER Exception: " + e.getMessage());
            System.out.println("add server driver false!");
        }
}
public ResultSet executeQuery(String sql)
{
rs=null;
 try
  {
   conn=DriverManager.getConnection(sConnStr,userName,passWord);
   stmt=conn.createStatement();
   rs=stmt.executeQuery(sql);
  }
 catch(SQLException ex)
 {
 System.out.println("getconnection false!");
 System.err.println("aq.executeQuery:"+ex.getMessage());
 }
return rs;
}public void executeUpdate(String sql)
{
 stmt=null;
 rs=null;
 try
{
 conn=DriverManager.getConnection(sConnStr);
 stmt=conn.createStatement();
 stmt.executeQuery(sql);
 stmt.close();
 conn.close();
}
catch(SQLException ex)
 {
  System.err.println("aq.executeQuery:"+ex.getMessage());
 }
}public void closeStmt()
{
 try
 {
  stmt.close();
 }
 catch(SQLException e)
 {
  e.printStackTrace();
 }
}
public void closeConn()
{
 try
 {
  conn.close();
 }
 catch(SQLException e)
 {
  e.printStackTrace();
 } }}
database.class import java.io.*;
import java.sql.*;public class database
{
 
 public static void main(String args[])
 {
  String sql="select * from pubs.dbo.test";
  firm newfirm=new firm();
  try
  {
  ResultSet rs=newfirm.executeQuery(sql);
  while (rs.next())
  {
   System.out.println(rs.getString(1));
   System.out.println(rs.getString(2));
  }
  }
  catch (SQLException e)
  {
  }
  }
}
各位大虾帮帮忙,是不是我还有什么要设置的,建立数据库连接有几个步触?建立几个环境变量,分别是什么,每个人回答有分! 150分你们拿! 小弟在线等候。

解决方案 »

  1.   

    我是要用的jdbc for sqlserver的驱动,不用jdbc-odbc桥
      

  2.   

    你的这句话应该写的不对吧,我觉得那个sun像是数据库的名字,这样不对
    String sConnStr="jdbc:microsoft:sqlserver://sun:1433";
    应该写成这样:
    jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sun
    如果是网络连接,那么把那个localhost换成对方机器的IP
      

  3.   

    我的机器名是sun 数据库名是pubs,表名是test,是不是一定要用ip呀
    谢谢回复!
      

  4.   

    SQL server 网络配置问题,运行:server network ultility,添加对tcp/ip协议的支持
      

  5.   

    我没有设置用户呀
    是不是sqlserver缺省的用户名是sa 密码为空呀
      

  6.   

    未与信任sqlserver连接相关联?是不是在Applet中?如果这样可能是权限没配好
      

  7.   

    不是用IP用这个Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
       String url="jdbc:odbc:happy";
    你陪odbc了吗,在管理工具里有odbc数据原,配的时候有个名,比如说配的是happy,就在上面写 happy
    和你的机器名和数据库和表明都没关,
      

  8.   

    sqlserver 的缺省用户密码好像应该不是空的,你查查资料
      

  9.   

    sqlserver2000 tcp/ip协议默认已经添加
    谢谢大家!
      

  10.   

    不是用IP用这个Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
       String url="jdbc:odbc:happy";
    你陪odbc了吗,在管理工具里有odbc数据原,配的时候有个名,比如说配的是happy,就在上面写 happy
    和你的机器名和数据库和表明都没关,
      

  11.   

    我不要用桥的方法 用桥是可以成功的不过听说好想这种方法不是很好的,我想用我已经安装了的microsoft sql
    server的驱动 但是一直没有成功
    我在weblogic中配置连接池也没有成功,我可能是哪个接点卡住了谢谢好心人的回复
      

  12.   

    希望哪位有用jdbc连接过sqlserver2000的朋友能够告诉我,到底有几个步触!我都快没有信心了! 555.......
      

  13.   

    sqlserver的缺省确实使sa,密码空
      

  14.   

    先用odbc连接一下啦,看看是否连接成功,检查参数是否正确
    然后再用jdbc直接连接
      

  15.   

    sql server 连接 有两种1  window auth2 sql server authjbdc connect sql server by thin client mode ,so it use sql server auth.If ur sql server only set window auth
      

  16.   

    我用的是com包,我在JCreate pro编辑器,能够测试:
    package BL;
    import java.sql.*;
    import java.io.*;
    import java.util.*;
    import com.microsoft.jdbc.base.*;
    public class ReadConfig
    {
    private Connection con;
    private PreparedStatement pstmt;
    private Statement stmt;
    private ResultSet rs;
    public ReadConfig()
    {
    try{
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    }
    catch(java.lang.ClassNotFoundException e)
    {
    System.out.println("加载数据库驱动程序失败!"+e.getMessage());
    }  
    }
    public boolean connect(String url,String user,String pass,String database)
    {
    try{
                 con=DriverManager.getConnection("jdbc:microsoft:sqlserver://"+url+":1433;DatabaseName="+database,user,pass);
                 return true;
    }
    catch(Exception e)
    {
    System.out.println("连接数据库失败!"+e.getMessage());
    return false;
    }

    ............

        public void dbclose()
        {
         try{
         con.close();
         }
         catch(Exception e)
         {
         e.printStackTrace();
         }
        }
    }
    //能够连接sql server 2000数据库,
      

  17.   

    这个问题我也遇到过,可能是sqlserver的安装问题,安装sqlserver时,在选择访问模式时要选择windows密码认证与sql server密码认证的混合模式,如果选择windows密码认证的话,就会出现你的那种情况,呵呵,重装sqlserver2000吧。
      

  18.   

    jsp连接Sql Server7.0/2000数据库  
    testsqlserver.jsp如下:  
    <%@ page contentType="text/html;charset=gb2312"%>    
    <%@ page import="java.sql.*"%>  
    <html>    
    <body>    
    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
    //pubs为你的数据库的 
    String user="sa"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
    String sql="select * from test"; 
    ResultSet rs=stmt.executeQuery(sql); 
    while(rs.next()) {%>    
    您的第一个字段内容为:<%=rs.getString(1)%>    
    您的第二个字段内容为:<%=rs.getString(2)%>    
    <%}%>    
    <%out.print("数据库操作成功,恭喜你");%>    
    <%rs.close(); 
    stmt.close(); 
    conn.close(); 
    %>    
    </body>    
    </html>  
      

  19.   

    sqlserver JDBC Driver(需要设制环境变量)
    代码(别人给我提供):
    import java.awt.*;
    import java.net.*;
    import java.sql.*;
    import javax.naming.*;
    import java.awt.event.*;  public class Example2
              {  public static void main(String args[])
                { Window window=new Window();
                  window.pack();
                }    
              } class Window extends Frame implements ActionListener
      {  TextArea text;
         Panel panel;
     TextField xingmin;
         Button button1,button2;
           
     Window()
            {  super("成绩查询");
                setLayout(new BorderLayout()); 
    setBackground(Color.cyan);
                setBounds(150,150,300,120);   
    setVisible(true);
                text=new TextArea(); 
    button1=new Button("确定");
                button2=new Button("查询所有人的成绩");
                xingmin=new TextField(16); 
    panel=new Panel();
                panel.add(new Label("输入被查询的学生的姓名"));
                panel.add(xingmin); 
    panel.add(button1);
                add("North",panel); 
    add(text,"Center");  
    add(button2,"South");
                text.setEditable(false); 
    text.setBackground(Color.pink);
                button1.addActionListener(this); 
    button2.addActionListener(this);
                addWindowListener(new WindowAdapter()
                       { public void windowClosing(WindowEvent e)
                         {  setVisible(false);
                System.exit(0);
     }
       });
            } 
             public void actionPerformed(ActionEvent e)
              {  if(e.getSource()==button1)
                  {text.setText("查询结果"+'\n');
                    try{ ListStudent1();}
                     catch(SQLException ee) {}
                   }
                 else if(e.getSource()==button2)
                  {text.setText("查询结果"+'\n');
                    try{ ListStudent2();}
                    catch(SQLException ee) {}
                   }  
              }
     
     public void ListStudent1() throws SQLException
      { String name;
        int math,english,physics,sum;
        try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    } catch(ClassNotFoundException e)  
          { e.printStackTrace ();  }  
        Connection con = null;
        try
          {con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=my_db","sa","65683947");
    }catch(Exception e)
         {e.printStackTrace ();}    text.append("已经成功连接到数据库!!");
        Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        
        ResultSet rs=sql.executeQuery("SELECT  * FROM chengjibiao");
          
        while(rs.next()) 
            { 
                name=rs.getString("姓名"); 
    math=rs.getInt("数学");
                physics=rs.getInt("物理");
    english=rs.getInt("英语");
                sum=english+math+physics;
             if((name.trim()).equals(xingmin.getText().trim()))
              {  text.append("****"+"\n"+name+"的成绩:"+"\n"+"数学:"+math+"英语:"+english+"物理:"+physics+"总分:"+sum+'\n');
               }
            }
             if((text.getText().trim()).equals("查询结果"))
                 {  text.setText("没有该人的成绩!!");}
      }      
    public void ListStudent2() throws SQLException
     {  String name; 
        int math,english,physics,sum;
          try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      } catch(ClassNotFoundException e)  
            {
              e.printStackTrace ();
             }  
         Connection con = null;
        try
        {
            con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=my_db","sa","65683947");
        }catch(Exception e)
         {
            e.printStackTrace ();
         }     Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
         ResultSet rs=sql.executeQuery("select * from chengjibiao"); 
         while(rs.next()) 
             {   name=rs.getString("姓名"); 
             math=rs.getInt("数学");
                 physics=rs.getInt("物理");
     english=rs.getInt("英语");
                 sum=english+math+physics;
                 text.append("****"+"\n"+name+"的成绩:"+"\n"+"数学:"+math+"英语:"+english+"物理:"+physics+"总分:"+sum+'\n');
       
               }
       }
    }