此处输入的数据:
         <p align="center">图书编号:<input type="text" name="name1" size="20">&nbsp;&nbsp;&nbsp;&nbsp;
<p align="center">图书名称:<input type="text" name="name2" size="20">&nbsp;&nbsp;&nbsp;&nbsp;
<p align="center">&nbsp;&nbsp;出版社:<input type="text" name="name3" size="20">&nbsp;&nbsp;&nbsp;&nbsp;
<p align="center">&nbsp;&nbsp;&nbsp;&nbsp;版本:<input type="text" name="name4" size="20">&nbsp;&nbsp;&nbsp;&nbsp;
<p align="center">图书分类:<input type="text" name="name5" size="20">&nbsp;&nbsp;&nbsp;&nbsp;
         <p align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="添加">此处获得数据:
<% 
  request.setCharacterEncoding("GB2312");
  String bookno=request.getParameter("name1");
  String bname=request.getParameter("name2");
  String publisher=request.getParameter("name3");
  String edition=request.getParameter("name4");
  String bclass=request.getParameter("name5");
   java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("dd-M月-yy");
   java.util.Date Now=new java.util.Date();
   String time=formatter.format(Now);
   out.println("time="+time);  此处获得了系统当前的日期 ,而且是Oracle数据库的dd-M月-yy链接数据库后更新:
 try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String hostIp = "localhost";// 你的服务器ip
String ORACLE_SID = "orcl";// 你的oracleSid
String user = "book";// 你的用户名
String pw = "book";// 你的密码
String url = "jdbc:oracle:thin:@" + hostIp + ":1521:" + ORACLE_SID;
Connection conn = DriverManager.getConnection(url, user, pw);
            PreparedStatement stat=conn.prepareStatement("INSERT INTO book VALUES(?,?,?,?,?,?)");
stat.setString(1,bookno);
                            stat.setString(2,bname);
                            stat.setString(3,publisher);
stat.setString(4,edition);
stat.setString(5,bclass);
stat.setString(6,time);
            stat.executeUpdate();
            out.println("<br><br><B>图书添加成功!</B>");
conn.close();
stat.close();
} catch (Exception e) {
out.println(e);
}
%>
总是不能往数据库里插入数据,是不是字符型往日期型插的问题?那么应该怎么转换,在什么地方转换呢?

解决方案 »

  1.   

    数据库是字符型你就得插入字符型
    数据库是日期类型就插入日期类型
    不能乱插!
    stat.setDate(6,Now);
      

  2.   

    stat.setString(6,time);
    改为setDate()
      

  3.   

    日期to_date(time,'YYYY-MM-DD')试试
      

  4.   

    2楼的提示
    An error occurred at line: 66 in the jsp file: /admin2_book_insert.jsp
    The method setDate(int, Date) in the type PreparedStatement is not applicable for the arguments (int, String)
    63:             stat.setString(3,publisher);
    64:  stat.setString(4,edition);
    65:  stat.setString(5,bclass);
    66:  stat.setDate(6,time);
    67:             stat.executeUpdate();
    68:             out.println("<br><br><B>图书添加成功!</B>");
    69:  conn.close();
      

  5.   

    1楼的提示:
    An error occurred at line: 66 in the jsp file: /admin2_book_insert.jsp
    The method setDate(int, Date) in the type PreparedStatement is not applicable for the arguments (int, Date)
    63:             stat.setString(3,publisher);
    64:  stat.setString(4,edition);
    65:  stat.setString(5,bclass);
    66:  stat.setDate(6,Now);
    67:             stat.executeUpdate();
    68:             out.println("<br><br><B>图书添加成功!</B>");
    69:  conn.close();
      

  6.   

    1楼是正解,楼主你这个错误
    The method setDate(int, Date) in the type PreparedStatement is not applicable for the arguments (int, Date)是因为你使用了java.util.Date类型来作为参数,应该使用java.sql.Date类型