Java utilise JDBC pour se connecter à distance à PostgreSQL et implémenter des opérations

Présentation des outils et de la préparation :

1. Le logiciel de développement utilisé dans cet article est eclipse1.7
2. Vous devez télécharger postgresqlpostgresql-9.2-1002.jdbc3.jar (si nécessaire, téléchargez-le depuis mes ressources), vous avez besoin du logiciel de gestion de base de données Navicat
3. Cet article utilise JDBC pour se connecter à la base de données, via Lire le fichier ".sql" pour implémenter des opérations de requête et d'insertion sur la base de données Postgresql

Étapes de mise en œuvre

1. Connectez-vous d'abord à la base de données à distance

(1) Ouvrez le logiciel de gestion de base de données Navicat, cliquez sur la connexion dans le coin supérieur gauche et sélectionnez PostgreSQL.

insérez la description de l'image ici
(2) Remplissez les informations de connexion. Ici, vous n'avez qu'à renseigner le nom de connexion et le mot de passe (le mot de passe défini lors de l'installation de PgSQL), les autres sont par défaut. localhost est l'adresse de la machine locale (renseignez son adresse IP pour la connexion à distance), et 5432 est le port de la base de données PgSQL. Après avoir renseigné les informations de connexion, cliquez sur Tester la connexion. Si la connexion réussit, la boîte de dialogue indique que PgSQL Server est démarré. Cliquez sur OK pour terminer la connexion à la base de données PgSQL.
insérez la description de l'image ici
Une fois la connexion terminée, vous verrez les informations de connexion sur la gauche. Le postgres sous le sous-répertoire Bolisen est une base de données PgSQL initiale qui peut être utilisée directement. Vous pouvez également sélectionner postgres, cliquer avec le bouton droit et sélectionner Nouvelle base de données pour créer une nouvelle base de données PgSQL.
insérez la description de l'image ici

Insérez une phrase (si le package jar du projet importe la mise en page, veuillez ignorer cet article)

La création du projet java avant le début est omise, et je posterai mon schéma de projet simple ci-dessous : ! Si le package jar est importé : créez un nouveau dossier lib (avec n'importe quel nom) et placez-y le package jar téléchargé -> cliquez avec le bouton droit sur le package jar -> cliquez sur Build Path -> Ensuite, vous cliquez sur le premier pour le reconstruire, et il entrera dans les bibliothèques référencées (voir Figure 1). Le package dao écrit principalement la méthode d'insertion de données ; le package Demo est le code de test ; le package util est une boîte à outils et écrit la méthode de connexion à la base de données. Insérez la description de l'image ici
Figure 1 :insérez la description de l'image ici

2. Commencez à écrire du code Java

2.1 Première connexion à la base de données (connexion fichier de configuration)

(1) Créez un fichier .properties sous le projet, tel que le fichier dbcpconfig.properties dans cet article, le nom du fichier peut être choisi par vous-même, et collez le contenu de mon fichier de configuration ci-dessous :

driver=org.postgresql.Driver
url=jdbc:postgresql://10.167.81.11:27500/postgres?characterEncoding=utf-8
username=user
password=zzr1100!

<!-- \u521D\u59CB\u5316\u8FDE\u63A5 -->
initialSize=10
<!--\u6700\u5927\u8FDE\u63A5\u6570\u91CF  -->
maxActive=50
<!-- \u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 -->
maxIdle=20
<!-- \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 -->
minIdle=5
<!-- \u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 6000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 -->
maxWait=60000在这里插入代码片

Remarque : Les paramètres suivants de taille d'initialisation et de capacité maximale doivent être écrits, sinon la connexion ne fonctionnera pas
(2) Le code Java pour se connecter à la base de données est le suivant :

public class JDBCUtils {
	       private static Properties prop;
	       static {
	              prop = new Properties();
	              try {
	                    InputStream is= JDBCUtils.class.getClassLoader().getResourceAsStream(
	                                   "dbcpconfig.properties");
	                    prop.load(is);               
	                     Class.forName(prop.getProperty("driver"));//加载驱动
	              } catch (Exception e) {
	            	  	System.out.println("出错了");
	                     throw new RuntimeException(e);
	                     
	              }
	       }
	       //获取连接
	       public static Connection getConnection(Connection conn) {
	              if (conn==null) {
	                     try {
	                            conn=DriverManager.getConnection(prop.getProperty("url"),
	                            prop.getProperty("username"),
	                            prop.getProperty("password"));
	                     } catch (SQLException e) {
	                            throw new RuntimeException(e);
	                     }
	              }
	                return conn;   
	       }
	       //关闭资源
	       public static void close(Connection conn,PreparedStatement prep,ResultSet rs){
	        if(rs != null){
	            try {
	                rs.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            } finally{
	                rs = null;
	            }
	        }
	        if(prep != null){
	            try {
	                prep.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            } finally{
	                prep = null;
	            }
	        }
	        if(conn != null){
	            try {
	                conn.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            } finally{
	                conn = null;
	            }
	        }
	    }
	       public static void close(Connection conn,PreparedStatement prep){
	    	   if(prep != null){
		            try {
		                prep.close();
		            } catch (SQLException e) {
		                e.printStackTrace();
		            } finally{
		                prep = null;
		            }
		        }
		        if(conn != null){
		            try {
		                conn.close();
		            } catch (SQLException e) {
		                e.printStackTrace();
		            } finally{
		                conn = null;
		            }
		        }
	       }
}
在这里插入代码片

2.2 Créer un fichier .sql, lire le fichier et effectuer l'opération d'insertion

(1) Cet article utilise l'opération d'insertion comme exemple pour illustrer : créez un dossier sqlfile (avec n'importe quel nom) comme indiqué dans la figure ci-dessous, puis créez un nouveau fichier .sql contenant l'instruction sql dans laquelle vous souhaitez insérer des données. (notez que je n'ai écrit qu'une seule ligne d'instruction d'insertion ici) Pour tester, si vous écrivez une instruction d'insertion multiligne, vous devez ajouter vous-même du code logique) Joignez l'exemple d'instruction sql dans cet article pour référence
insérez la description de l'image ici

INSERT INTO hxdb.person( name, age, sex)VALUES (?, ?, ?)

(2) Java lit l'implémentation du fichier sql

public class FileReader {
	
	    public static String readText() {
	    	String filePath="sqlfile/insert.sql";
	    	StringBuilder sb=new StringBuilder();
	        //通过路径创建文件
	        File file = new File(filePath);     
	        if (file.isFile() && file.exists()) {
	            try( //文件编码为gbk,这里做个转换
		                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
		                //字符缓冲流
		                BufferedReader br = new BufferedReader(isr);) {              
	            		String line=null;               
	                while ((line = br.readLine()) != null) {            	
	                	sb.append(line);					
	                }
						             
	            } catch (IOException e) {
	                e.printStackTrace();
	                System.out.println("文件读取错误!");
	            }
	        }else {
	            System.out.println("文件不存在!");
	        }
	        return sb.toString();
	    }	   
}

(3) Insérez la classe de méthode d'opération de données en référence à cet article (la classe Symfware dans cet article encapsule principalement ces méthodes pour l'insertion de requêtes, et vous pouvez choisir le nom de classe réel en fonction du projet)

public class Symfware {
	PreparedStatement ps = null;
	Connection con=null;
	ResultSet resultSet=null;
	int result=0;
	//1.查询person表中所有内容
	public void selectPerson(String line) {
		 con=JDBCUtils.getConnection(con);//连接数据库
		try {
			
			 ps=con.prepareStatement(line);
			System.out.println(ps);
			 resultSet=ps.executeQuery();
			while (resultSet.next()) {
				String id = resultSet.getString("name");       //读取当前行名为id的列的数据
	             int age1 = resultSet.getInt("age");
	            // int sex1 = resultSet.getInt("sex");​
	             //System.out.println("name:"+id+"age:"+age1);		
			}
			
		} catch (SQLException e) {
	
			e.printStackTrace();
		}finally {
			JDBCUtils.close(con, ps,resultSet);
		}
			
	}
	
	//2.插入 sql 操作
	public int insertContent(String name,int age,int sex ) {
		
		String sql=FileReader.readText();//读取到的sql
		con=JDBCUtils.getConnection(con);
		
		try {
			con.setAutoCommit(false);
			ps=con.prepareStatement(sql);
			ps.setString(1, name);
			ps.setInt(2, age);
			ps.setInt(3, sex);
			result=ps.executeUpdate();
			 System.out.println(result + "11111多少行");
			 con.commit();
		} catch (SQLException e) {
			e.printStackTrace();
			
		}finally {
			JDBCUtils.close(con, ps);
		}	
		return result;
	}
}

2.3 Enfin atteint la dernière étape, les résultats des tests

Collez l'exemple de test de cet article ci-dessous

public class Test1 {
	public static void main(String[] args) {
	
		 Symfware symfware=new Symfware();
		 symfware.insertContent("1111", 1238, 0);
		
	}	
}

d'accord! Merci d'avoir regardé, j'espère que cela vous aidera

Digression : Hahaha, ce billet de blog csdn est encore une courte période de devoirs que j'ai vécus lorsque je suis entré dans une équipe de projet en juillet après l'obtention de mon diplôme cette année. Il m'a fallu beaucoup de temps pour penser à l'enregistrer. Pas d'erreur (hahaha) Si il y a un problème, s'il vous plaît pardonnez-moi! Merci

Je suppose que tu aimes

Origine blog.csdn.net/weixin_51553816/article/details/125633200
conseillé
Classement