sql >> データベース >  >> RDS >> Mysql

JDBCステートメントの例–挿入、削除、更新、レコードの選択

    この記事では、java.sql.Statementの使用方法を説明します。 挿入、更新、削除を実行し、例を使用してSQLDMLコマンドを選択します。

    1。 java.sql.Statement.execute(String sql)を使用して、コマンドの挿入、更新、削除を実行します。

    /* This method can be used to execute insert, update, delete dml command. */
    public void executeSql(String ip, int port, String dbName, String userName, String password, String sql)
    {
    	/* Declare the connection and statement object. */
    	Connection conn = null;
    	Statement stmt = null;
    	try
    	{
    		/* Get connection object. */
    		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
    		
    		/* Get statement object. */
    		stmt = conn.createStatement();
    		
    		/* The method can execute insert, update and delete dml command. */
    		stmt.execute(sql);
    		
    		System.out.println("Execute sql successfuly, " + sql);
    	}catch(Exception ex)
    	{
    		ex.printStackTrace();
    	}finally
    	{
    		this.closeDBResource(stmt, conn);
    	}
    }
         
    
    /* Close statement and connection after use, this can avoid resource waste. */
    public void closeDBResource(Statement stmt, Connection conn)
    {
    	try
    	{
    		if(stmt!=null)
    		{
    			stmt.close();
    			stmt = null;
    		}
    		
    		if(conn!=null)
    		{
    			conn.close();
    			conn = null;
    		}
    	}catch(Exception ex)
    	{
    		ex.printStackTrace();
    	}
    }
    

    2。自動生成されたキーを挿入して返します。

    挿入コマンドには、java.sql.Statement.execute(String sql, int autoGeneratedKeys)を使用します 自動インクリメントキーの値を挿入して返すには、この例ではid値です。

    /* Execute insert command and return the auto generated record id. */
    public int executeInsertSql(String ip, int port, String dbName, String userName, String password, String sql)
    {
    	int ret = -1;
    	/* Declare the connection and statement object. */
    	Connection conn = null;
    	Statement stmt = null;
    	try
    	{
    		/* Get connection object. */
    		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
    		
    		/* Get statement object. */
    		stmt = conn.createStatement();
    		
    		/* The method can execute insert dml command and return auto generated key values. */
    		stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
    		
    		ResultSet rs = stmt.getGeneratedKeys();
    			
    		if(rs.next())
    		{
    			/* Please note the index start from 1 not 0. */
    			ret = rs.getInt(1);
    		}			
    		
    		System.out.println("Execute sql successfuly, " + sql);
    	}catch(Exception ex)
    	{
    		ex.printStackTrace();
    	}finally
    	{
    		this.closeDBResource(stmt, conn);
    		return ret;
    	}
    	
    }
    

    3。 selectSQLコマンドを実行します。

    /* This method can be used to execute select dml command. */
    public List executeSelectSql(String ip, int port, String dbName, String userName, String password, String selectSql)
    {
    	List ret = new ArrayList();
    	/* Declare the connection and statement object. */
    	Connection conn = null;
    	Statement stmt = null;
    	try
    	{
    		/* Get connection object. */
    		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
    		
    		/* Get statement object. */
    		stmt = conn.createStatement();
    		
    		/* The method can execute select dml command. */
    		ResultSet rs = stmt.executeQuery(selectSql);
    		
    		if(rs!=null)
    		{
    			while(rs.next())
    			{
    				int teacherId = rs.getInt("id");
    				
    				String teacherName = rs.getString("name");
    				
    				String teahcerEmail = rs.getString("email");
    			
    				TeacherDTO teacherDto = new TeacherDTO();
    				
    				teacherDto.setId(teacherId);
    				
    				teacherDto.setName(teacherName);
    				
    				teacherDto.setEmail(teahcerEmail);
    				
    				ret.add(teacherDto);
    				
    				System.out.println("id = " + teacherDto.getId());
    				System.out.println("name = " + teacherDto.getName());
    				System.out.println("email = " + teacherDto.getEmail());
    				System.out.println("**************************************");
    			}
    		}
    		
    		System.out.println("Execute sql successfuly, " + selectSql);
    	}catch(Exception ex)
    	{
    		ex.printStackTrace();
    	}finally
    	{
    		this.closeDBResource(stmt, conn);
    		return ret;
    	}
    
    }
    

    4。 TeacherDTO.java。

    このクラスは、教師テーブルにデータの1つのレコードを保存するために使用されます。

    package com.dev2qa.java.jdbc;
    
    /* This class represent one record in database teacher table. */
    public class TeacherDTO {
    	
    	private int id;
    	
    	private String name;
    	
    	private String email;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getEmail() {
    		return email;
    	}
    
    	public void setEmail(String email) {
    		this.email = email;
    	}
    }
    

    5。完全なサンプルコード。

    1. この例では、MySQLデータベースのテストを使用します とテーブル教師教師 テーブルには3つの列があり、それらは id 名前、 およびメール 。詳細については、JDBC Create Table ExampleUseStatementを参照してください。
    2. テーブルを作成できます教師 phpMyAdminで。列名を追加する必要がありますid 、タイプは int、 A_Iをチェックします チェックボックスをオンにすると、自動インクリメントされます。

    5.1コードステップの例:

    1. 1つのレコードを挿入します(こんにちは、example @ sqldat.com)。
    2. 別のレコード(hello1、example @ sqldat.com)を挿入し、自動生成されたレコードIDを返します。
    3. 名前をjerryに更新すると、2番目のレコードIDが使用されます。
    4. 教師のすべてのレコードをクエリします テーブル。
    5. メールが[email protected]であるレコードを削除します
    6. 教師のすべてのレコードを一覧表示します 再びテーブル。
    public static void main(String[] args) {
    		
    	/* Below are db connection required data. */
    	String ip = "localhost";
    	int port = 3306;
    	String dbName = "test";
    	String userName = "root";
    	String password = "";
    	
    	/* Create an instance. */
    	JDBCStatementExample jdbcStatementExample = new JDBCStatementExample();
    	
    	/* Insert one record. */
    	String insertSql = "insert into teacher(name, email) values('hello','[email protected]')";
    	/* Execute the insert command. */
    	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, insertSql);
    	
    	/* Insert another record. */
    	insertSql = "insert into teacher(name, email) values('hello1','[email protected]')";
    	/* Execute the insert command. */
    	int autoGenId = jdbcStatementExample.executeInsertSql(ip, port, dbName, userName, password, insertSql);
    	
    	/* update record. */
    	String updateSql = "update teacher set name = 'jerry' where id = " + autoGenId;
    	/* Execute the update command. */
    	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, updateSql);
    	
    	/* select records. */
    	String selectSql = "select * from teacher";
    	jdbcStatementExample.executeSelectSql(ip, port, dbName, userName, password, selectSql);
    	
    	String deleteSql = "delete from teacher where email = '[email protected]'";
    	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, deleteSql);
    	
    	/* select records after delete. */
    	selectSql = "select * from teacher";
    	jdbcStatementExample.executeSelectSql(ip, port, dbName, userName, password, selectSql);
    }
    
    
    /* This method return java.sql.Connection object from MySQL server. */
    public Connection getMySqlConnection(String ip, int port, String dbName, String userName, String password)
    {
    	/* Declare and initialize a sql Connection variable. */
    	Connection ret = null;
    	
    	try
    	{
    	
    		/* Register for mysql jdbc driver class. */
    		Class.forName("com.mysql.jdbc.Driver");
    		
    		/* Create mysql connection url. */
    		String mysqlConnUrl = "jdbc:mysql://" + ip + ":" + port + "/" + dbName;
    		
    		/* Get the mysql Connection object. */
    		ret = DriverManager.getConnection(mysqlConnUrl, userName , password);
    	}catch(Exception ex)
    	{
    		ex.printStackTrace();
    	}finally
    	{
    		return ret;
    	}
    }
    

    出力

    <terminated> JDBCStatementExamp|e [Java Application] C:\Java\jrel.B.O_131\bin\javaw.exe [Aug 28, 2017, 7:59:53 PM]
    Execute sql successfuly, insert into teacher(name, email) values('hello','[email protected]')
    Execute sql successfuly, insert into teacher(name, email) values('hello1','[email protected]')
    Execute sql successfuly, update teacher set name = 'jerry' where id = 22
    id = 21
    name = hello
    email = [email protected]
    **************************************
    id = 22
    name = jerry
    email = [email protected]
    **************************************
    Execute sql successfuly, select * from teacher
    Execute sql successfuly, delete from teacher where email = '[email protected]'
    id = 21
    name = hello
    email = [email protected]
    **************************************
    Execute sql successfuly, select * from teacher

    1. DBスキーマの変更を追跡するためのメカニズム

    2. SQLclフォーマットオプション(Oracle)

    3. SOUNDSLIKE演算子がMySQLでどのように機能するか

    4. sp_updatestatsが実際に更新するものを理解する