您的位置:首页 > 编程语言

JDBC与DAO篇--01 JDBC原理、JDBC基础编程

2018-03-22 14:35 507 查看
1.JDBCJava 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)关闭数据连接例子1packa
4000
ge 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();
}
}
}例子3package 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.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test2
jdbc.user=root
jdbc.password=root新建一个DbUtils.javapackage 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);
}

}
}实现连接的Demopackage 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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: