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(); // 回滚事务

原创粉丝点击