java连接数据库(jdk1.8)
**
JDBC连接数据库
**
JDBC是什么?怎么连接数据库?
数据库和jdbc是不同的东西,请勿将其混为一谈
JDBC
jdbc就是一套API,是数据库公司针对开发语言(这里就是Java)定义的一套库函数等,在Java中就是类和接口
JDBC:
而这些类和接口需要我们去下载数据库公司提供相应的包,分别要对应数据库版本。(如果你的数据库是mysql5.7,那就要下载5.7的jdbc,如果你的数据库是sqlserver,那就要下载sqlserver相应的jdbc)
这种使用包来调用类和接口及相应方法的方式称之为面向接口开发
连接数据库
1.注册驱动(mysql为例)
要用jdbc,首先需要将这个包导入到我们的项目工程下,对于不同的软件有不同的导包方式,这里不多阐述
然后进行驱动的注册,告诉JVM我们使用的是哪一个数据库
//mysql5.7要用到com.mysql.jdbc.Driver这个类来进行注册
//我们使用Java的反射技术进行注册
Class.forName("com.mysql.jdbc.Driver");
2.获取连接
使用jdbc中的类,完成对数据库的连接
//url为我们连接数据库的路径,连接本地(localhost)还是远程服务器上数据库。3306为mysql的默认端口号,test为选定数据库名
String url = "jdbc:mysql://localhost:3306/test";
//数据库登录用户名及密码
String username = "root";
String password = "123456";
//使用Connection接口的实现类来获取这个连接
Connection con = DriverManager.getConnection(url,username,password);
注意:
mysql8版本及以上
1、注册类位置为com.mysql.cj.jdbc.Driver
2、url路径在5.7基础上后缀要加上?useSSL=false&serverTimezone=Hongkong(设置时区等,否则会连接失败)
3.获取执行对象
通过连接对象获得SQL语句的执行对象
//用con来创建Statement接口的实现类对象
Statement sta = con.createStatement();
4.执行SQL语句
通过执行对象,执行SQL语句,并返回结果
int executeUpdate(sql); //适合增删改语句,返回成功行数
ResultSet executeQuery(sql);//适合查询语句,返回查询结果集
5.处理结果
使用ResultSet对象的get方法将查询结果打印出来
//经过上面查询语句后,返回一个ResultSet对象
ResultSet rs = sta.executeQuery("select * from tablename")
//next()方法将下标向下走一行,并返回一个boolean类型的值
//rs.next();
//使用循环将结果集打印出来
while (rs.next()){
String 字段名1 = rs.getString("数据库列名1");
String 字段名2 = rs.getString("数据库列名2");
String 字段名3 = rs.getString("数据库列名3");
System.out.println("数据库列名1: "+字段名1+
" 数据库列名2: "+字段名2+
" 数据库列名3: "+字段名3);
}
/**
*
* rs.getInt() 获取表的列为int类型的值
* rs.getString() 获取表的列为char或者varchar类型的值
* Date、Time、Object、Byte...都有相应get方法
*
*/
6.释放资源
rs.close();
sta.close();
con.close();
整体代码
附上查询的完整代码
package JDBC;
import com.mysql.cj.jdbc.Driver;
import java.sql.*;
public class Test {
public static void main(String[] args) {
try {
//我的数据库版本为mysql8
Class.forName("com.mysql.cj.jdbc.Driver");
/**
* url为我们连接数据库的路径,连接本地(localhost)还是远程服务器上数据库。
* 3306为mysql的默认端口号,test为选定数据库名
*/
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Hongkong";
//数据库登录用户名及密码
String username = "root";
String password = "123456";
//使用Connection接口的实现类来获取这个连接
Connection con = DriverManager.getConnection(url,username,password);
//用con来创建Statement接口的实现类对象
Statement sta = con.createStatement();
//查询语句,返回一个ResultSet对象
ResultSet rs = sta.executeQuery("select * from student");
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("id: "+id+" name: "+name);
}
//释放资源
rs.close();
sta.close();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
数据库student表内容:
执行结果