javaBean方式将不含时分秒的日期格式插入oracle数据库
来源:互联网 发布:mysql保存特殊字符 编辑:程序博客网 时间:2024/04/28 14:06
首先先创建数据库表:(这里分为两个字段,字段分别是userName和regDate,用于观察注册人还有时间)
create table emp(userName varchar2(20),regDate Date);
第二步:
创建javaBean类,这里Bean名可以随便起。(其实javaBean就是一个类,面像对像过程的优点),
代码如下:
package entity;public class Emp { private String userName; private String regDate; //Setter和Getter方法public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getRegDate() {return regDate;}public void setRegDate(String regDate) {this.regDate = regDate;}}第三步,创建数据库操作基类:
package dao.impl;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class BaseDao {protected Connection connect = null;// 可用连接// 驱动类private static final String driver = "oracle.jdbc.driver.OracleDriver";// 连接服务器字符串private static final String url = "jdbc:oracle:thin:@localhost:1521:aq";// 用户名private static final String username = "ynr";// 密码private static final String password = "123456";protected PreparedStatement pstmt = null;protected ResultSet rs = null;/** * 获取可用连接 * * @return * @throws ClassNotFoundException * @throws * @throws Exception */public boolean getConnection() {try {Class.forName(driver);connect = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;}return true;}/** * 关闭可用连接 * * @throws Exception */public boolean closeAll() {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();return false;}}// 关闭Statementif (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();return false;}}// 关闭连接if (connect != null) {try {connect.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}}return true;}/** * 增,删,改 */public int Update(String sql, Object[] params) {int result = 0;//清空数据,防止SQL注入式攻击pstmt = null;connect = null;rs= null; try {getConnection();pstmt = connect.prepareStatement(sql);// 填充的参数方式1 // int index=1;// if (params !=null) {// for (Object object : params) {// pstmt.setObject(index++, object);// }// }// 填充的参数方式2if (params != null) {for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}}result = pstmt.executeUpdate();} catch (SQLException e) {System.out.println("executeUpdate" + e.getMessage());e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {closeAll();} catch (Exception e) {System.out.println("执行增,删,改关闭连接时产生异常" + e.getMessage());e.printStackTrace();}}return result;}/** * 查询 */public ResultSet Query(String sql, Object[] params) {//清空数据,防止SQL注入式攻击pstmt = null;connect = null;rs= null; try {getConnection();pstmt = connect.prepareStatement(sql);int index = 1;for (Object object : params) {pstmt.setObject(index++, object);}rs = pstmt.executeQuery();} catch (SQLException e) {System.out.println("executeQuery" + e.getMessage());e.printStackTrace();} catch (Exception e) {e.printStackTrace();}//finally {//try {//closeAll();//} catch (Exception e) {//System.out.println("执行查询关闭连接时产生异常" + e.getMessage());//e.printStackTrace();//}// }return rs;}}
第四步:
为了减少开发的藕合,也就是减少和与合作的的人员的命名冲突,这里用接口来,接口一般在其名称加上一个" I “(interface的首字母I):
代码如下:
package dao;import java.util.List;import entity.Emp;public interface RegDao { boolean add(Emp date); //插入信息 List<Emp> getEmpsList(); //查询信息}
第五步:
编写实现类(两种方式:)
第一种:
package dao.impl;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Date;import java.util.List;import dao.RegDao;import entity.Emp;public class RegDaoImpl extends BaseDao implements RegDao {@Overridepublic boolean add(Emp date) {String sql = "insert into emp(userName,regDate)values(?,to_date(?,'yyyy-mm-dd hh24:mi:ss'))";int i = 0;Object[] params = {date.getUserName(),date.getRegDate()};i = this.Update(sql, params);return false;}@Overridepublic List<Emp> getEmpsList() {String sql = "select UserName,RegDate from emp";Object[] params ={};List<Emp> empList = new ArrayList<Emp>();ResultSet rs = this.Query(sql, params);try {while (rs.next()) {Emp emp = new Emp();emp.setUserName(rs.getString("UserName"));emp.setRegDate(rs.getString("RegDate"));;empList.add(emp);}} catch (SQLException e) {e.printStackTrace();}return empList;}public static void main(String[] args) {RegDaoImpl daoImpl = new RegDaoImpl();Date date = new Date();Emp emp = new Emp();emp.setUserName("www");emp.setRegDate(date.toLocaleString());daoImpl.add(emp);List<Emp> List = daoImpl.getEmpsList();for (Emp emp2 : List) {System.out.println(emp2.getUserName()+"\t" + emp2.getRegDate());}}}可以发现,这种方法是上一篇文章说的有精确时间的方式。
第二种方法:
package dao.impl;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import dao.RegDao;import entity.Emp;public class RegDaoImpl extends BaseDao implements RegDao {@Overridepublic boolean add(Emp date) {String sql = "insert into emp(userName,regDate)values(?,to_date(?,'yyyy-mm-dd '))";//注意看一下这里①int i = 0;Object[] params = {date.getUserName(),date.getRegDate()};i = this.Update(sql, params);return false;}@Overridepublic List<Emp> getEmpsList() {String sql = "select UserName,RegDate from emp";Object[] params ={};List<Emp> empList = new ArrayList<Emp>();ResultSet rs = this.Query(sql, params);try {while (rs.next()) {Emp emp = new Emp();emp.setUserName(rs.getString("UserName"));emp.setRegDate(rs.getString("RegDate"));;empList.add(emp);}} catch (SQLException e) {e.printStackTrace();}return empList;}public static void main(String[] args) {RegDaoImpl daoImpl = new RegDaoImpl();Date date = new Date();Emp emp = new Emp();emp.setUserName("www");SimpleDateFormat fomat = new SimpleDateFormat("yyyy-MM-dd"); //注意看这里②emp.setRegDate(fomat.format(date));daoImpl.add(emp);List<Emp> List = daoImpl.getEmpsList();for (Emp emp2 : List) {System.out.println(emp2.getUserName()+"\t" + emp2.getRegDate());}}}
注:①和②的小细节,这里它是不带时分秒的,
带时分秒的代码如下:
package dao.impl;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import dao.RegDao;import entity.Emp;public class RegDaoImpl extends BaseDao implements RegDao {@Overridepublic boolean add(Emp date) {String sql = "insert into emp(userName,regDate)values(?,to_date(?,'yyyy-mm-dd hh-mm-ss'))";//①注意!!!int i = 0;Object[] params = {date.getUserName(),date.getRegDate()};i = this.Update(sql, params);return false;}@Overridepublic List<Emp> getEmpsList() {String sql = "select UserName,RegDate from emp";Object[] params ={};List<Emp> empList = new ArrayList<Emp>();ResultSet rs = this.Query(sql, params);try {while (rs.next()) {Emp emp = new Emp();emp.setUserName(rs.getString("UserName"));emp.setRegDate(rs.getString("RegDate"));;empList.add(emp);}} catch (SQLException e) {e.printStackTrace();}return empList;}public static void main(String[] args) {RegDaoImpl daoImpl = new RegDaoImpl();Date date = new Date();Emp emp = new Emp();emp.setUserName("www");SimpleDateFormat fomat = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss"); <span style="font-family: Arial, Helvetica, sans-serif;">//②注意!!!</span>emp.setRegDate(fomat.format(date));daoImpl.add(emp);List<Emp> List = daoImpl.getEmpsList();for (Emp emp2 : List) {System.out.println(emp2.getUserName()+"\t" + emp2.getRegDate());}}}
带时分秒的时候它提示这样的一个错误:
java.sql.SQLException: ORA-01810: 格式代码出现两次,其中②hh-mm-ss这个不要,或者①这里不要,它都会出现相应的错误哦
第二种方法执行之后,得到的数据都是时分秒都为0的
0 0
- javaBean方式将不含时分秒的日期格式插入oracle数据库
- javaBean方式将含时分秒的日期格式插入oracle数据库(方式1)
- javaBean方式将含时分秒的日期格式插入oracle数据库(方式2)
- Oracle 查找日期显示时分秒的方式
- Hibernate 保存带有时分秒的Oracle 数据库日期类型
- Oracle数据库中插入日期,日期带有时分秒(java.util.Date类型)
- 最简单的Js时间格式验证,含时分秒!
- Oracle 查询日期显示年月日时分秒格式
- 关于向Mysql数据库中插入时间只有日期没有时分秒的问题
- Oracle数据库,将日期更新为另一日期字段的年月日,不改时分秒
- 关于Oracle数据库不带日期中时分秒的查询
- 关于Oracle数据库不带日期中时分秒的查询
- oracle计算两个日期的时间差时分秒
- oracle计算两个日期的时间差时分秒
- 日期年月日时分秒万能格式转化
- 日期写入数据库没有时分秒的解决方案
- SimpleDateFormat的时分秒格式
- 数据库中如何去掉时分秒的时间格式
- 自家电脑搭建服务器可能遇到的问题及解决方法
- Linux文件共享(四)——父进程与子进程之间的文件共享
- 游标的灵活运用
- Java 返回文件名字,不加后缀
- js 判断页面是第一次加载
- javaBean方式将不含时分秒的日期格式插入oracle数据库
- 《古剑奇谭》席卷暑期档 张檬挑战霸气御姐
- android apk安装
- 在工作使有效的沟通生产力推进人际沟通
- Cocos2d-x中Lua与C++通信
- Linux - vsFTPd 服务器的安装与配置
- linux查看系统负载
- NSJSONSerializationd的使用
- Learning Mid-level Filters for Person Re-identification