一、JDBC的经典用法:
.
二、JDBC图解
三、JDBC使用步骤:
- 导入相应数据库的jar包。
- 加载驱动类 class.forName("类名") // Class.forName("com.mysql.jdbc.Driver")
- 给出数据库的URL //URL格式: jdbc:子协议:数据源 子协议
- 通过 java.sql.DriverManager的getConnection可获得Connection对象,以建立连接
- 创建preparestatement对象
- 执行查询(resultSet)或者更新
- 结束处理
- 关闭连接
最基本的连接例子:
1.导入驱动包
2.其他步骤如下
package com.demo.demo.demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Demo1 {
// 3.给出URL
private String dirver = "com.mysql.jdbc.Driver";
private String url = "JDBC:mysql://localhost:3306/world";
private String user = "root";
private String passwd = "1234";
public static void main(String[] args) throws SQLException {
Connection con = null;
PreparedStatement prep = null;
ResultSet re = null;
try {
Demo1 d = new Demo1();
// 2.加载驱动类
Class.forName(d.dirver);
// 4建立连接 返回值是:java.sql.connection
con = DriverManager.getConnection(d.url, d.user, d.passwd);
// 5.创建prepareStatement
prep = con.prepareStatement("select * from city");
// 6-1.查询
re = prep.executeQuery();
System.out.println(re.first());
System.out.println("id=" + re.getInt(1) + "-----------------------------");
System.out.println("Name=" + re.getString(2));
/**
在Statement对象中可以执行如下的操作:
A.查询操作:executeQuery(SQL语句)
B.维护操作:executeUpdate(SQL语句)
C.批处理操作:executeBath()
*/
} catch (Exception e) {
// ..............
} finally {
// 8.关闭连接
// 后开先关;若无关闭,则只能等到线程死亡才关闭
if (null != re) {
re.close();
}
if (null != prep) {
prep.close();
}
if (null != con) {
con.close();
}
}
}
}
四:对于JDBC数据库详解
4-1 执行查询或更新
在Statement对象中可以执行如下的操作:
A.查询操作:executeQuery(SQL语句)
B.维护操作:executeUpdate(SQL语句)
C.批处理操作:executeBath()
4-2 ResultSet【单一结果集】
ResultSet默认一开始是在beforeFirst ;我们可以通过next();向下移动;
next()返回boolean;若true,为存在。
确认了行后,确认列;列范围为1-N;
通过使用getXXX系列方法,获得相应的数据类型的数据。
getXXX()有两种参数:一种是通过索引,一种是通过列名。
ResultSet获取大数据
-
4-3: ResultSetMetaDate【元数据】
元数据:描述数据的数据
获取方式:
prepareStatement 的getMetaDate()方法
常用方法
4-4:多结果集
当有多个结果集的时候;
1、使用prepareStatement的execute方法执行sql语句;返回true为有结果集,false为没有;
2、获取结果集:prepareStatement的getResultSet方法
3、 重复调用getMoreResult方法。 true有结果集,false无结果集
五、批处理
jdbc批量操作三种方式
相关方法 addBatch() executeBatch()这两个方法
批量执行预定义模式的sql
批量执行预定义、还有静态的
执行静态的sql
六、关于statement和prepareStatement
prepareStatement好处如下
- 防止SQL攻击
- 提高可读性,可维护性
- 提高效率
七、JDBC事务
概念:将一组语句构成一个事务。当所有语句顺利执行后,事务可以被提交
作用:事务确保数据库的完整性
步骤:
A:默认情况下,数据库都是自动提交模式(一句话提交一次);通过connection的setAutoCommit(false)关闭自动提交。
B:通过prepareStatement多次调用执行后,
C:如果执行命令没有错误,则调用comit方法
D: 如果错误,调用rollback()方法回滚
模板:
try{
con.setAutoCommit(false);
con.commit;
}
catch{
con.rollback()
}
finally{
//关闭连接
}
八。数据库类型和JAVA类型对应
数据库类型 | Java类型 |
INTEGER | int or java.lang.Integer |
BIGINT | long or java.lang.Long |
SMALLINT | short or java.lang.Short |
FLOAT | float or java.lang.Float |
DOUBLE | double or java.lang.Double |
NUMERIC | java.math.BigDecimal |
CHAR | java.lang.String |
VARCHAR | java.lang.String |
TINYINT | byte or java.lang.Byte |
BIT | boolean or java.lang.Boolean |
DATE | java.util.Date or java.sql.Date |
TIME | java.util.Date or java.sql.Time |
TIMESTAMP | java.util.Date or java.sql.Timestamp |
TIMESTAMP | java.util.Calendar |
DATE | java.util.Calendar |
VARBINARY (or BLOB) | byte[] |
CLOB | java.lang.String |
VARBINARY (or BLOB) | any Java class that implements java.io.Serializable |
CLOB | java.sql.Clob |
BLOB | java.sql.Blob |
注意:
domain对象中,是不能出现java.sql下的东西【低耦合】
java.util.Date转java.sql.Date
package com.demo.demo.demo1;
public class City {
public static void main(String[] args) {
java.util.Date d=new java.util.Date();
Long l=d.getTime();
java.sql.Date dd=new java.sql.Date(l);
}
}