我有个岗位菜单对应表USER_GW_MENU,有两个字段(gw_id岗位代码,menu_id菜单代码)一个岗位可以有很拥有很多菜单.当我写一个javabean的时候,定义了一个函数,public void add_gw_menu(String  gw_id,String  menu_id[]),这个函数是用来设置岗位菜单的.
请问我应该如何写这段代码,调用这个add_gw_menu(String,String)方法后,把它读进数据库.

解决方案 »

  1.   

     就是说一个岗位,它有很多菜单权限,我现在想设置每个岗位的菜单权限,所以我就用了public void add_gw_menu(String  gw_id,String  menu_id[])这个方法.当另外一个javabean调用这个方法后(如类实例.add_gw_menu('101','数组')后,就能把101和数组的数据插入数据库中,也就完成了菜单岗位的设置
      

  2.   

    public void add_gw_menu(String  gw_id,String  menu_id[]){
    Connection conn;
    int i;
    for (i = 0; i < length(menu_id); i++) {
    String sql = "insert into USER_GW_MENU(gw_id, menu_id) = (" + gw_id + "," + menu_id[i] + ")";
    PreparedStatement pstmt = conn.PreparedStatement(sql);
    pstmt.execute(); 
    }
    conn.close();
    }
      

  3.   

    看看能不能用事务的方法!对于java我不太懂,在c中是用commit的方法提交事务的,不知道java有没有呢,本人初学者!
      

  4.   

    怎么不好,使用PreparedStatement进行结构相同的批插入,效率已经很好了,同意楼上说的,把它做成事务,这样,在某条记录插入出错时,可以回滚,然后做处理。
      

  5.   

    Connection c=null;
            PreparedStatement pstmt = null ;
    try
    {
    c=ConnectionHelper.getConnection();
    for(int i=0;i<s_menu_id.length;i++)
    {
    String sql="insert into USER_GW_MENU(GW_DM,MENU_ID) values (?,?)";
    c.setAutoCommit(false);
    pstmt=c.prepareStatement(sql);
    pstmt.setString(1, s_gw_dm);
    pstmt.setString(2, s_menu_id[i]);
    if (pstmt.executeUpdate() == 0) {
    throw new ConcurrencyException("不能正常设置!");
    }
    c.commit();
    }事务处理放在这里,对不对啊?
      

  6.   

    很多東西可以寫在循環之外,譬如:
    String sql="insert into USER_GW_MENU(GW_DM,MENU_ID) values (?,?)"; 
    c.setAutoCommit(false); 
    pstmt=c.prepareStatement(sql);
    何必要跟著循環N次?或者寫個存儲過程讓java調用。