易截截图软件、单文件、免安装、纯绿色、仅160KB

Java 执行 SQL 脚本文件

是拷贝的别人的,以备学习
package com.unmi.db;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 读取 SQL 脚本并执行
* @author Unmi
*/
public class SqlFileExecutor {
/**
* 读取 SQL 文件,获取 SQL 语句
* @param sqlFile SQL 脚本文件
* @return List<sql> 返回所有 SQL 语句的 List
* @throws Exception
*/
private List<String> loadSql(String sqlFile) throws Exception {
List<String> sqlList = new ArrayList<String>();
try {
InputStream sqlFileIn = new FileInputStream(sqlFile);
StringBuffer sqlSb = new StringBuffer();
byte[] buff = new byte[1024];
int byteRead = 0;
while ((byteRead = sqlFileIn.read(buff)) != -1) {
sqlSb.append(new String(buff, 0, byteRead));
}
// Windows 下换行是 \r\n, Linux 下是 \n
String[] sqlArr = sqlSb.toString().split("(;\\s*\\r\\n)|(;\\s*\\n)");
for (int i = 0; i < sqlArr.length; i++) {
String sql = sqlArr[i].replaceAll("--.*", "").trim();
if (!sql.equals("")) {
sqlList.add(sql);
}
}
return sqlList;
} catch (Exception ex) {
throw new Exception(ex.getMessage());
}
}
/**
* 传入连接来执行 SQL 脚本文件,这样可与其外的数据库操作同处一个事物中
* @param conn 传入数据库连接
* @param sqlFile SQL 脚本文件
* @throws Exception
*/
public void execute(Connection conn, String sqlFile) throws Exception {
Statement stmt = null;
List<String> sqlList = loadSql(sqlFile);
stmt = conn.createStatement();
for (String sql : sqlList) {
stmt.addBatch(sql);
}
int[] rows = stmt.executeBatch();
System.out.println("Row count:" + Arrays.toString(rows));
}
/**
* 自建连接,独立事物中执行 SQL 文件
* @param sqlFile SQL 脚本文件
* @throws Exception
*/
public void execute(String sqlFile) throws Exception {
Connection conn = DBCente


相关文档:

怎么增加SQL Server连接数

怎么增加SQL Server连接数
1. 看操作平台的連接數是多少
   控制台的授權看看
2. 進GENERAL看看SQL SERVER USERS CONNECTIONS
    增大即可
sp_configure 'number of connection'
go ......

sql语句基本操作

1.建表语句:create table
用法: create table 表的名字 (字段1, 字段2,。。。。)
举例:例如创建一个学生成绩表,包含的字段有,学生id,姓名,性别,班级,成绩create table score(
create table score(
 sid nvarchar(10) primary key,
 sname nvarchar(10) not null,
 sex nvarchar(2),
 sc ......

尽量避免在SQL语句中使用OR

----start
    在SQL语句中应该尽量避免使用OR,因为这样做会影响SQL语句的性能。考虑下面的情况:
CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
BIRTHDAY DATE---生日
); 
现在有这样一个问题:让你查找一下生日是1949-10-1(共和国同龄人)或1978-12-18(十一届三中全会召开时间) ......

SQL优化介绍一

一、选择最有效率的表名顺序(只在基于规则的优化器中有效)
 
ORACLE的解析器按照从右到左的顺序处理from子句中的表名,因此from子句中写在最后的表(基础表 driving table)将被最先处理. 在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们 ......

如何用SQL语句在两个数据库间复制存储过程

 --1.在目标服务器上建立如下对象(被同步的服务器)  
   
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[sys_syscomments_bak]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号