相信不少小白和我一样开始了Java操作数据库的学习,小编在数据库上也缺少不少的练习,所有小编将会前面讲内容,后文练习的形式来总结小编对数据库的复习。好了废话不多说,下面就开始练习吧!
目录
什么是JDBC?
Java相关的数据库类库在哪里?
jdbc本质
厂商开发的实现类被称为驱动?:( MySQL的架包被称为MySQL的驱动)
体现接口作用(***重点):
使用JDBC?
准备工作
JDBC编程六步(很重要,背!!)
注册驱动(通知Java程序知道,链接的是哪一个品牌数据库)
获取数据库链接(Java进程与MySQL进程链接的通道开启)
方式二(推荐使用)
获取数据库操作对象(用这个对象来执行sql语句)
执行sql操作命令(执行sql语句)
处理查询结果集(如果是查询语句,就执行查询结果集,不是就没有)
释放资源 (关闭所有的资源,JDBC是进程之间的通信,占资源比较大)
什么是JDBC?
JDBC:Java Databsase Connectivity
使用Java链接数据库的一套接口(就是在Java程序中写sql语句,对数据库中数据做CRUD“增删查改”,架包不需要解压)
Java相关的数据库类库在哪里?
java.sql.*;
这个包下都是jdbc的接口,由SUN公司制定的(程序员就不需要关心底层实现,会使用就行)
jdbc本质
jdbc实际上是SUN公司制定好的对于数据库的接口,全部都interface接口,MySQL与Orcale等其他数据库来对JDNBC来实现(每个数据库实现JDBC方法原理都不一样,由厂家自己进行实现),降低了耦合度(耦合度:就是程序的关联关系)
厂商开发的实现类被称为驱动?:( MySQL的架包被称为MySQL的驱动)
体现接口作用(***重点):
把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心实现的细节
使用JDBC?
准备工作
1,在网上下载数据库的JDBC包(每个数据库厂商都有自己的驱动)
2,类加载器配置路径(类加载器能够找到厂商实现的.class文件)
? ? ? ? 配置环境变量:桌面上此电脑——>右击鼠标——>属性——>高级系统配置——>环境变量
????????classpath没有配置,默认从当前路径下加载
????????classpath配置 例如 D: \abc,则固定从d盘下abc文件下查找
?? ?. ; D: \abc (路径)
这样配置就可以下在当前文件夹路径下查找,没有再到d: \abc文件夹下查找 ?
idea下用配置:
在创建的文件夹下创建一个空文件(名命为lib),数据库架包复制到文件夹中
?加入架包
就完成了。
JDBC编程六步(很重要,背!!)
注册驱动(通知Java程序知道,链接的是哪一个品牌数据库)
package com.luosf.jdbc;
import java.sql.*;
import java.util.Properties;
public class JdbcTest {
void testconn1() throws SQLException {
try{
//创建驱动
Driver driver = new com.mysql.jdbc.Driver();
}catch (SQLException e){
e.printStackTrace();
}
}
}
获取数据库链接(Java进程与MySQL进程链接的通道开启)
package com.luosf.jdbc;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.sql.*;
import java.util.Properties;
public class JdbcTest {
public static void main(String[] args) throws SQLException {
testconn1();
}
static void testconn1() throws SQLException {
try{
//创建驱动
Driver driver = new com.mysql.jdbc.Driver();
//存储数据库网络协议“ldbc:数据库名称://IP地址或者域名 :端口 / 数据库名称”
//charset 指定编码,可填可不填。“&”符号分隔开
String url = "jdbc:mysql://127.0.0.1:3333/db_nhjc?charset=utf-8";
//链接数据库
Properties info = new Properties();
//参数设置
info.setProperty("user","root");//登录MySQL数据库用户名
info.setProperty("password","root");//登录MySQL数据库密码
//如果数据库是8.0,必须是8.0以上的驱动
//8.0以上的驱动必须设置时区参数
info.setProperty("serverTimeZone","Asia/Shanghai");
//登录数据库
Connection connection = driver.connect(url,info);
//查看数据库是否链接成功
System.out.println(connection);
}catch (SQLException e){
e.printStackTrace();
}
}
}
方式二(推荐使用)
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接 ,参数 : jdbc 登录用户名称 密码
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3333/db_nhjc?charset=utf-8","root","root");
//获取数据库操作对象
stmt = conn.createStatement();
获取数据库操作对象(用这个对象来执行sql语句)
//获取数据库操作对象
stmt = conn.createStatement();
执行sql操作命令(执行sql语句)
//执行SQL语句
String sql = "select * from t_shuihuo";
rs = stmt.executeQuery(sql);
处理查询结果集(如果是查询语句,就执行查询结果集,不是就没有)
//处理查询结果集
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String nickname = rs.getString("nickname");
System.out.println("id :"+ id + "name :" +name + "昵称 :"+nickname);
}
释放资源 (关闭所有的资源,JDBC是进程之间的通信,占资源比较大)
finally {
//释放资源
try {
rs.close();
}catch (SQLException e ){
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
}catch (SQLException e ){
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
}catch (SQLException e ){
e.printStackTrace();
}
}
全部代码展示(添加使用下面方式:创建驱动):
package com.luosf.jdbc;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.sql.*;
import java.util.Properties;
public class JdbcTest {
public static void main(String[] args) throws SQLException {
testconn1();
}
static void testconn1() throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接 ,参数 : jdbc 登录用户名称 密码
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3333/db_nhjc?charset=utf-8","root","root");
//获取数据库操作对象
stmt = conn.createStatement();
//执行SQL语句
String sql = "select * from t_shuihuo";
rs = stmt.executeQuery(sql);
//处理查询结果集
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String nickname = rs.getString("nickname");
System.out.println("id :"+ id + "name :" +name + "昵称 :"+nickname);
}
}catch (ClassNotFoundException e){
e.printStackTrace();
}finally {
//释放资源
try {
rs.close();
}catch (SQLException e ){
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
}catch (SQLException e ){
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
}catch (SQLException e ){
e.printStackTrace();
}
}
}
}
现象:
|