在我的程序里面使用数据库,当要打开数据库时却总是出错,数据库测试也成功的,请大侠帮小弟解决一下,小弟万分感谢。
 
错误显示为:
 
数据库驱动成功
 com.microsoft.sqlserver.jdbc.SQLServerException: 无法打开登录所请求的数据库 "Stu"。登录失败。 ClientConnectionId:35cf9396-6f40-481e-b51f-28c4d8eba363
  at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
  at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
  at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
  at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
  at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
  at java.sql.DriverManager.getConnection(DriverManager.java:579)
  at java.sql.DriverManager.getConnection(DriverManager.java:221)
  at demo.p1234.main(p1234.java:25)
sqlserver

解决方案 »

  1.   

    报的很明显.你登录失败.或者没有访问stu的权限
      

  2.   

    import java.sql.*;
    import java.util.*;
    public class p1234 {

     public static void main(String[] args) 
     {
      String connectDB= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Stu";
     try
      {
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载数据库引擎,返回给定字符串名的类
      }catch(ClassNotFoundException e)
      {
       e.printStackTrace();
       System.out.println("加载数据库引擎失败");
       System.exit(0);
      }     
     System.out.println("数据库驱动成功");  try
      {
       String user="sa";
       String password="********";
       Connection con=DriverManager.getConnection(connectDB,user,password);//连接数据库对象
       System.out.println("连接数据库成功");
       Statement stmt=con.createStatement();//创建SQL命令对象
       System.out.println("***********菜单选择******************");
       System.out.println("1:按身高升序排序输出");
       System.out.println("2:实现姓名模糊查询并输出");
       System.out.println("3:将张三的身高更改为2.0m,并输出");
       System.out.println("4:退出");
       System.out.println("************************************");
       while(true)
       {
           System.out.println("请输入(1-4):");
           Scanner reader=new Scanner(System.in);
           int x=reader.nextInt();
           if(x==4)
           {
            System.out.println("退出~");
            break;
           }
           else if(x==1)
           {
            //读取数据
            ResultSet rs=stmt.executeQuery("SELECT * FROM Stu order by sheight");//返回SQL语句查询结果集(集合)
            System.out.println("开始读取数据");
            //循环输出每一条记录
            while(rs.next())
            {
             //输出每个字段
             System.out.println(rs.getString("sno")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex")+"\t"+rs.getString("sheight"));
            }
            System.out.println("读取完毕");  
           }
           else if(x==2)
           {
            System.out.println("请输入模糊名(例:李):");
            reader=new Scanner(System.in);
            String str=reader.next();
          //读取数据
            ResultSet rs=stmt.executeQuery("SELECT * FROM Stu where sname like '%"+str+"%'");//返回SQL语句查询结果集(集合)
            System.out.println("开始读取数据");
            //循环输出每一条记录
            while(rs.next())
            {
             //输出每个字段
             System.out.println(rs.getString("sno")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex")+"\t"+rs.getString("sheight"));
            }
            System.out.println("读取完毕"); 
           }
           else if(x==3)
           {
            stmt.executeUpdate("update Stu set sheight=200.00 where sname='张三' ");
            ResultSet rs=stmt.executeQuery("select * from Stu where sname='张三'");//返回SQL语句查询结果集(集合)
            System.out.println("开始读取数据");
            //循环输出每一条记录
            while(rs.next())
            {
             //输出每个字段
             System.out.println(rs.getString("sno")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex")+"\t"+rs.getString("sheight"));
            }
            System.out.println("读取完毕"); 
           }
           else
            System.out.println("输入错误!重新输入"); 
       }  //关闭连接
       stmt.close();//关闭命令对象连接
       con.close();//关闭数据库连接
      }
      catch(SQLException e)
      {
       e.printStackTrace();
       //System.out.println("数据库连接错误");
       System.exit(0);
      }
     }
    }
      

  3.   

    用sql server 客户端登录下试试,先看看这个用户名、密码、权限是不是有效,然后再到程序里连接,考虑是不是驱动的问题。