Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

JDBC स्टेटमेंट उदाहरण - बैच इंसर्ट, अपडेट, डिलीट

जब आपके पास निष्पादित करने के लिए बहुत सारे सम्मिलित या अद्यतन sql कमांड हों, तो आप java.sql.Statement addBatch(String sqlCmd) का उपयोग कर सकते हैं। उन्हें एक साथ समूहबद्ध करने की विधि और फिर java.sql.Statement executeBatch() चलाएं डेटाबेस सर्वर को सभी कमांड एक साथ देने के लिए।

जेडीबीसी बैच ऑपरेशन के नोट्स

  1. डेटाबेस संचार प्रदर्शन को बढ़ाएं क्योंकि sql कमांड समूह द्वारा डेटाबेस सर्वर को भेजे गए थे, इससे क्लाइंट और सर्वर के बीच संचार की लागत कम हो सकती है।
  2. बैच ऑपरेशन लक्ष्य डेटाबेस सर्वर की एक विशेषता है, यह jdbc ड्राइवर द्वारा आवश्यक नहीं है। आप उपयोग कर सकते हैं Connection.getMetaData().supportsBatchUpdates() यह जाँचने के लिए कि गंतव्य डेटाबेस बैच अद्यतन का समर्थन करता है या नहीं।
  3. बैच ऑपरेशन का उपयोग न केवल कमांड डालने के लिए किया जा सकता है बल्कि कमांड को अपडेट और डिलीट करने के लिए भी किया जा सकता है।
  4. आपको java.sql.Connection.setAutoCommit(false) का उपयोग करना चाहिए बैच डीबी क्रियाओं को निष्पादित करने से पहले डेटाबेस ऑटो प्रतिबद्धता को अक्षम करने के लिए।
  5. बैच संचालन निष्पादित करने के बाद, उपयोग करें java.sql.Connection.commit() डेटाबेस सर्वर पर एक बार में संचालन करने के लिए।
  6. आपको java.sql.Connection.setAutoCommit(true) चलाना चाहिए बाद के डीबी संचालन के लिए ऑटो कमिट सक्षम करने के लिए।
  7. बैच किए गए sql एकाधिक तालिकाओं को संचालित कर सकते हैं।

एसक्यूएल कोड स्निपेट बैच करें

	/* 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);

संपूर्ण उदाहरण कोड

नीचे दिए गए उदाहरण में mysql डेटाबेस का उपयोग किया जाएगा, बैच में टेबल शिक्षक और छात्र को डेटा डालें और अपडेट करें। आप JDBC MySQL के बारे में अधिक जानने के लिए MySql डेटाबेस कनेक्ट करने के लिए JDBC का उपयोग कैसे करें का संदर्भ ले सकते हैं।

	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);
	}

स्रोत कोड:

  1. [डाउनलोड आईडी="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. क्या MySQL के लिए कोई प्रोफाइलर समकक्ष है?

  2. जावा से MySQL से कनेक्ट नहीं हो सकता:MySQL ड्राइवर कनेक्शन तर्क के अंदर NullPointerException

  3. एक MySQL डेटाबेस से डेटा निर्यात करें

  4. इकाई फ्रेमवर्क के साथ MySQL का उपयोग करना

  5. कैसे नहीं RLIKE MySQL में काम करता है