java9怎么连接数据库_关于JAVA9通过JDBC连接 sql server 数据库的问题

在学习到SQL语句的嵌入式式编程时,我兴致勃勃地开始尝试受用jdbc尝试一下!!!

但是,让让我悲痛欲绝的一天也就开始了!!!

首先,先来简单的过一遍jdbc连接sql server 数据库的过程:

加载驱动程序:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

通过DriverManager获得数据库的连接:

Connection conn = DriverManager.getConnection("jdbc:sqlserver://DESKTOP-4HGN7AP:1433;DatabaseName=studentData", "sa", "123456");

接下来就是对书数据库进行操作了:

对数据库的操作的语句是通过数据库连接对象进行创建的,

Statement stmt = conn.createStatement();

这个语句就相当于创建了一个Statement对象stmt,stmt就是用来向数据库发送sql语句的,既然对数据库进行了操作,那肯定是会有结果的,而且在数据库中的结果好不是一般的单个变量而是乘坐结果集,在Java里就是ResultSet。在创建stmt时我们并没有指明具体执行什么sql语句,接下来就要完成这一步了(当然也有别的方法制定):

ResultSet rs = stmt.executeQuery(sql);

这样我们就得到了一个结果集了

其实连接数据库,操作数据库的过程并不复杂,但是在其中配置环境的过程中常常出现一些令我十分困惑的问题,这也是为什么这是我悲痛欲绝的一天了!接下来就来说说我这次遇到的问题吧:

1.让你的数据库能够被连接!

要通过jdbc访问数据库,你的数据库就必须是对外开放的,什么意思呢?因为毕竟一个java程序是不属于sql server 的,java程序是通过连接你的数据库所在的服务器来进行访问数据库的,就是通过TCP/IP协议,并且要设置好连接的端口,默认是1433,但是这部配置其实很简单,通过 SQLServerManager(sql server配置管理器)来进行设置就好了。如图:

66e99b032d5a432d2651fbe3d9f9a334.png

TCP/IP设置成这样就好了,sql server 中的网络配置如下即可:

717a013ba2f1e5ccff897b9840e58ec6.png

还有就是你的数据库实例要处于启动状态,不然是不可能连接上数据库的哦:

ddc4868b1dfbec3834bf284b3d6facd5.png

这个时候可以打开你的cmd程序,键入telnet 127.0.0.1 1433 看看你的端口设置成功了没有,如果没有重复上述步骤。

2.搞定你的数据库的身份验证方式!

可以打开sql server 的SSMS,右击服务器->属性->安全性,在右侧面板出查看服务器身份验证:

8b7a0fd5d2ac424eea2a6b8dad2611a1.png

切记!一定要设置成sql server和windows身份验证模式!之后再查看你要使用的用户名的属性:

db5ee3d0005ad7762388c880600592b7.png

保证你的用户名允许连接到数据库引擎,登录名是出于启用的状态!

3.找到符合你的JDK的jdbc驱动程序包!!!

这里说的sqljdbc只是一个统称,不同jdk的驱动程序包的包名是不一样的,方便起见,一下均使用sqljdbc表示。

走到这一步也就离成功不远了,但是也是最艰难的一步(至少对我来说是)。一定要是符合你的JDK版本的驱动程序包!!!这里助你一臂之力:点这里找到适合你的sqljdbc驱动程序包!!!

如果jdk和sqljdbc不匹配的话你可能会一直处于无法连上的状态,我猜测是因为如果你的JDK版本更高的话,无法使用低版本的sqljdbc,语序也许是因为sqljdbc是向下兼容的吧。

下载到了sqljdbc之后,就要设置classpath了!既然都到了jdbc这个阶段了,jdk什么的肯定都已经搞定了,这里也就不细说了,找到环境变量,在classpath中添加你下载的sqljdbc包的位置,比如我的是放在 D:\Program Files\Java\jre\jdbc\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre9.jar 里的,所以在classpath里添加 “;D:\Program Files\Java\jre\jdbc\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre9.jar”,到此sqljdbc驱动程序也就配置好了,写个程序试试吧:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class connectionURL {

public static void main(String[] args){

Connection conn;

Statement stmt;

ResultSet rs;

//这里的DEKTOP-4HGN7AP根据自己的受苦的服务器来设置

String url = "jdbc:sqlserver://DESKTOP-4HGN7AP:1433;DatabaseName=studentData";

String sql = "select * from student";

try {

try {

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

System.out.println("驱动成功!");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

// 连接数据库

conn = DriverManager.getConnection(url, "sa", "123456");

System.out.println("数据库连接成功!");

// 建立Statement对象

stmt = conn.createStatement();

//获得结果集

rs = stmt.executeQuery(sql);

System.out.println("Sno------Sname------Sex------age------dno------dormno");

while (rs.next()) {

String sno = rs.getString("Sno");

String sname = rs.getString("Sname");

String sex = rs.getString("Sex");

int age = rs.getInt("Sage");

String dno = rs.getString("dno");

String dormno = rs.getString("dormno");

System.out.println(sno+"------"+sname+"------"+sex+"------"+age+"------"+dno+"------ "+dormno);

}

if (rs != null) {

rs.close();

rs = null;

}

if (stmt != null) {

stmt.close();

stmt = null;

}

if (conn != null) {

conn.close();

conn = null;

}

} catch (SQLException e) {

e.printStackTrace();

System.out.println("数据库连接失败");

}

}

}

数据库用完之后要关闭连接,结果集,语句都要关闭!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值