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语句内

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?