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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我被财产保全了怎么办 孕妇血糖高怎么办降下来吗 血糖不高尿糖高怎么办 全血粘度1 5偏高怎么办 血粘度低切偏低怎么办 书侧面上弄上油怎么办 肌注部位打偏了怎么办 吃头孢克圬过敏怎么办 孕妇让蚊子咬了怎么办 怀孕了被蚊子咬了怎么办 夏天被蚊子咬了该怎么办 尿酸高怎么办有什么危害 RH阴性血生二胎怎么办 柴油箱里加了水怎么办 五菱之光烧机油怎么办 软轴水泵不出水怎么办 小车柴油冻住了怎么办 皮卡柴油车冻了怎么办 发现4柴油车冻了怎么办 装载机暖风不热怎么办 柴机油加汽机车怎么办 货车故障灯亮了怎么办 上高速etc故障了怎么办 etc卡上高速失灵怎么办 etc被前车刷了怎么办 车辆首保过期了怎么办 4s店首保过期了怎么办 首保过了时间怎么办 etc电池没电了怎么办 新装的etc不能用怎么办 货车尿素不烧了怎么办 车用尿素冻了怎么办 车子老了漏机油怎么办 房屋30年到期后怎么办 房产40年到期后怎么办 汽油泵坏在路上怎么办 手油泵泵不上油怎么办 汽车刹车线断了怎么办 汽油弄到皮肤上怎么办 汽油闻多了头痛怎么办 新车误加燃油宝怎么办