execsql.java

来自「主要对各种数据库性能进行测试」· Java 代码 · 共 183 行

JAVA
183
字号
package sqlite;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

  
public class ExecSql {

	private  Statement stmt ;
    WriteFile file = new WriteFile();
	public int exec(Connection conn,String sql)
	{
		try {
			stmt = conn.createStatement();
			stmt.execute(sql);
			return 1;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			if(e.getMessage().indexOf(" locked") >= 0  || e.getMessage().indexOf("The database is already in use by another process") >= 0 ) 
			{
				String in = "数据库被锁,等待中.....[database is locked waiting....]";
				System.out.println(in);
				file.aLine(in);
				closeStmt();
				try {
					Thread.sleep(1000);//
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				this.exec(conn,sql);//如果表被锁则重新执行
			}else{
				e.printStackTrace();
				file.aLine(e.getMessage()); 
			}
		}finally{
			closeStmt(); 
		}
		
		return -1;
	}
	public ResultSet select(Connection conn,String sql)
	{
		ResultSet rs = null;
		try {
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			return rs;
		} catch (SQLException e) {
			 if (e.getMessage().indexOf(" locked") >= 0  || e.getMessage().indexOf("The database is already in use by another process") >= 0 ) {
		        	String in = "数据库被锁,等待中.....[database is locked waiting....]";
		            System.out.println(in);
		            file.aLine(in);
		            closeResult(rs);
		            closeStmt(); 
		            
		            try {
						Thread.sleep(100);//
					} catch (InterruptedException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
		            select(conn,sql); //如果表被锁则重新执行
		        }
		        else {
		        	e.printStackTrace(); 
		        	file.aLine(e.getMessage());
		        }  
		} finally{ 
		}
		
		return null;
	}
	
	public int insert(Connection conn,String sql)
	{  
		try {
			stmt = conn.createStatement();
			int  num = stmt.executeUpdate(sql);
			return num;
		} catch (SQLException e) { 
	        if (e.getMessage().indexOf(" locked") >= 0  || e.getMessage().indexOf("The database is already in use by another process") >= 0 ) {
	        	String in = "数据库被锁,等待中.....[database is locked waiting....]";
	            System.out.println(in);
	            file.aLine(in);
	            closeStmt(); 
	            stmt=null;
	            try {
					Thread.sleep(100);//
				} catch (InterruptedException e1) { 
					e1.printStackTrace();
				} 
	            insert(conn,sql); //如果表被锁则重新执行
	        }
	        else {
	        	e.printStackTrace(); 
	        	file.aLine(e.getMessage());
	        } 
		}finally{
			closeStmt();
			//closeConn(  conn); //---------------
		}
		
		return -1;
	}
	
	public int update(Connection conn,String sql) //synchronized
	{
		try {
			stmt = conn.createStatement();
			int num = stmt.executeUpdate(sql);   
			return num;
		} catch (SQLException e) { 
			if (e.getMessage().indexOf(" locked") >= 0 || e.getMessage().indexOf("The database is already in use by another process") >= 0 ) {
				String in = "数据库被锁,等待中.....[database is locked waiting....]";
	            System.out.println(in);
	            file.aLine(in);
	            closeStmt();
	            try {
					Thread.sleep(100);//
				} catch (InterruptedException e1) { 
					e1.printStackTrace();
				}
	            update(conn,sql);//如果表被锁则重新执行
			}
	        else {
	        	e.printStackTrace();
	        	file.aLine(e.getMessage());
	        }
		}finally{
			closeStmt();
		}
		 
		return -1;
	}
	 
	public  void closeResult(ResultSet rs)
	{
		try {
			if(rs!=null)
			{
				rs.close();
				rs = null;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public  void closeStmt()
	{
		try {
			if(stmt!=null)
			{
				stmt.close();
				stmt = null;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			file.aLine(e.getMessage());
		}
	}
	
	public  void closeConn(Connection conn)
	{
		try {
			if(conn!=null)
			{
				conn.close();
				conn =null;
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			file.aLine(e.getMessage());
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?