网站页面优化简单吗,学校网站怎么做,新手学做网站学哪些知识,网络域名的网站Java JDBC篇1——初识JDBC
Java DataBase Connectivity Java 数据库连接#xff08;Java语言操作数据库#xff09;
1、什么是JDBC
其实是官方定义的一套操作所有关系型数据库的规则#xff08;接口#xff09;#xff0c;各个数据库厂商去实现这套接口#xff0c;提供…Java JDBC篇1——初识JDBC
Java DataBase Connectivity Java 数据库连接Java语言操作数据库
1、什么是JDBC
其实是官方定义的一套操作所有关系型数据库的规则接口各个数据库厂商去实现这套接口提供数据库驱动jar包我们使用这套接口JDBC编程真正执行的代码是驱动jar包中的实现类
2、MySql驱动包
官网地址 https://mvnrepository.com/artifact/mysql/mysql-connector-java
mysql-connector-java-5.1.49.jar 百度云https://pan.baidu.com/s/17J2VfkGS2h44j69eB8TuFA提取码nhnt
mysql-connector-java-8.0.25.jar 百度云https://pan.baidu.com/s/1b8n7650uMKJtwidoptOjNQ提取码wtvn
3、JDBC快速入门
3.1、建表和数据
USE test;
CREATE TABLE USER (id INT PRIMARY KEY AUTO_INCREMENT ,username VARCHAR(50),PASSWORD VARCHAR(50),birthday DATE
);
INSERT INTO USER (username, PASSWORD,birthday)
VALUES(admin1, 123,2000-12-24),
(admin2,123,2003-12-24),
(test1, 123,2006-12-24),
(test2, 123,2005-12-24);3.2、JDBC
5.x
public class Test {public static void main(String[] args) {Connection connection null;Statement statement null;ResultSet resultSet null;try {// 1、注册驱动Class.forName(com.mysql.jdbc.Driver);// 2、获取连接String urljdbc:mysql://localhost:3306/test;String usernameroot;String passwordblingbling123.;connection DriverManager.getConnection(url, username, password);//3、定义sqlString sqlselect * from user;//4、获取指定sql对象statement connection.createStatement();//5、执行sqlresultSet statement.executeQuery(sql);//6、取出结果while (resultSet.next()){System.out.println(resultSet.getString(username));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();} finally {//7、关闭连接if (resultSet!null){try {resultSet.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (statement!null){try {statement.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (connection!null){try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}
}8.x
public class Test {public static void main(String[] args) {Connection connection null;Statement statement null;ResultSet resultSet null;try {// 1、注册驱动Class.forName(com.mysql.cj.jdbc.Driver);// 2、获取连接String urljdbc:mysql://localhost:3306/test?serverTimezoneUTCcharacterEncodingutf-8useSSLfalse;String usernameroot;String passwordblingbling123.;connection DriverManager.getConnection(url, username, password);//3、定义sqlString sqlselect * from user;//4、获取指定sql对象statement connection.createStatement();//5、执行sqlresultSet statement.executeQuery(sql);//6、取出结果while (resultSet.next()){System.out.println(resultSet.getString(username));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();} finally {//7、关闭连接if (resultSet!null){try {resultSet.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (statement!null){try {statement.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (connection!null){try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}
}4、JDBC对象详解
4.1、Class.forName(“com.mysql.jdbc.Driver”);
查看源码发现在com.mysql.cj.jdbc.Driver类中存在静态代码块
static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException(Cant register driver!);}
}mysql5之后的驱动jar包可以省略注册驱动的步骤
5.x
Class.forName(com.mysql.jdbc.Driver);8.x
Class.forName(com.mysql.cj.jdbc.Driver);4.2、DriverManager数据库连接对象
方法声明功能介绍Connection getConnection(String url, String user, String password)通过连接字符串和用户名,密码来获取数据库连接对象
5.x url
String urljdbc:mysql://localhost:3306/test;8.x url
String urljdbc:mysql://localhost:3306/test?serverTimezoneUTCcharacterEncodingutf-8useSSLfalse;4.3、Connection数据库连接对象
方法声明功能介绍Statement createStatement()创建 SQL语句执行对象PreparedStatement prepareStatement(String sql)创建 SQL语句执行对象防注入
4.4、Statement执行sql对象
方法声明功能介绍boolean execute(String sql)可以执行任意的sql语句int executeUpdate(String sql)执行DMLinsert、update、deleteDDL(createalter、drop)返回值影响的行数可以通过这个影响的行数判断DML语句是否执行成功ResultSet executeQuery(String sql)执行DQLselect)语句
4.5、ResultSet结果集对象
方法声明功能介绍boolean next()游标向下移动一行判断当前行是否是最后一行末尾(是否有数据)如果是则返回false如果不是则返回trueXxx getXxx(参数):获取数据Xxx代表数据类型int列的编号String列名称
5、抽取JDBC工具类
urljdbc:mysql://localhost:3306/test
userroot
passwordblingbling123.
drivercom.mysql.jdbc.Driverpublic class JDBCtool {private static String urls;private static String user;private static String password;private static String driver;static {Properties propertiesnew Properties();ClassLoader classLoaderJDBCtool.class.getClassLoader();URL urlclassLoader.getResource(connection.properties);String pathurl.getPath();try {properties.load(new FileReader(path));} catch (IOException e) {e.printStackTrace();}urlsproperties.getProperty(url);userproperties.getProperty(user);passwordproperties.getProperty(password);driverproperties.getProperty(driver);try {Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getconnection() throws SQLException {return DriverManager.getConnection(urls,user,password);}public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){if (resultSet!null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (preparedStatement!null){try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection!null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}public class Test {public static void main(String[] args) throws SQLException {Connection connection JDBCtool.getconnection();String sqlselect * from user;PreparedStatement preparedStatement connection.prepareStatement(sql);ResultSet resultSet preparedStatement.executeQuery(sql);while (resultSet.next()){System.out.println(resultSet.getString(username));}JDBCtool.close(connection,preparedStatement,resultSet);}
}