小问题求解:DAO里Java如何把时间中的时分秒值写入oracle数据库?

第一种写法:ps.setDate(5, new java.sql.Date(cdto.getCreatetime().getTime()));
但是保存到数据库就没有时分秒了(你去获取也都是默认的12:00:00)

第二种写法我这样写的:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String s = sdf.format(cdto.getCreatetime());
现在的问题是怎么把s的值传入数据库呢。ps.setDate()里面怎么写呢?
这样写可以不:ps.setString(5, "to_date('"+cdto.getCreatetime()+"','yyyy-mm-dd hh:mi:ss')");

如果你 Java 里面,是通过
INSERT INTO 语句来插入 Oracle 的话。

INSERT INTO 表 (日期字段) VALUES ( TO_DATE( 参数名字, 'YYYY-MM-DD HH24:MI:SS' ) )

ps 就直接 SetString() 就可以了。

---
上面那个 SQL ,不修改你的表结构啊
就是你传入的 参数,是个 字符类型的

让 Oracle 把 '2010-10-28 12:30:00' 这样格式的字符串
格式化成 日期格式, 然后 写到数据库表里面。
写进去的, 还是日期的格式。

TO_DATE 函数的目的,就是把 一个 字符串类型, 转换为 日期类型
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-29
import java.util.Calendar;

public class Times {
public static String getNow(){
Calendar c=Calendar.getInstance();
StringBuffer sb=new StringBuffer();
sb.append(c.get(Calendar.YEAR));
int month=c.get(Calendar.MONTH)+1;
if(month<10){
sb.append("0");
}
sb.append(month);
int day=c.get(Calendar.DAY_OF_MONTH);
if(day<10){
sb.append("0");
}
sb.append(day);
int hour=c.get(Calendar.HOUR_OF_DAY);
if(hour<10){
sb.append("0");
}
sb.append(hour);
int min=c.get(Calendar.MINUTE);
if(min<10){
sb.append("0");
}
sb.append(min);
int sec=c.get(Calendar.SECOND);
if(sec<10){
sb.append("0");
}
sb.append(sec);

return sb.toString();
}

public static void main(String[] args) {
System.out.println(Times.getNow());

}
}

用这个类得到的时间 你插入数据库
第2个回答  2010-10-28
都是通过java类执行数据库sql语句插入数据库中的。
你这个ps是啥对象,我不知道。

正常情况下,java连接数据库都是用jdbc。

不知道是不是你想要的答案。

例子如下:
连接数据库的类:
package com.web.action;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class DBConn extends HibernateDaoSupport{

Connection con = null;
Statement st=null; //SQL语句对象st
ResultSet rs=null; //结果集对象rs

public DBConn() throws ClassNotFoundException, SQLException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection("jdbc:sqlserver://192.168.0.172:1433;databaseName=PROLIB","developer","123456");
}
//executeQuery方法用于执行select * from ..的查询语句,返回查询的记录集
public ResultSet executeQuery(String strsql)
{
try
{
// 用户连接对象con创建一个语句对象
st=con.createStatement();
//再用语句对象st执行executeQuery方法获得一个记录集给rs对象
rs=st.executeQuery(strsql);
}
catch(Exception e)
{
e.printStackTrace();
}

return rs;
}
//executeUpdate方法用于执行insert/update/delete的语句
public boolean execute(String strsql)
{
boolean success=false;
try
{
// 用户连接对象con创建一个语句对象
st=con.createStatement();
//再用语句对象st执行executeUpdate方法执行SQL语句
st.execute(strsql);
success=true;
}
catch(Exception e)
{
e.printStackTrace();
}
return success;
}

}

测试类:
public class ProjectCompanyInfo {

/**
* @author
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
DBConn db=new DBConn();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String s = sdf.format(cdto.getCreatetime());
boolean flag=db.execute("insert into tableName(name,avg,brithDate) values('百度','20','"+s+"')");
if(flag==true)
System.out.println("插入数据库成功!");
else
System.out.println("插入数据库失败!");

}catch(Exception e)
{
e.printStackTrace();
}
}

}
第3个回答  2010-10-28
用timestamp
第4个回答  2010-10-28
把你的ps.setDate改成:
ps.setTimestamp(5, new Timestamp(new Date().getTime()));
相似回答