需求是这样的String sql = "insert into user_yyyy_ww(id,name) values(?,?)";使用preparestatement设置值是没有问题的但是我想把sql= "insert into user_?_?(id,name) values(?,?)";使用preparestatement设置stmt.setInt(1,2012);
stmt.setInt(2,8) 但是我table名是 user_2012_08 ,所以没办法设置值

解决方案 »

  1.   

    简单一点儿就是你这个需求不能用prepare statement来实现。可以先处理一下sql。不过说实在的,我没太看明白你到底想要干什么。
      

  2.   

    是的,没有办法 user_yyyy_ww (user_2012_01,user_2012_02,....user_2012_11,user_2012_12)的格式
      

  3.   

    把你下面两个语句中的2012和8另外取出来存着:
    int year = 2012,month = 8;
    stmt.setInt(1,2012);
    stmt.setInt(2,8)  
    然后重新组织sql语句:
    String sql= "insert into user_"+year+"_"+month+"(id,name) values(?,?)";
    然后再:stmt.setInt(1,year);
    stmt.setInt(2,month);
      

  4.   

    每个表是 一年中一个week的数据
      

  5.   

    需求我有一批User数据,但是每个user数据是需要插入到某个week表中的(根据注册时间)因为每个表单独的使用preparestatement插入大量数据,我感觉很麻烦我使用一条sql,然后用preparestatement 直接一次性插入一批数据
      

  6.   

    不支持。prepare statement没有你想的那么强大。6楼的方法可以达到你想要的效果。吐槽一下,看到这样的数据库设计就有一种扁人的冲动。
      

  7.   

    把你User中的年和月数据获取出来,再组SQL语句,其实这样是可以实现的。
      

  8.   

    User{
    //属性
    id
    name
    year
    week
    }List<User> list = ....//要把List插入数据库表名要根据User中year和week来生成,然后插入到该表中,6楼达不到我只想用一个sql解决问题的效果
      

  9.   

    List<User> list = ....//要把List插入数据库 for(Iterator itor = list.iterator(); itor.hasNext();){
    User u = (User) itor.next();
    int year = u.getYear();
    int week = u.getWeek();
    String sql= "insert into user_"+year+"_"+month+"(id,name) values(?,?)";
    stmt.set..;
    stmt...; }
    stmt.set你需要的值
    自己在组织一下你的语言