本文共 6123 字,大约阅读时间需要 20 分钟。
1.JDBC
Java Database Connectivity:Java访问数据库的解决方案。希望用相同的方式访问不同的数据库,以实现与具体数据库无关的Java操作界面。JDBC定义一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自数据库的特点去实现这些接口。
2.JDBC工作原理
JDBC定义接口,数据库厂商实现接口,程序员调用接口,实际调用的是底层数据库厂商的实现部分。
JDBC工作过程:
(1)导入JDBC驱动jar
(2)注册JDBC驱动 Class.forName(“驱动程序类名”)
(3)获得Connection对象
需要3个对象:url,uername,password
连接到数据库
(4)创建Statement(语句)对象
conn.getStatement()方法创建
用途:用于执行SQL语句的
--execute(ddl)执行任何SQL,常用执行DDL
--executeUpdate(dml)执行DML语句,如insert update delete
--executeQuery(dql)执行DQL语句,如:select
(5)处理执行结果
--execute(ddl)如果没有异常则成功
--executeUpdate(dml)返回数字,表示更新“行”数量,抛出异常失败
--executeQuery(dql)返回ResultSet(结果集)对象,代表2维查询结果
(6)关闭数据连接
例子1
package com.lcz.jdbc.day01;/* * 执行DDL语句 */import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Demo01 { public static void main(String[] args) { //驱动程序名 String driver="com.mysql.jdbc.Driver"; //声明Connection对象 Connection conn; //URL指向要访问的数据库名 String url="jdbc:mysql://localhost:3306/test2"; //MySQL配置的用户名 String user="root"; //MySQL配置的密码 String password="root"; try { //(1)加载驱动程序 Class.forName(driver); //(2)连接MySQL数据库 conn=DriverManager.getConnection(url,user,password); //(3)创建statement类对象,用来执行SQL语句 Statement statement=conn.createStatement(); //sql语句 String sql="create table emp(empno int(4),ename varchar(10),job varchar(9),hiredate date,sal float(7,2))"; //(4)处理SQL处理结果 boolean b = statement.execute(sql); System.out.println(b); //(5)关闭连接 conn.close(); } catch (ClassNotFoundException e) { //数据库驱动类异常处理 System.out.println("sorry can't find the Driver!"); e.printStackTrace(); } catch (SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } }}
例子2:
package com.lcz.jdbc.day01;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;/* * 执行DML语句 */public class Demo02 { public static void main(String[] args) { try { //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //获得连接 String url="jdbc:mysql://localhost:3306/test2"; String user="root"; String password="root"; Connection con=DriverManager.getConnection(url,user,password); //获得Statement语句 Statement statement=con.createStatement(); //sql语句 String dml="insert into emp(empno,ename,job,hiredate,sal) values(1,'lcz','student','2015-09-12',10000)"; int executeUpdate = statement.executeUpdate(dml); System.out.println(executeUpdate); //关闭连接 con.close(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
例子3
package com.lcz.jdbc.day01;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Date;/** * 执行DQL语句 * @author LvChaoZhang * */public class Demo3 { public static void main(String[] args) { try { //注册驱动 Class.forName("com.mysql.jdbc.Driver"); String user="root"; String password="root"; String url="jdbc:mysql://localhost:3306/test2"; //连接 Connection con = DriverManager.getConnection(url,user,password); //获得Statement Statement statement = con.createStatement(); //dml语句 String dml="select *from emp"; //执行结果 ResultSet resultSet = statement.executeQuery(dml); //resultSet.next()移动结果集游标移到下一行 while(resultSet.next()) { //获取名字 String name=resultSet.getString("ename"); //获取工资 String job=resultSet.getString("job"); //获取hiredate日期 Date date=resultSet.getDate("hiredate"); //获取工资 int sal=resultSet.getInt("sal"); System.out.println(name+" "+job+" "+date+" "+sal); } resultSet.close(); con.close(); } catch (ClassNotFoundException e) { System.out.println("异常发生了"); e.printStackTrace(); }catch (SQLException e) { System.out.println("yic"); e.printStackTrace(); } }}
3.连接管理
在软件中数据库连接使用非常频繁,如果每次都创建连接,就会造成代码的大量的冗余,常规的做法是建立数据库连接工具类,封装数据库连接过程,统一数据库连接过程,使用时候就可以简化代码。
Properties是Java中专门用于读取配置文件的API
(1)其底层就是文本文件IO(2)Properties本身实现Map接口,内部是散列表(3)Properties限定了key和Value都是String类型实现步骤:(1)创建数据库连接参数文件db.properties(2)创建DbUtils.java封装数据库连接方法 --利用Properties读取配置文件夹中的数据库连接参数 --创建方法getConnection封装数据库连接过程(3)使用getConnection方法说明:(1)driver url uername password是四个数据库连接参数,因为只需要一份则定义为静态变量(2)静态代码块的目的是从配置文件中读取4个数据库连接参数的值(3)getConnection()方法封装数据库连接过程(4)close方法封装了数据库连接关闭的过程
具体步骤:
新建一个 db.properties
# db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test2jdbc.user=rootjdbc.password=root
新建一个DbUtils.java
package com.lcz.jdbc.day01;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.util.Properties;public class DbUtils { static String driver; static String url; static String user; static String password; //读取文件中数据库连接参数 //静态代码块,初始化静态属性 static { //1.利用properties读取配置文件 Properties cfg=new Properties(); InputStream in=DbUtils.class.getClassLoader().getResourceAsStream("db.properties"); try { cfg.load(in); System.out.println(cfg); } catch (IOException e) { e.printStackTrace(); } //2.从配置文件中查找相应参数 driver=cfg.getProperty("jdbc.driver"); url=cfg.getProperty("jdbc.url"); user=cfg.getProperty("jdbc.user"); password=cfg.getProperty("jdbc.password"); } /** * 封装创建数据库连接的过程 * 简化数据库连接 * @return */ public static Connection getConnection() { try { Class.forName(driver); Connection conn = DriverManager.getConnection(url,user,password); return conn; }catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } }}
实现连接的Demo
package com.lcz.jdbc.day01;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Demo4 { public static void main(String[] args) throws Exception { //创建连接 Connection conn = DbUtils.getConnection(); Statement statement = conn.createStatement(); String sql="select *from emp"; ResultSet set = statement.executeQuery(sql); while(set.next()) { String name=set.getString("ename"); System.out.println(name); } conn.close(); }}
转载地址:https://codingchaozhang.blog.csdn.net/article/details/79645356 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!