qq_31626965 2016-09-22 13:37 采纳率: 0%
浏览 1713

关于java中preparedStatement的一个小问题(很简单!跪求!)

goods表字段为number(文本,主键) name(文本) madeTime(日期) price(数字,双精度)

AddRecord.java

 import java.sql.*;
public class AddRecord {
   String databaseName="";          //数据库名
   String tableName="";                 //表名
   String number="",                //商品号 
          name="",                  //名称
          madeTime;                 //生产日期
   double price;                        //价格
   public AddRecord() {
      try{ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      }
      catch(ClassNotFoundException e) {
         System.out.print(e);
      } 
    }
   public void setDatabaseName(String s) {
      databaseName=s.trim();
   }
   public void setTableName(String s) {
      tableName=s.trim();
   }
    public void setNumber(String s) {
       number=s.trim();
    }
    public void setName(String s) {
       name=s.trim();
    }
    public void setPrice(double n) {
       price=n;
    }
    public void setMadeTime(String b) {
        madeTime=b;
    }
    public String addRecord() {
       String str="";
       Connection con;
       PreparedStatement sql;   //预处理语句
       try { String uri="jdbc:derby:"+databaseName+";create=true"; 
             con=DriverManager.getConnection(uri);
             String insertCondition="INSERT INTO "+tableName+" VALUES (?,?,?,?)";
             sql=con.prepareStatement(insertCondition);
             if(number.length()>0) {
               sql.setString(1,number);
               sql.setString(2,name);
               sql.setString(3,madeTime);
               sql.setDouble(4,price);
               int m=sql.executeUpdate();
               if(m!=0) 
                   str="对表中添加"+m+"条记录成功";
               else 
                  str="添加记录失败";
            }
            else {
               str="必须要有雇员号";
            }
            con.close();
       }
       catch(SQLException e) { 
            str="没有提供添加的数据或"+e;
       }
       return str;
    }
}  

Test.java

 public class Example11_10 {
   public static void main(String args[]) {
     AddRecord insertRecord=new AddRecord();
     String database="shop";
     String tableName="goods";
     insertRecord.setDatabaseName(database);
     insertRecord.setTableName(tableName);
     insertRecord.setNumber("D001");
     insertRecord.setName("联想电脑");
     insertRecord.setMadeTime("2015-12-10");
     insertRecord.setPrice(5600);
     String backMess=insertRecord.addRecord();
     System.out.println(backMess);
   }
}

为什么prepareStatement方法中insert语句的in参数,在set第三个日期时是setString而不是setDate,我知道madeTime定义是String类型,但是为什么可以用setString来对应日期类型字段?

  • 写回答

5条回答 默认 最新

  • 北顾.岛城 2016-09-22 14:22
    关注

    会自动转换的,在sql语句内

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名