JDBC
来源:互联网 发布:java se8.0 编辑:程序博客网 时间:2024/06/06 21:53
JDBC简介
JDBC(Java Database Connectivity)是标准Java访问数据库API,在java.sql下。
必须把mysql-connector-java-5.1.7-bin.jar导入到tomcat的lib目录下面!
在java项目中,只需要引入mysql-connector-java-5.1.7-bin.jar就可以运行java项目。
在web项目中,当Class.forName("om.mysql.jdbc.Driver");时myeclipse是不会去查找字符串,不会去查找驱动的。所以只需要把mysql-connector-java-5.1.7-bin.jar拷贝到tomcat下lib目录就可以了。
Java使用JDBC访问数据库简单的例子
访问JDBC访问数据库一般步骤:注册驱动,获取连接,获取Statement,执行SQL返回结果集,遍历结果集,释放连接。
importjava.sql.DriverManager;
import java.sql.ResultSet;
//importjava.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
public class DUBtil {
private staticfinal StringURL ="jdbc:mysql://localhost:3306/databaseWeb";
private static final String USER= "root";
private static final String PASSWORD= "0000";
public static void main(String[] args)throws Exception {
// 1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 2.获得数据库连接
Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);
// 3.通过数据库连接操作数据库,增删改查
Statement stmt =conn.createStatement();
ResultSet rs =stmt.executeQuery("select* fromtb_person");
while (rs.next()) {
System.out.println(rs.getString("id") + rs.getString("name"));
}
}
}
注册数据库驱动
三种方法:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());new com.mysql.jdbc.Driver();Class.forName("com.mysql.jdbc.Driver");
JDBC基本操作:CRUD
CRUD:create、read、update、delete
executeQuery(String sql)用于执行SELECT语句,返回
executeUpdate(String sql)用于执行INSERT、UPDATE、DELETE。
流程与上面的例子类似。
注意是取 request 参数而不是地址栏参数,因此用 getAttribute方法而不是 getParameter
Statement和PreparedStatement
使用Statement是最简单的方式,使用SQL语言然后执行executeQuery或executeUpdate。
PreparedStatement接口继承Statement接口,是Statement子类。最大区别是PreparedStatement可以使用参数。
如:
Statement:
String updateString = "UPDATE COFFEES SET SALES = 75 " + "WHERECOF_NAME LIKE ′Colombian′";
stmt.executeUpdate(updateString);
PreparedStatement:
PreparedStatement preStmt = con.prepareStatement("UPDATE COFFEES SETSALES = ? WHERE COF_NAME LIKE ? ");
preStmt.setInt(1, 75);
preStmt.setString(2, "Colombian");
preStmt.executeUpdate();
Statement执行批量SQL语句使用stmt.addBatch(Stringsql);//不同的sql语句
PreparedStatement执行批量SQL语句使用preStmt.addBatch();//同一条带参数的语句,preStmt已经set过参数。
处理结果集
进行两次查询不必rs.close(),因为返回ResultSet时会自动关闭上一次查询的结果集。
Statement默认返回的ResultSet只可往后滚动,因此只有next()、last()方法可用,若想使用previous()、first(),需要
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
Pagination分页显示
MySQL分页是利用LIMIT实现,如:
SELECT * FROM tb_person LIMIT 21,10//只取出从第21行开始的10行记录
分页显示时需要先查询记录总数,如SELECT count(*) FROM tb_person
不同数据库采用不同的方式实现分页,语法不同。
ResultSetMetaData元数据
rs.getString(“name”)来获取name列内容。
ResultSet对象的列名可由ResultSetMetaData元数据获得
DAO模式
DAO(Database Access Object)数据库操作对象,保存数据时它将JavaBean属性拆分成正确的SQL语句保存到数据库中,读取数据时将数据库中数据通过setter方法设置到JavaBean中。
DAO的出现使数据库代码和业务代码分离,Servlet或JSP只操作JavaBean与DAO层,DAO层只操作数据库。
抛出异常自动回滚
conn.setAutoCommit(false);//将自动提交设置为False,默认true
再执行多条SQL语句执行完毕,确认没有发生错误,在执行
conn.commit()提交,如果有异常抛出或者返回值不对,执行
conn.rollback()回滚。
事务的提交必须执行conn.commit(),事务的回滚不一定要显示的执行conn.rollback(),如果程序直接抛出异常,事务也会回滚。
事务性是数据库区分与其他存储技术的重要特征之一,基本上所有的数据库编程都会涉及事务编程。
连接池
减少创建与断开Connection开销,要操作数据库,程序并不是直接创建Connection,而是向连接池申请。
。。。
- jdbc
- JDBC
- jdbc
- JDBC
- jdbc
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- jdbc
- JDBC
- JDBC
- jdbc
- 2017-11-9每日一练
- 单例模式
- A变为a和a的ASCII值
- WEEK7 JAVA
- centos7.2 MYSQL双主+半同步+keepalived实现高可用负载均衡
- JDBC
- mysql缓冲和缓存设置详解
- POJ1159求LCS长度 滚动数组优化空间
- SSM-CRUD项目简介
- 出口托收结算方式DA、DP、CAD详解
- 汉诺塔 递归算法
- 算法:堆栈(转换八进制)
- centos7.2 percona-toolkit进行mysql主从数据一致性校验+修复
- WEEK 7 C