JAVASE进阶之jdbc(Java Database Connectivity)
本文章使用的开发工具为idea2020.1.1,JDK为1.8,驱动管理包为mysql-connector-java-5.0.8-bin.jar
1.1.JDBC简介
(作者是这样理解的“SUN公司”为了把程序员当人看,不想人程序员学习这么多数据库,所定出一系列的规定),JDBC是什么?JDBC英文名为:Java Data Base Connectivity(Java数据库连接),官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API,根本上说JDBC是一种规范,它提供的接口,一套完整的,允许便捷式访问底层数据库。可以用JAVA来写不同类型的可执行文件:JAVA应用程序、JAVA Applets、Java Servlet、JSP等,不同的可执行文件都能通过JDBC访问数据库,又兼备存储的优势。简单说它就是JAVA与数据库的连接的桥梁或者插件,用JAVA代码就能操作数据库的增删改查、存储过程、事务等。
1.2.JDBC的工作原理
JDBC有什么用?我们用JAVA就能连接到数据库;创建SQL或者MYSQL语句;执行SQL或MYSQL的查询数据库;查看和修改结果记录。
我们思考一下?数据库是由不同生产产商决定的,例如Mysql、Oracle、SQL Server,而如果JAVA JDK不可能说提供对不同数据库的实现吧?还有,JAVA具备天生跨平台的优势,它就提供了JDBC的接口API,具体的实现由不同的生产产商决定。这样,数据库生产产商都根据JAVA API去实现各自的应用驱动,这问题就迎刃而解了。
1.3.jdbc常用接口
URL
//调用mysql的驱动//mysql端口编号为3306,这里有些情况会链接不了,建议使用127.0.0.1/数据库名?支持中文编码&设置他的字符薇UTF-8&使用安全的链接
private static String url="jdbc:mysql://localhost:3306/autosys?useUnicode=true&&characterEncoding=UTF-8&userSSL=true";
DriverManager //驱动类—用于获取Connection Connection链接对象接口
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//链接数据库对象=驱动用户.获取链接(链接地址,数据库用户,数据库用户密码)--connection==代表代码数据库里的电脑管理员
Connection connection = DriverManager.getConnection(url, "root", "123456");
//事务回滚
connection.rollback();
//事务提交
connection.commit();
//事务自动提交
connection.setAutoCommit();
Statement //执行SQL对象 prepareStatement()
String sql="select * from autoTables";
//执行SQL语句------执行SQL的对象
Statement statement = connection.createStatement();
//执行任何SQL语句--返回值会进行一个判断,相对于效率变低
statement.execute();
//查询方法(select)--返回一个结果集ResultSet--封装了结果集
statement.executeQuery();
//更新,删除,插入(Update,delete,insert)--返回一个受影响的行数
statement.executeUpdate();
ResultSet 查询结果集对象–封装所有查询结果
要获得指定的数据类型
//5.执行SQL对象,去执行SQL
String sql="select * from autoTables";
ResultSet resultSet = statement.executeQuery(sql);//返回结果集,
// 在不知道数据类型的时候使用
resultSet.getObject();
//知道使用以下
resultSet.getString();
resultSet.getInt();
resultSet.getDate();
resultSet.getDouble();
遍历数据,指针
resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个
resultSet.previous();//移动到前一行
resultSet.absolute();//移动到指定行
释放资源–必须要做
//6。释放链接
resultSet.close();
statement.close();
connection.close();
1.4.jdbc基础链接
package com.Get.demo01;
import com.mysql.jdbc.Driver;
import java.sql.*;
import org.apache.log4j.Logger;
//我的第一个jdbc程序
public class jdbcdemo {
/**
* @Author Nil
* @Date 9:59 2020/5/29
**/
private static Logger logger=Logger.getLogger(jdbcdemo.class);
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息,url
//useUnicode=true&&characterEncoding=UTF-8&userSSL=true
//支持中文编码&设置他的字符薇UTF-8&使用安全的链接
String url="jdbc:mysql://localhost:3306/autosys?useUnicode=true&&characterEncoding=UTF-8&userSSL=true";
String username="root";
String pwd="ljl123";
//3.链接数据库对象
Connection connection = DriverManager.getConnection(url, "root", "ljl123");
//4.执行SQL语句------执行SQL的对象
Statement statement = connection.createStatement();
//5.执行SQL对象,去执行SQL
String sql="select * from autoTables";
ResultSet resultSet = statement.executeQuery(sql);//返回结果
//遍历,指针
while(resultSet.next()){
logger.info("id="+resultSet.getObject("id"));
logger.info("name="+resultSet.getObject("name"));
}
//6。释放链接
resultSet.close();
statement.close();
connection.close();
}
}