Table des matières
 
一丨Statement
1.1 PerparedStatement (准备Statement,解决参数类型问题)
 
1.2 CallableStatement (存储过程)
1.XX 未完待续
二丨Batch 批处理
三丨继Batch之Transaction Google翻译
四丨ResultSet 结果集
1.前后滚动机制
2.JDBC之ResultSet对象-注意事项(点击前往)
Maison base de données tutoriel mysql JDBC的进阶知识和语法[以mysql为例作Demo]_MySQL

JDBC的进阶知识和语法[以mysql为例作Demo]_MySQL

Jun 01, 2016 pm 01:27 PM
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;	}
Copier après la connexion

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();	}}
Copier après la connexion

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;END
Copier après la connexion
	public 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();	}}
Copier après la connexion
同理,PreparedStatement 也可使用Batch

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();	}}
Copier après la connexion


三丨继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();	}}
Copier après la connexion
测试方法:让中间的语句的id发生主键唯一错误。

四丨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();	}}
Copier après la connexion

 

2.JDBC之ResultSet对象-注意事项(点击前往)

 

转载请注明出处:blog.csdn.net/qsuron 小树博客(qsuron)

bitsCN.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

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

Comment supprimer des données d'une table MySQL en utilisant PHP ? Comment supprimer des données d'une table MySQL en utilisant PHP ? Jun 05, 2024 pm 12:40 PM

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 est connecté à MySQL. Quelle est la raison de la fonction Die () non valide? La page est vide après que PHP est connecté à MySQL. Quelle est la raison de la fonction Die () non valide? Apr 01, 2025 pm 03:03 PM

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 ...

Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Apr 01, 2025 pm 02:48 PM

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? Comment partager la même page du côté PC et mobile et gérer les problèmes de cache? Apr 01, 2025 pm 01:57 PM

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 ...

Le verrouillage optimiste PHP combiné avec le solde de déduction des transactions a échoué: comment s'assurer que le solde est correctement déduit dans les situations de concurrence? Le verrouillage optimiste PHP combiné avec le solde de déduction des transactions a échoué: comment s'assurer que le solde est correctement déduit dans les situations de concurrence? Mar 31, 2025 pm 11:42 PM

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 ...

Surveillance des gouttelettes Redis à l'aide du service d'exportation Redis Surveillance des gouttelettes Redis à l'aide du service d'exportation Redis Jan 06, 2025 am 10:19 AM

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.

See all articles