最近做项目需要采集某些数据然后保存在数据库中,保存时要求带上采集时间,但是本人是初学Mysql和Java没多久,坦白点说是不知怎么写,搜索一下发现没啥资源,后来硬下头皮把Mysql的API文档看了一下,终于找到了思路,以下给出详细思路及代码。
首先,面向对象编程就要求写程序时要知道找哪个对象,操作数据库那就看看Java的API文档有没有与sql有关的类,当然肯定有,在java.sql包里有一个statement接口,该接口里的定义了许多方法,其中:
int executeUpdate(String sql):执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
这个方法就可以执行Mysql语句。
那么,怎么获得当前时间呢?查了一下,发现java.util.Date为java.sql.Date的父类,所以在Java中创建的java.util.Date不能直接通过JDBC操作,插入到数据库中,需要一些转换步骤,具体怎么实现大家去搜吧,我不用这个方法。我查看了Mysql的参考手册,找到“日期和时间类型”里的“DATETIME、DATE和TIMESTAMP类型”,阅读说明,总算找到了思路,至于文档大家可以去下载来看。
现在就给大家Java的代码吧。
package cn.scau.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MysqlAddDate {
/* 需预先在Mysql里新建一个名为MysqlDate的数据库
* @author harchi
* 华南农业大学 电子信息工程
*/
public static void main(String[] args) throws SQLException {
Connection connection = null;
String sql;
//设置连接Mysql数据库的的参数,运行程序前需检查用户名与密码是否正确,以及数据库名称是否对应
String url = "jdbc:mysql://localhost:3306/MysqlDate?"
+ "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";
try {
//加载驱动
new com.mysql.jdbc.Driver();
System.out.println("Success in loading Mysql driver!");
//连接数据库
connection = DriverManager.getConnection(url);
Statement statement = connection.createStatement();
//创建名为showtime,含有NO与nowtime属性的数据表的sql语句
sql="CREATE TABLE showtime(NO INT(20),nowtime DATETIME,PRIMARY KEY(NO))";
int result = statement.executeUpdate(sql);
if (result!=-1) {
System.out.println("Success in creating table!");
//插入第一个数据,使用Mysql语句的NOW()获得当前时间
sql = "INSERT INTO showtime(NO,nowtime) VALUES(1,NOW())";
result = statement.executeUpdate(sql);
//延时3秒,插入第二个数据
Thread.sleep(3000);
sql = "INSERT INTO showtime(NO,nowtime) VALUES(2,NOW())";
result = statement.executeUpdate(sql);
//查询数据并显示
sql = "SELECT * FROM showtime;";
ResultSet resultset = statement.executeQuery(sql);
System.out.println("NO\t\ttime");
while (resultset.next()) {
System.out.println(resultset.getInt(1)+"\t"+resultset.getString(2));
}
}
}catch (SQLException e) {
System.out.println("Unsuccess to handle Mysql!");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
connection.close();
}
}
}