Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Contoh Pernyataan JDBC – Sisipkan Batch, Perbarui, Hapus

Ketika Anda memiliki banyak perintah insert atau update sql untuk dieksekusi, Anda dapat menggunakan java.sql.Statement addBatch(String sqlCmd) metode untuk mengelompokkannya, lalu jalankan java.sql.Statement executeBatch() untuk melakukan semua perintah ke server database sekaligus.

Catatan  Operasi Batch JDBC

  1. Meningkatkan kinerja komunikasi basis data karena perintah sql dikirim ke server basis data secara berkelompok, hal ini dapat mengurangi biaya komunikasi antara klien dan server.
  2. Operasi batch adalah fitur dari server database target, tidak diperlukan oleh driver jdbc. Anda dapat menggunakan Connection.getMetaData().supportsBatchUpdates() untuk memeriksa apakah database tujuan mendukung pembaruan batch atau tidak.
  3. Operasi batch dapat digunakan untuk tidak hanya menyisipkan perintah tetapi juga memperbarui dan menghapus perintah.
  4. Anda harus menggunakan java.sql.Connection.setAutoCommit(false) untuk menonaktifkan komit otomatis basis data sebelum menjalankan tindakan batch db.
  5. Setelah menjalankan operasi batch, gunakan java.sql.Connection.commit() untuk melakukan operasi ke server database sekaligus.
  6. Anda harus menjalankan java.sql.Connection.setAutoCommit(true) untuk mengaktifkan komit otomatis untuk operasi db selanjutnya.
  7. SQL batch dapat mengoperasikan banyak tabel.

Cuplikan Kode SQL Batch

	/* Get connection object. */
	Connection dbConn = this.getMySqlConnection(ip, port, dbName, userName, password);
			
	/* Disable auto commit. */
	dbConn.setAutoCommit(false);
			
	/* Get statement object. */
	Statement stmt = dbConn.createStatement();
		
    /* Add sql in batch, each sql can operate different table. */		
	stmt.addBatch(sql1);
	
	stmt.addBatch(sql2);
	
	stmt.addBatch(sql3);
	
	stmt.addBatch(sql4);
	
	stmt.addBatch(sql5);
	
	stmt.addBatch(sql6);

	/* Execute batch sql to db server. */
	int updateCountArr[] = stmt.executeBatch();
		
    /* Do not forget commit. */		
    dbConn.commit();
		
    /* Enable auto commit for later db operation. */		
    dbConn.setAutoCommit(true);

Kode Contoh Lengkap

Contoh di bawah ini akan menggunakan database mysql, menyisipkan dan memperbarui data ke tabel guru dan siswa secara batch. Anda dapat merujuk ke Cara Menggunakan JDBC Untuk Menghubungkan Database MySql untuk mempelajari lebih lanjut tentang JDBC MySQL.

	public void testBatchUpdate(String ip, int port, String dbName, String userName, String password)
	{
		String sqlArr[] = new String[6];
		
		sqlArr[0] = "insert into student values('richard','[email protected]')";
		sqlArr[1] = "insert into student values('jerry','[email protected]')";
		sqlArr[2] = "insert into teacher(name, email) values('tom','[email protected]')";
		sqlArr[3] = "update teacher set email = '[email protected]' where name = 'hello'";
		sqlArr[4] = "insert into teacher(name, email) values('song','[email protected]')";
		sqlArr[5] = "insert into teacher(name, email) values('jerry','[email protected]')";
		
		this.executeBatchSql(ip, port, dbName, userName, password, sqlArr);
	}
	
	/* Batch execute insert, update, delete commands. */
	public void executeBatchSql(String ip, int port, String dbName, String userName, String password, String sqlArr[])
	{
		/* Declare the connection and statement object. */
		Connection dbConn = null;
		Statement stmt = null;
		try
		{
			/* Get connection object. */
			dbConn = this.getMySqlConnection(ip, port, dbName, userName, password);
			
			/* Check whether this db support batch update or not. */
			boolean supportBatch = dbConn.getMetaData().supportsBatchUpdates();
			if(supportBatch)
			{
				System.out.println("This database support batch update.");
			}else
			{
				System.out.println("This database do not support batch update.");
			}
			
			
			/* Disable auto commit. */
			dbConn.setAutoCommit(false);
			
			/* Get statement object. */
			stmt = dbConn.createStatement();
			
			if(sqlArr!=null)
			{
				int len = sqlArr.length;
				for(int i=0;i<len;i++) { String sql = sqlArr[i]; stmt.addBatch(sql); System.out.println("Batch add sql : " + sql); } if(len > 0)
				{
					/* The return array save each command updated rows number. */
					int updateCountArr[] = stmt.executeBatch();
					
				    dbConn.commit();
				    
				    dbConn.setAutoCommit(true);
					
					System.out.println("Execute batch sql successfully. ");
					
					int updateLength = updateCountArr.length;
					
					for(int j=0 ; j < updateLength; j++)
					{
						int updateCount = updateCountArr[j];
						System.out.println("updateCount : " + updateCount);
					}
				}
			}
		}catch(Exception ex)
		{
			ex.printStackTrace();
		}finally
		{
			this.closeDBResource(stmt, dbConn);
		}
	}

	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();
		jdbcStatementExample.testBatchUpdate(ip, port, dbName, userName, password);
	}

Kode Sumber:

  1. [unduh id="2551″]

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengikat parameter untuk klausa WHERE IN dengan PDO

  2. Transposisi Kolom Dinamis ke Baris

  3. Bagaimana cara menyisipkan beberapa baris dari array menggunakan kerangka CodeIgniter?

  4. Cara Menggunakan Kata Sandi Asli Dengan MySQL 5.7

  5. Kutipan tunggal, Kutipan ganda, dan Backtick di MySQL