设为首页 收藏本站
查看: 706|回复: 0

[经验分享] MyEclipse用(JDBC)连接SQL出现的问题~

[复制链接]

尚未签到

发表于 2018-10-15 11:46:27 | 显示全部楼层 |阅读模式
  1. 此驱动程序不支持 Java Runtime Environment (JRE) 1.7 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库。
  如果用的版本是JDBC4.0的话,在导入JDBC驱动包的时候,
  会有两个jar,一个是sqljdbc.jar,另一个是sqljdbc4.jar,
  解决方法就是不要同时将两个jar导入,只导入sqljdbc4.jar的话就可以了。
  2. 连接数据库失败
  com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'myEclipseUser' 登录失败。 ClientConnectionId:c4d48ca5-b061-4656-82f1-1dded2979990。
  这是一连接数据库时就提示这个错误,已经过了TCP检测的阶段了,可以说明不是TCP的连接问题,那么就是用户权限和数据库权限的问题。下面是我的解决过程,其实后来也还没有根本解决,只是重装了SQL Server 2008,然后,使用超级用户sa连接master数据库而己。
  连接数据库失败提示信息:
  


  • com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'myEclipseUser' 登录失败。 ClientConnectionId:c4d48ca5-b061-4656-

  • 82f1-1dded2979990
  •     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:243)
  •     at utils.ConnectionDB.getConnection(ConnectionDB.java:24)
  •     at action.ReaderController.save(ReaderController.java:28)
  •     at action.ReaderController.main(ReaderController.java:107)
  • java.lang.NullPointerException
  •     at action.ReaderController.save(ReaderController.java:33)
  •     at action.ReaderController.main(ReaderController.java:107)
  

  确定代码无误。
  

  
之后先检查是否我的SQL服务还没有开启,不过使用 Sql Server Configuration Manager 查看 MSSQLSERVER的协议时,TCP/IP显示“已启用”的状态,并且服务确认已经开启了,另外个人推测,因为已到达用户登陆的步骤,可以排除SQL的TCP服务未开启的问题。
  

  
然后,我检查 是否我的SQL的用户权限有误,于是:
  
我直接开SQL Server 2008的图形界面,使用“身份验证”的方式去登陆,成功使用“myEclipseUser”用户,密码“12345678“登陆。
  

  
登陆进去后,
  
1. “服务器属性”->“安全性”:
  
         “服务器身份验证”->“SQL Server 和 Windows 身份验证模式。
  
         “登录审核”-> “失败和成功的登陆”
  
2. “服务器角色”:“public”
  
3. “状态”:设置是否允许连接到数据库引擎->授予,登录->启用。
  
4. “用户映射”:我所需要的“myEclipseDB”数据库中的成员身份调为“db_owner”和“public”。
  PS:我的代码:(我将sqljdbc4.jar放在\WebRoot\WEB-INF\lib下)
  


  • // 获取数据库的连接
  • public static Connection getConnection() throws ClassNotFoundException{
  •     // 定义连接数据库的URL,数据库名称,登陆数据库的用户名和密码
  •     String url = "jdbc:sqlserver://localhost:1433;";
  •     String dbName = "databaseName=myEclipseDB;";
  •     String user = "user=myEclipseUser;";
  •     String psw = "password=12345678;";
  •     String connectionUrl = url + dbName + user + psw;
  •     // 定义获取联接的对象
  •     Connection conn = null;
  •     try{
  •         // 获取数据库驱动 JDBC 4.0 会自动加载CLASS,因此可以不手动加载
  •         // Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  •         // 获得数据库连接
  •         conn = DriverManager.getConnection(connectionUrl);
  •         // 关闭事务的自动提交
  •         conn.setAutoCommit(false);
  •         return conn;
  •     }catch(SQLException e){
  •         System.out.println("连接数据库失败");
  •         e.printStackTrace();
  •     }
  •     return null;
  • }
  

  附:关于代码方面,查看过官方文档(如下):
  


  • 与数据库建立简单连接
  • 使用 sqljdbc.jar 类库时,应用程序必须首先按如下所示注册驱动程序:

  • Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  • 加载驱动程序后,可通过使用连接 URL 和 DriverManager 类的 getConnection 方法来建立连接:

  • String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
  •    "databaseName=AdventureWorks;user=MyUserName;password=*****;";
  • Connection con = DriverManager.getConnection(connectionUrl);
  • 在 JDBC API 4.0 中,DriverManager.getConnection 方法得到了增强,可自动加载 JDBC Driver。因此,使用 sqljdbc4.jar 类库时,

  • 应用程序无需调用 Class.forName 方法来注册或加载驱动程序。

  • 调用 DriverManager 类的 getConnection 方法时,会从已注册的 JDBC Driver 集中找到相应的驱动程序。sqljdbc4.jar 文件包

  • 括“META-INF/services/java.sql.Driver”文件,后者包含 com.microsoft.sqlserver.jdbc.SQLServerDriver 作为已注册的驱动程序

  • 。现有的应用程序(当前通过使用 Class.forName 方法加载驱动程序)将继续工作,而无需修改。

  • sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。

  • 有关如何连接数据源和使用连接 URL 的详细信息,请参阅创建连接 URL 和设置连接属性。
  

  CMD下输入 netstat -ano  发现1433端口已经处于监听状态。
  最后:
  卸载了SQL2008,不过卸载不干净,
  不管,照装SQL2005,装上了,不过2005装了后,只有个配置工具,纠那个结啊,其它工具全不见了,
  然后,删了05,再装,还是这个样,据说装SQL2005是要再装上另一个包的,不过在安装包上找了又找,找不着。
  于是,还是再用08的安装包装吧,不过,08的又提示装过实例,不能重名,还以为是08没有卸载完遗留下来的,试了几次直接改名行不行,不行。
  于是,再删了SQL 2005,装08,这下,总算将08重装装上了,然后,再启动数据库,呃~还是老问题,又提示连不上我自建的那个用户了,再将数据库的权限调了几回,还是不行。
  不过,忽然想到在安装过程中,给sa用户设了密码,连myEclipse的时候直接用sa超级用户再加上master数据库,问题总算是暂时解决了,先凑合用着master数据库。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-621894-1-1.html 上篇帖子: 几条实用的SQL语句 下篇帖子: 用命令启动或停止SQL Server 2005 服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表