Java Web笔记(五)
来源:互联网 发布:u盘怎么数据恢复 编辑:程序博客网 时间:2024/05/17 17:55
JDBC
Oracle驱动包
可以从Oracle安装路径下获取。
获取路径:D:\Oracle\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar
Java连接数据库过程
过程
1、加载驱动 ->对一个类(oracle.jdbc.driver.OracleDriver)进行类加载,获取类对象
Class.forName("oracle.jdbc.driver.OracleDriver");
2、获取数据库连接
url组成 : jdbc:oracle:thin:@ip:1521:xe/orcl
DriverManager.getConnection(url , 数据库用户名, 数据库密码);
3、编写SQL语句 :例如select * from t_user ;
4、创建一个SQL执行器
// 创建SQL执行器
Statement statement = conn.createStatement() ;
或者
// 创建SQL预编译执行器
5、执行SQL语句,并返回结果集
ResultSet rs = statement.executeQuery(sql);
6、遍历结果集
while(rs.next()) {
//获取结果集
rs.getXXX("字段");
}
7、关闭资源
代码示例:
try {// 1. 加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2. 获取数据库连接String url = "jdbc:oracle:thin:@localhost:1521:XE";Connection conn = DriverManager.getConnection(url, "shop", "shop");// 3. 编写SQL语句String sql = "select * from t_user";// 4. 创建一个SQL执行器Statement stat = conn.createStatement();// 5. 执行SQL语句,并返回结果集ResultSet rs = stat.executeQuery(sql);// 6. 遍历结果集while(rs.next()) {// 7. 获取记录内容int id = rs.getInt("ID");String name = rs.getString("NAME");String password = rs.getString("PASSWORD");System.out.println("id:" + id + ", name:" + name + ",password:" + password);}// 8. 关闭资源if(rs != null) {rs.close();rs = null;}if(stat != null) {stat.close();stat = null;}if(conn != null) {conn.close();conn = null;}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}
调用存储过程
public UserInfo cunQian(Integer id, double money) throws Exception {// 连接数据库Connection conn = DBUtil.getConnection();// 创建存储过程预编译执行器CallableStatement cs = conn.prepareCall("{call cunqian(?, ?, ?)}");// 设置输入参数cs.setInt(1, id);// 设置输出参数的处理cs.registerOutParameter(2, Types.VARCHAR); // 第2个参数是数据类型// 设置输入输出参数的处理; 对输入输出的参数模式,先设值再注册数据类型cs.setDouble(3, money);cs.registerOutParameter(3, Types.DOUBLE);// 执行存储过程boolean b = cs.execute(); // 如果有结果集返回true, 否则返回false// 获取存储过程的执行结果String email = cs.getString(2);Double m = cs.getDouble(3);UserInfo userInfo = new UserInfo();userInfo.setEmail(email);userInfo.setMoney(m);DBUtil.close(null, cs, conn);return userInfo;}
调用函数
public Double zhuanZhang(Integer id, Integer toId, double money)throws Exception {// 连接数据库Connection conn = DBUtil.getConnection();// 创建预编译执行器CallableStatement cs = conn.prepareCall("{? = call zhuanzhang(?, ?, ?)}");// 设置输入参数cs.registerOutParameter(1, Types.DOUBLE);cs.setInt(2, id);cs.setInt(3, toId);// 设置输入输出参数的处理; 对输入输出的参数模式,先设值再注册数据类型cs.setDouble(4, money);cs.registerOutParameter(4, Types.DOUBLE);// 执行函数boolean b = cs.execute(); // 如果有结果集返回true, 否则返回false// 获取存储过程的执行结果Double m = cs.getDouble(1);DBUtil.close(null, cs, conn);return m;}
将图片保存到数据库
数据库表中图片字段的数据类型:blob
Java实体中图片变量的数据类型:byte[]
示例:
测试用例:
public static void testSaveImg() throws Exception {UserInfo userInfo = new UserInfo();userInfo.setId(3);userInfo.setTel("55555555");userInfo.setEmail("lisi@qq.com");userInfo.setIdCard("266-18");userInfo.setUserId(1);userInfo.setMoney(2000.2);// 将图片转成字节数组File file = new File("C:\\Users\\Administrator\\Desktop\\作业.bmp");ByteArrayOutputStream bos = new ByteArrayOutputStream();FileInputStream fis = new FileInputStream(file);byte[] buf = new byte[1024];int len = -1;while((len = fis.read(buf)) != -1) {bos.write(buf, 0, len);}userInfo.setImg(bos.toByteArray()); // 获取图片的字节数组int n = dao.saveImg(userInfo);System.out.println(n);}
数据库操作:
public int saveImg(UserInfo userInfo) throws Exception {// 连接数据库Connection conn = DBUtil.getConnection();// 拼接SQL语句String sql = "insert into t_user_info(id, tel, email, idcard, userId, money, img) values(?, ?, ?, ?, ?, ?, ?)";// 创建SQL预编译执行器PreparedStatement pstat = conn.prepareStatement(sql);// 设置值pstat.setInt(1, userInfo.getId());pstat.setString(2, userInfo.getTel());pstat.setString(3, userInfo.getEmail());pstat.setString(4, userInfo.getIdCard());pstat.setInt(5, userInfo.getUserId());pstat.setDouble(6, userInfo.getMoney());pstat.setBytes(7, userInfo.getImg());// 执行SQL语句,并返回结果int executeUpdate = pstat.executeUpdate();// 关闭资源DBUtil.close(null, pstat, conn);return executeUpdate;}
事务
Connection conn = DBUtils.getConnection(); // 获取数据库连接
conn.setAutoCommit(false); // 开启事务
代码...
conn.commit(); // 提交事务
conn.rollback(); // 回滚事务
- Java Web笔记(五)
- Java Web学习笔记(五)filter
- Java Web学习笔记(五)
- JAVA笔记(五)
- java笔记(五)
- java笔记(五)
- java 笔记(五)
- java Web学习(五)
- 《WEB应用测试》笔记(五)
- java学习笔记(五)
- java学习笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- Java学习笔记(五)
- JAVA学习笔记(五)
- Java基础 笔记(五)
- JAVA 笔记-JDBC(五)
- 基于centos7.2最小化环境, cdh manager 及 cdh 集群的部署过程常见问题整理
- C#进阶4_文件夹类、文件类
- POj 2387 Til the Cows Come Home
- 有没有想过 你的数据分析方法可能已经过时?
- Win32,Draw
- Java Web笔记(五)
- 【广告算法工程师入门 27】机制设计-考虑用户体验的机制设计方法与实践
- caffe模型训练小技巧
- Noip 2008 传纸条
- 11
- 指针定义
- Java基础知识总结 1(绝对经典)
- Oracle 部署 Statspack
- 周一了,博客项目开更