import java.sql.*;
class test
{
public static void main(String[] args) throws Exception
{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn=DriverManager.getConnection("jdbc:odbc:stu");
    System.out.println("已经连接到数据库");     String sql="insert into students values(?,?,?,?,?,?)";
    PreparedStatement pst=conn.prepareStatement(sql);
    pst.setInt(1,1019);
    pst.setString(2,"孙杰");
    pst.setString(3,"男");
    pst.setInt(4,25);
    pst.setString(5,"苏州市");
    pst.setDate(6,Date.valueOf("2005-1-1"));//有问题
   
    pst.executeUpdate();
    System.out.println("已经添加了一条记录!");
    pst.close();
    conn.close();
}
请问如何将日期数据类型写入数据库?

解决方案 »

  1.   

    好像应该写成
    pst.setDate(6,Date.valueOf("2005-01-01"));//
    注意是01-01, 必须是yyyy-mm-dd格式
      

  2.   

    注意是01-01, 必须是yyyy-mm-dd格式.不是这问题.01和1都可以;
      

  3.   

    Date.valueOf(String str) 有这个静态函数嘛?
    还是你自己写的这个函数呢?
      

  4.   

    Date.valueOf(String str); 是API函数啊
    up!!!怎么还没人帮我解决啊???
      

  5.   

    不错,这样用valueOf是没有问题的。报什么异常?贴出来看看。
      

  6.   

    已经连接到数据库
    Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC SQL Server Dr
    iver]没有执行可选特性
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
            at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
            at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterDate(JdbcOdbc.java:809)
            at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setDate(JdbcOdbcPreparedState
    ment.java:824)
            at test.main(URL_test.java:17)
    Press any key to continue...
      

  7.   

    SQL里第6字段是datetime,不知道为什么错
      

  8.   

    如果是datetime类型的,那就试试java.sql.Timestamp。java.sql.Date只有日期,没有时间。
      

  9.   

    datetime也可以有日期没时间啊!!!
    如果我提取日期值,就能提取成功啊
      

  10.   

    终于搞顶!!呵呵谢谢大家!!!
    Timestamp可以了!!!