过年:书城中的细节记录

1、封装正则 返回布尔

public class BooksystemUtils {

    /**
     * 利用正则表达式 检查是否为合法昵称   6-12个字符
     * @param mininame
     * @return
     */
    public static boolean isMininame(String  mininame){
       return mininame.matches("^.{6,12}$");
    }
}

2、java中util.Date和数据库中datetime的操作:

需求:
User对象里面有java.util.Date的birthday,我们需要存的格式为2001-01-01 01:01:01,mysql数据库中是datetime,当我们需要存入数据库或从数据库中取出来时,有一些细节必须注意!因为直接将java.util.Date存入数据库是不行的!
为了测试,我还在表中加了一个time的字段,类型为varchar。

————————————存入数据库:

加入我们直接将birthday存入数据库:ps.setDate((java.sql.Date)user.getBirthday()),这样会出错,因为类型的差异,强转会报错!

方式一:(推荐)
    所有我们需要使用到java.sql.Timestamp这个类来进行转换:
        Timestamp t = new Timestamp(user.getBirthay().getTime());
        ps.setTimestamp(3, t);//此处birthday在sql语句中的第3个? 所以写3

    这样就可以直接存入数据库!

方式二:
    我们直接将birthday转换成特定格式的字符串String,存入数据库,这样也可以!:
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String birthday = df.format(user.getBirthay());
         ps.setString(3, birthday);//这样和下面这样都可以!
         ps.setObject(3, birthday);


   这样转换成字符串存进数据库没问题,数据库的datetime接受特定格式的字符串,这样存进数据库还是datetime类型的值!

—————————————————从数据库中取出:

    取出来的时候就很简单了,因为java.sql.Timestamp是继承了java.util.Date,所有直接将取出来的值赋给birthdat就行了!
    Timestamp t = rs.getTimestamp("birthday");
    user.setBirthay(t);

日期比较问题:

  为了测试日期比较,排序,特意增加了一个字段time,time是varchar类型的,存的都是特定格式的日期字符串(注意是字符串),

当测试排序时,不管是tetime类型的birthday,还是varchar类型的time,都能比较和排序!

----------------------------而项目中是获取当前时间,可以直接获取时就是这样的数据类型:然后直接存入给数据库的date型

  Timestamp d = new Timestamp(System.currentTimeMillis());

3、 用完全未封装的原版jdbc存入并查询 :
3.1、我的存入单条数据 练习:【其中还书时间属性 未赋值存入】

public class RecordDaoImpl implements IRecordDao {

    /**
     * 1.四个定量提到最上面声明赋值
     * 2.注册驱动
     * 3.用DriverManager获取连接
     * 4.用连接获取预处理对象ps 同时传参sql句
     * 5.对ps中sql句的?挨个赋值
     * 6.执行ps
     * 7.关流 
     */
    private static final String DRIVER="com.mysql.jdbc.Driver";
    private static final String IP="jdbc:mysql://localhost:3306/eesy?useUnicode=true&characterEncoding=utf8&useSSL=false";
    private static final String USER="root";
    private static final String PASSWORD="007";

    @Override
    public void saveRecord(Record record) throws Exception {
        Class.forName(DRIVER);
        
        Connection conn = DriverManager.getConnection(IP, USER, PASSWORD);
        Timestamp outtime = new Timestamp(System.currentTimeMillis());
       
        PreparedStatement ps = conn.prepareStatement("insert into record(bname,uname,outtime,state) values(?,?,?,?)");
      
        ps.setObject(1,record.getBname());
        ps.setObject(2,record.getUname());
        ps.setObject(3,record.getOuttime());
        ps.setObject(4,record.getState());
     
        ps.executeUpdate();
        
        ps.close();
        conn.close();

    }
}

3.2、下面是2个例子: 存入 、查询

package com.test.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;

public class Connect {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String IP = "jdbc:mysql://127.0.0.1:3306/msdn";
private static final String user = "root";
private static final String password = "";

public static void main(String args[]) throws Exception {

  Connection conn = null;
  PreparedStatement pstmt = null;
  Timestamp d = new Timestamp(System.currentTimeMillis());
  String sql = "insert into user(name,password,age,sex,birthday) values(?,?,?,?,?) ";

  Class.forName(DRIVER);
  conn = DriverManager.getConnection(IP, user, password);
  pstmt = conn.prepareStatement(sql);
  pstmt.setString(1, "zl");
  pstmt.setString(2, "123456");
  pstmt.setInt(3, 24);
  pstmt.setString(4, "man");
  pstmt.setTimestamp(5, d);

  pstmt.executeUpdate();
  pstmt.close();
  conn.close();

}
}

package com.test.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.*;

public class Find {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String IP = "jdbc:mysql://127.0.0.1:3306/msdn";
private static final String user = "root";
private static final String password = "";

public static void main(String args[]) throws Exception {
  Connection conn = null;
  PreparedStatement pstmt = null;
  Timestamp d = new Timestamp(System.currentTimeMillis());
  ResultSet rs = null;
  String sql = "select * from user";
  Class.forName(DRIVER);
  conn = DriverManager.getConnection(IP, user, password);
  pstmt = conn.prepareStatement(sql);
  rs = pstmt.executeQuery();
  while (rs.next()) {
   java.sql.Timestamp d1 = rs.getTimestamp(6);
   System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
     .format(d1));
  }
  pstmt.close();
  conn.close();
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值