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 + -
显示快捷键?