JDBC的进阶知识和语法[以mysql为例作Demo]_MySQL
bitsCN.com
一丨Statement
1.1 PerparedStatement (准备Statement,解决参数类型问题)
public static PreparedStatement getPreparedStatement(Connection conn,String sql){ try { pstmt = conn.prepareStatement(sql); } catch (SQLException e) { System.err.println("*Faild In CreateStatement By Connection"); e.printStackTrace(); } return pstmt; }
package com.qsuron.util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.qsuron.util.DB;public class Test2 { public static void main(String[] args) throws SQLException { Connection conn = DB.getConnection("jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/qsuron","qsuron","qsuron"); PreparedStatement pstmt = DB.getPreparedStatement(conn,"insert into student values(?,?,?);"); pstmt.setInt(1,1213400129); pstmt.setString(2,"123456"); pstmt.setString(3,"qsuron"); pstmt.executeUpdate(); DB.close(); }}
1.2 CallableStatement (存储过程)
创建一个存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `p`(IN `id1` int,IN `id2` int,IN `password` char(20),IN `name` varchar(15),OUT `temp` int)BEGIN#插入id较大的,返回表中数据数IF(id1>id2)THENSET temp = id1;ELSESET temp = id2;end if;INSERT into student VALUES(temp,password,name);select COUNT(*) INTO temp from student;ENDCopier après la connexionpublic static CallableStatement getCallableStatement(Connection conn,String sql){ try { pcstmt = conn.prepareCall(sql); } catch (SQLException e) { System.err.println("*Faild In CreateStatement By Connection"); e.printStackTrace(); } return pcstmt; }Copier après la connexion
package com.qsuron.test;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.SQLException;import java.sql.Types;import com.qsuron.util.DB;public class Test3 { public static void main(String[] args) throws SQLException { Connection conn = DB.getConnection(); CallableStatement pcstmt = DB.getCallableStatement(conn,"{call p(?,?,?,?,?)}"); pcstmt.setInt(1,1213400103); pcstmt.setInt(2,1213400104); pcstmt.setString(3,"123456"); pcstmt.setString(4,"qsuron"); pcstmt.registerOutParameter(5,Types.INTEGER); pcstmt.execute(); System.out.println("Return : " + pcstmt.getInt(5)); DB.close(); }}Copier après la connexion
1.XX 未完待续
二丨Batch 批处理
package com.qsuron.test;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import com.qsuron.util.DB;public class Test4 { public static void main(String[] args) throws SQLException { Connection conn = DB.getConnection(); Statement stmt = DB.getStatement(conn); stmt.addBatch("insert into student values ('1213400131','1','Q');"); stmt.addBatch("insert into student values ('1213400132','1','Q');"); stmt.addBatch("insert into student values ('1213400133','1','Q');"); stmt.executeBatch(); DB.close(); }}
package com.qsuron.test;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import com.qsuron.util.DB;public class Test5 { public static void main(String[] args) throws SQLException { Connection conn = DB.getConnection(); PreparedStatement pstmt = DB.getPreparedStatement(conn,"insert into student values(?,?,?);"); pstmt.setInt(1,1213400141); pstmt.setString(2,"1"); pstmt.setString(3,"Q"); pstmt.addBatch(); pstmt.setInt(1,1213400142); pstmt.setString(2,"1"); pstmt.setString(3,"Q"); pstmt.addBatch(); pstmt.setInt(1,1213400143); pstmt.setString(2,"1"); pstmt.setString(3,"Q"); pstmt.addBatch(); pstmt.executeBatch(); DB.close(); }}
三丨继Batch之Transaction Google翻译
缘由:如A转账予B,那么JDBC至少要操作2条UPDATE语句(A减B加),Transaction就是为了保证这两条语句必须同时执行成功或者同时执行失败。
package com.qsuron.test;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import com.qsuron.util.DB;public class Test6 { public static void main(String[] args) throws SQLException { Connection conn = DB.getConnection(); Statement stmt = DB.getStatement(conn); try { conn.setAutoCommit(false); //将自动提交设置为false,将多条语句积累到一起 stmt.addBatch("insert into student values ('1213400135','1','Q');"); stmt.addBatch("insert into student values ('1213400136','1','Q');"); stmt.addBatch("insert into student values ('1213400134','1','Q');"); stmt.executeBatch(); conn.commit(); //执行 conn.setAutoCommit(true); //重置自动提交 } catch (Exception e) { //如果抓到异常就现场恢复 if(conn!=null){ conn.rollback(); //数据回滚 System.out.println("Exception:Rollback!"); conn.setAutoCommit(true); } } DB.close(); }}
四丨ResultSet 结果集
1.前后滚动机制
package com.qsuron.test;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.qsuron.util.DB;public class Test7 { public static void main(String[] args) throws SQLException { Connection conn = DB.getConnection(); Statement stmt = DB.getStatement(conn,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs = DB.query(stmt,"select * from student order by id;"); rs.last(); System.out.println("当前行数:"+rs.getRow()); System.out.println(rs.getString(1)); rs.previous(); System.out.println(rs.getString(1)); rs.absolute(7); System.out.println(rs.getString(1)); DB.close(); }}
2.JDBC之ResultSet对象-注意事项(点击前往)
转载请注明出处:blog.csdn.net/qsuron 小树博客(qsuron)
bitsCN.com
Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

PHP fournit les méthodes suivantes pour supprimer des données dans les tables MySQL : Instruction DELETE : utilisée pour supprimer les lignes correspondant aux conditions de la table. Instruction TRUNCATETABLE : utilisée pour effacer toutes les données de la table, y compris les ID auto-incrémentés. Cas pratique : Vous pouvez supprimer des utilisateurs de la base de données à l'aide de formulaires HTML et de code PHP. Le formulaire soumet l'ID utilisateur et le code PHP utilise l'instruction DELETE pour supprimer l'enregistrement correspondant à l'ID de la table des utilisateurs.

La page est vide après que PHP se connecte à MySQL, et la raison pour laquelle la fonction Die () échoue. Lorsque vous apprenez la connexion entre PHP et la base de données MySQL, vous rencontrez souvent des choses déroutantes ...

Php ...

De nombreux développeurs de sites Web sont confrontés au problème de l'intégration de Node.js ou des services Python sous l'architecture de lampe: la lampe existante (Linux Apache MySQL PHP) a besoin d'un site Web ...

Comment partager la même page du côté PC et mobile et gérer les problèmes de cache? Dans l'environnement Nginx PHP MySQL construit à l'aide de l'arrière-plan Baota, comment faire le côté PC et ...

Une explication détaillée du problème de la déduction des soldes en combinaison avec des verrous et des transactions optimistes PHP dans cet article analysera en détail une déduction de solde à l'aide de PHP, de verrous optimistes et de transactions de base de données, seulement ...

Une surveillance efficace des bases de données Redis est essentielle pour maintenir des performances optimales, identifier les goulots d'étranglement potentiels et garantir la fiabilité globale du système. Redis Exporter Service est un utilitaire robuste conçu pour surveiller les bases de données Redis à l'aide de Prometheus. Ce didacticiel vous guidera tout au long de l'installation et de la configuration complètes de Redis Exporter Service, vous garantissant ainsi d'établir une solution de surveillance de manière transparente. En suivant ce didacticiel, vous obtiendrez une configuration de surveillance entièrement opérationnelle pour surveiller efficacement les mesures de performances de votre base de données Redis.
