赞
踩
就是最近学习JDBC(Java PataBase Connectivity)数据库编程,结果发现连接都连接不上去,
我就先将自己的想法和流程说一下,就是我现在是连接上了,但是之前也没成功,然后这没成功的原因我还是不太知道.网上很多资料感觉都和我看到不一样,就一个JDK安装的目录,我目录下面都没有那些文件,还有就是Telnet服务的开始,现在在服务里面都没有找到这个,但是他是可以直接用的.
目录
先查看一下自己JDK的版本,这个好像关系也不是很大,不过我还是注意了一下.
先win+R,输入cmd进入命令提示符,然后输入下面的指令,查看java的版本,这里的'-'是需要有,不然他的意思就是把version当成一个字节码文件.
java -version
这里可以查看到我的java version是17版的,然后进入这个网址,页面的下面也有详细的说明.系统要求 - JDBC Driver for SQL Server | Microsoft Learnhttps://learn.microsoft.com/zh-cn/sql/connect/jdbc/system-requirements-for-the-jdbc-driver?view=sql-server-ver16
从这里就知道了将要下载的Microsoft JDBC Driver版本,登入这个网址找到自己的,他这个都是压缩包,我这里选择的是.zip格式的.发行说明 - JDBC Driver for SQL Server | Microsoft Learnhttps://learn.microsoft.com/zh-cn/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver16#previous-releases
下载之后就可以解压,解压得到下面的这些文件.jar文件,根据前面的说明,我们这里选择mssql-jdbc-10.2.3.jre17.jar直接复制.
这个我也不确定是不是要下载SQLserver软件,因为我是已经下载了SQLserver软件的,详细安装可以查看这个SQL Server安装教程_不来虚的,脚踏实地的博客-CSDN博客https://blog.csdn.net/weixin_53337941/article/details/123604444
先就是登录SQLserver,最开始是Windows身份验证登录的,咱先登录进入,服务器的名称可以是电脑的设备名称,也可以是127.0.0.1(环回地址)或者是localhost,以及0.0.0.0.这里的话我是用设备名称登录的,所以其他的方法没试过.如果登录失败可以是安装的时候,数据库引擎安装失败,这种我就是删掉从新安装,删除的时候一定要删干净.反正如果卸载不成功安装还是会失败,下面链接大家可以参考一下,我当时是先关闭服务,然后通过控制面板找到今天安装的SQLserver,再通过CCleaner来修复注册表.最后重启电脑,这是我当时的操作,当时就是重复了几次才安装好,在安装的时候把杀毒软件也关了,我当时是把火绒安全关闭开始安装的.彻底卸载SQL Server_sqlserver数据库卸载_未来的四只猫的博客-CSDN博客https://blog.csdn.net/weixin_43808666/article/details/87864369
登录之后找到sa,右键选择属性,选择SQLserver身份验证.设置密码登操作,最后确定.
关闭SQLserver软件,重新登录选择SQLserver身份验证.
然后自己建一个库,建一个表.接下来会用到.https://blog.csdn.net/zys_shan/article/details/104897503https://blog.csdn.net/zys_shan/article/details/104897503
解决SQL server默认1433端口telnet不通的情况。我同学发现自己的端口打开出现了错误,自己的ip可以ping通,但是telnet无法连接,然后是通过这下面的方案解决的。(第二个提供了遇到各种情况的分析)
SQ LServer默认1433端口telnet不通的解决办法 - 民工黑猫 - 博客园 (cnblogs.com)https://www.cnblogs.com/yyee/p/14249983.html系统安装SQL Sever2000后1433端口未开放,如何打开1433端口的解决方法-蒲公英云 (dandelioncloud.cn)https://www.dandelioncloud.cn/article/details/1509374344169074690
新建一个包和一个类,把.jar文件也粘贴进去.然后通过下面的操作形成奶瓶图标的文件.这个网上是说选下面一个Configure Build Path...,但是我那个Libraries下面的Add都是灰色的,选中不了.
灰色的,选中不了,就只能用上面的方法来添加.
配置设置好了接下来就是代码部分.
- //连接数据库的url
- private static final String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=forTest";//forTest为你的数据库名
- //数据库的用户名
- private static final String username="sa";//你的数据库用户名
- //连接数据库的密码
- private static final String password="123456";//你的密码
- //数据库驱动
- private static final String className="com.microsoft.sqlserver.jdbc.SQLServerDriver";
先定义三个字符串,用于接下来获取数据库连接,URL中的jdbc:sqlserver应该是连接sqlserver的数据库吧,127.0.0.1就是地址,1433就是SQLserver的端口,没有打开的需要打开,DatabaseName=forTest中的forTest就是你数据库的库名.
username="sa";中的sa就是你数据库的用户名称,最开始都有一个sa的数据库用户名,password就是你sql登录数据库的密码,密码是自己设置的.当然变量名字是自己任取的.
这里要注意的就是,我之前也是这样写的,但是产生了报错,后面加上了这个语句就没事了.具体的原理我不知道,但是就是改了之后数据库连接成功了.
- //encrypt=false
- private static final String rul="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=forTest;encrypt=false";
加载驱动
- try {
- //加载驱动
- Class.forName(className);
- }catch(ClassNotFoundException e) {
- System.out.println("加载数据库驱动失败");
- e.printStackTrace();
- }
数据库连接
- try {
- //获取数据库连接
- con=DriverManager.getConnection(url,username,password);
- }catch(SQLException e) {
- System.out.println("创建数据库连接失败!");
- con=null;
- e.printStackTrace();
- }
没有产生报错就是连接成功了.
- import java.sql.*;
-
- public class Main {
- //数据库连接对象
- private Connection con;
- //还是要加上encrypt=false,不然程序会报错
- //连接数据库的url
- private static final String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=forTest;encrypt=false";//forTest为你的数据库名
- //数据库的用户名
- private static final String username="sa";//你的数据库用户名
- //连接数据库的密码
- private static final String password="123456";//你的密码
- //数据库驱动
- private static final String className="com.microsoft.sqlserver.jdbc.SQLServerDriver";
-
- public static void main(String[] args) {
- try {
- //加载驱动
- Class.forName(className);
- }catch(ClassNotFoundException e) {
- System.out.println("加载数据库驱动失败");
- e.printStackTrace();
- }
- try {
- //获取数据库连接
- Connection conn=DriverManager.getConnection(url,username,password);
- System.out.println("数据库连接成功");
- }catch(SQLException e) {
- System.out.println("创建数据库连接失败!");
- e.printStackTrace();
- }
- }
- }
拓展
我数据库里面有一些数据,就可以用Java来查询了.查询得到我数据类型要匹配用getString来不会报错,但是数据使用就不方便了,所以最好还是保持和数据库中的数据类型一致.查询语句也不能直接粘贴运行,反正就是要灵活变通.
-
- import java.sql.*;
-
-
- public class Main {
- //还是要加上encrypt=false,不然程序会报错
- //连接数据库的url
- private static final String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=forTest;encrypt=false";//forTest为你的数据库名
- //数据库的用户名
- private static final String username="sa";//你的数据库用户名
- //连接数据库的密码
- private static final String password="123456";//你的密码
- //数据库驱动
- private static final String className="com.microsoft.sqlserver.jdbc.SQLServerDriver";
-
- public static void main(String[] args) {
- try {
- //加载驱动
- Class.forName(className);
- }catch(ClassNotFoundException e) {
- System.out.println("加载数据库驱动失败");
- e.printStackTrace();
- }
- try {
- //获取数据库连接
- Connection conn=DriverManager.getConnection(url,username,password);
- //System.out.println("数据库连接成功");
- Statement stat=conn.createStatement();
- //定义静态select语句
- String sql="select top 10 sc.Sno,Sname,Ssex,Cno,Grade "
- + "from sc,s "
- + "where sc.sno=s.sno and grade>=60"
- + "order by Grade desc";
- //执行静态select语句
- ResultSet rs=stat.executeQuery(sql);//语句不能为空,而且不合法也会报错,还有就是里面的要接收的类型要匹配
- System.out.println("Sno\t\tSname\tSsex\tCno\tGrade");
- while(rs.next()) {
- int Sno=rs.getInt(1);//通过列索引获得指定列的值
- String Sname=rs.getString(2);//通过列索引获得指定列的值
- String Ssex=rs.getString(3);//通过列索引获得指定列的值
- String Cno=rs.getString(4);//通过列索引获得指定列的值
- int Grade=rs.getInt(5);//通过列索引获得指定列的值
- System.out.println(Sno+"\t"+Sname+"\t"+
- Ssex+"\t"+Cno+"\t"+Grade);//打印查询到的结果
- }
- //关闭连接,后开先关
- stat.close();
- conn.close();
- }catch(SQLException e) {
- System.out.println("创建数据库连接失败!");
- e.printStackTrace();
- }
- }
- }
总结:
本人还是学生,然后也是刚学jdbc,如果有错误的地方,希望有大佬能够指正,谢谢大家了,也希望这可以帮助到大家.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。