java 怎么多表同时插入到数据库啊?
PHP中文网
PHP中文网 2017-04-18 10:35:54
0
4
530
PHP中文网
PHP中文网

认证0级讲师

répondre à tous(4)
大家讲道理

JDBC lui-même prend en charge les mises à jour par lots, l'API spécifique est la suivante :

addBatch(String sql): Méthode de classe Statement, vous pouvez ajouter plusieurs instructions SQL à la liste d'instructions SQL de l'objet Statement
addBatch() : Les méthodes de la classe PreparedStatement peuvent ajouter plusieurs instructions SQL précompilées à la liste d'instructions SQL de l'objet PreparedStatement
executeBatch() : Envoyer toutes les instructions SQL dans l'objet Statement ou la liste d'instructions de l'objet PreparedStatement Processus la base de données
clearBatch() : Effacer la liste d'instructions SQL actuelle

À l'aide de l'API de mise à jour par lots, j'ajusterai votre code comme suit : (Remarque : si la liste SQL contient trop d'instructions SQL en attente, une erreur OutOfMemory peut se produire. Par conséquent, la liste d'instructions SQL doit être traitée en temps opportun. manière.)

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();
                }
            }
        }
    }
    
}
伊谢尔伦

Plusieurs enregistrements liés doivent être écrits ligne par ligne en utilisant cette méthode. Vous pouvez les encapsuler vous-même. Cela n'a pas l'air beaucoup mieux. Il est préférable d'utiliser le framework ORM, qui est plus lisible.

伊谢尔伦

Vous pouvez utiliser addBatch() pour traiter par lots les instructions

小葫芦

Les avantages du framework se reflètent, il vous aidera à effectuer des opérations répétées

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!