首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

用JDBC联接sql server 2005出现“无法打开登录 'XXX' 中请求的数据库。登录失败。”

2012-12-19 
用JDBC连接sql server 2005出现“无法打开登录 'XXX' 中请求的数据库。登录失败。”用jdbc可以连接

用JDBC连接sql server 2005出现“无法打开登录 'XXX' 中请求的数据库。登录失败。”
用jdbc可以连接 sql server 2005里的系统数据库(如master)。但是新建了一个数据库testdb,却连接不上,为什么?
代码如下:

public class Test {

private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static final String URL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testdb";
private static final String USER = "sa";
private static final String PASSWORD = "123456";

public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con = null;
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USER, PASSWORD);
if (con != null) {
System.out.println("ok");
con.close();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
[最优解释]

一、下载安装
1、SqlServer 2005 Express Edition
   下载:http://msdn.microsoft.com/vstudio/express/sql/download/
   安装完数据库后设置ICP/IP协议启动,具体如下:
   (1)打开SQL Server Configuration Manager
   (2)转到SQL Server 2005 Network Configuration->Protocols for SQLEXPRESS
   (3)将TCP/IP设置为Enabled(启用)
   (4)双击TCP/IP项,转到IP Addresses页
   (5)IP All中设置TCP Port为1433
   (6)重新启动服务
2、SqlServer2005数据库JDBC驱动
   下载:http://download.microsoft.com/download/d/2/e/d2e1ffb6-2cfa-4a62-a22d-a413cce93118/Download_SQL_JDBC_Driver.htm
   安装或者解压,取得sqljdbc.jar文件,该文件即为JDBC驱动。将sqljdbc.jar放到classpath。(web application中放在WEB-INF/lib下)

二、连接数据库SqlServer2005的java代码
1、在tempdb中创建测试数据表格
use tempdb
CREATE TABLE dbo.Table_1
(
 ID bigint NOT NULL,
 NAME varchar(20) NOT NULL,
 EMAIL varchar(50) NULL
)  ON [PRIMARY]

2、测试使用数据库连接
   下面代码创建了一个连接到数据库的连接,及使用连接操作数据库。
/*
 * 创建日期 2006-6-1
 */
package cn.afss.common.web.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.log4j.Logger;

/**
 * @author Amei
 * Amei's FreeSky Studio
 */
public class TestConnSql2k5Bean {
 /**
  * Log4J Logger for this class
  */
 private static final Logger logger =
  Logger.getLogger(TestConnSql2k5Bean.class);
 private Connection conn = null;

 public TestConnSql2k5Bean() {
  super();
 }

 public void getConnection() {
  try {
   Class
    .forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
    .newInstance();
   String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
   String USER = "sa"; // 根据你自己设置的数据库连接用户进行设置
   String PASSWORD = "sa"; // 根据你自己设置的数据库连接密码进行设置


   conn = DriverManager.getConnection(URL, USER, PASSWORD);
  } catch (java.lang.ClassNotFoundException ce) {
   logger.error("Get Connection error:", ce);
  } catch (java.sql.SQLException se) {
   logger.error("Get Connection error:", se);
  } catch (Exception e) {
   logger.error("Get Connection error:", e);
  }
 }

 public void testConnection() {
  if (conn == null)
   this.getConnection();
  try {
   String sql = "SELECT * FROM TABLE_1";
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery(sql);
   while (rs.next()) {
    logger.debug(rs.getString("ID"));
    logger.debug(rs.getString("NAME"));
    logger.debug(rs.getString("EMAIL"));
   }
   rs.close();
   stmt.close();
  } catch (SQLException e) {
   logger.error(e.getMessage(), e);
  } finally {
   if (conn != null)
    try {
     conn.close();
    } catch (SQLException e) {
    }
  }
 }
 public static void main(String[] args) {
  TestConnSql2k5Bean bean = new TestConnSql2k5Bean();
  bean.testConnection();
 }
}

三、Sql Server2000和2005的连接代码区别
   写连接代码时需要注意2000和2005的不同:
1、连接SqlServer2000
  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
  URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb";
2、连接SqlServer2005
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
  URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";

注:详细使用请参考MS JDBC中的官方文档。
结束。



  

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/libra1983/archive/2006/09/22/1266183.aspx

帮你找了个参考资料,希望能解决.
[其他解释]
你的登陆账号是SA,最搞权限了
[其他解释]
新的连接不上 是不是因为新建立的数据库是在不同角色下创建的  ?
[其他解释]
sqlserver:127.0.0.1,1433

try
[其他解释]
引用:
sqlserver:127.0.0.1,1433

try


恩,我也觉得应该是逗号
[其他解释]
引用:
sqlserver:127.0.0.1,1433

try


试过了,不行啊。既然JDBC能连到系统数据库,是不是新建的数据库需要设置什么东西啊?
[其他解释]
谢谢ls贴这么多代码。这个tempdb(应该算是系统数据库)确实能连上,但是新建的数据库连不上!
[其他解释]
也就是说没有权限??
------其他解决方案--------------------


我是通过SQL Server Management Studio Express使用sa用户登录的,然后新建的数据库,角色那一块不怎么懂~

热点排行