cari

Rumah  >  Soal Jawab  >  teks badan

java 怎么多表同时插入到数据库啊?

PHP中文网PHP中文网2767 hari yang lalu531

membalas semua(4)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-18 10:37:54

    JDBC sendiri menyokong kemas kini kelompok, API khusus adalah seperti berikut:

    addBatch(String sql): Kaedah kelas Pernyataan, anda boleh menambah berbilang pernyataan sql pada senarai pernyataan SQL objek Pernyataan
    addBatch(): Kaedah kelas PreparedStatement boleh menambah berbilang penyata sql yang telah dikompilasi pada senarai pernyataan SQL bagi objek PreparedStatement
    executeBatch(): Hantar semua pernyataan SQL dalam objek Statement atau senarai pernyataan bagi Proses objek PreparedStatement pangkalan data
    clearBatch(): Kosongkan senarai pernyataan SQL semasa

    Menggunakan API kemas kini kelompok, saya akan melaraskan kod anda seperti berikut: (Nota: Jika senarai SQL mengandungi terlalu banyak pernyataan SQL yang belum selesai, ralat OutOfMemory mungkin berlaku. Oleh itu, senarai pernyataan SQL perlu diproses tepat pada masanya cara.)

    public class AddBatchSql {
    
        public void add(String fid,String title,String content){
            Connection connection = null;
            Statement stmt = null;
            String sql1 = null;
            String sql2 = null;
    
            try{
                connection = ConnectionUtils.getConnection();
                stmt = connection.createStatement();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String dateValue = simpleDateFormat.format(new Date());
                sql1 = "insert into news_base(fid,title,date,author) values("+fid+",'"+title+"','"+dateValue+"','Admin')";
                sql2 = "insert into news_content (cid,content) values("+fid+",'"+content+"')";
                List<String> sqlList = new ArrayList<String>();
                sqlList.add(sql1);
                sqlList.add(sql2);
                for (int i = 0; i < sqlList.size(); i++) {
                    String sql = sqlList.get(i);
                    stmt.addBatch(sql);
                    if (i==500) {
                        stmt.executeBatch();//为避免出现OutOfMemory错误,及时处理
                        stmt.clearBatch();//清空列表
                    }
                }
                //最后一次列表不足500条,处理
                stmt.executeBatch();
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                if(stmt != null){
                    try{
                        stmt.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }
        
    }

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:37:54

    Berbilang rekod yang berkaitan mesti ditulis baris demi baris menggunakan kaedah ini.

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:37:54

    Anda boleh menggunakan addBatch() untuk menyusun penyataan proses

    balas
    0
  • 高洛峰

    高洛峰2017-04-18 10:37:54

    Manfaat rangka kerja ditunjukkan, ia akan membantu anda melakukan operasi berulang

    balas
    0
  • Batalbalas