importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.nio.charset.Charset;importjava.sql.Connection;importjava.sql.DatabaseMetaData;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;public classbatch2 {public static voidmain(String[] args) {
testOracle();
}public static booleansupportBatch(Connection con) {try{//得到数据库的元数据
DatabaseMetaData md =con.getMetaData();returnmd.supportsBatchUpdates();
}catch(SQLException e) {
e.printStackTrace();
}return false;
}public static voidtestOracle()
{
Connection con= null;//创建一个数据库连接
PreparedStatement pre = null;//创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;//创建一个结果集对象
String sb="";try{//读取配置
InputStream inStream = new FileInputStream(new File(System.getProperty("user.dir")+"\\data\\Paras.properties"));
Properties prop= newProperties();
prop.load(inStream);//加载Oracle驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("开始尝试连接数据库!");//读取配置文件中数据库主机名,端口号,服务名
String url = prop.getProperty("url");
String user= prop.getProperty("username");//用户名,系统默认的账户名
String password = prop.getProperty("password");//你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);//获取连接
System.out.println("连接成功!");try{//BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(System.getProperty("user.dir")+"\\data\\sql.txt"),"UTF-8"));
BufferedReader br = new BufferedReader(new UnicodeReader(new FileInputStream(System.getProperty("user.dir")+"\\data\\sql.txt"), Charset.defaultCharset().name()));
System.out.println("");for (String line = br.readLine(); line != null; line =br.readLine()) {
System.out.println(line);if(line.startsWith("select")){
String sql= line;//预编译语句,“?”代表参数
pre = con.prepareStatement(sql);//实例化预编译语句
result =pre.executeQuery();
FileOutputStream fos= new FileOutputStream(new File(System.getProperty("user.dir"))+"\\data\\result.txt",true);
PrintStream p= newPrintStream(fos);
p.print(line);p.println();
ResultSetMetaData m=result.getMetaData();int columns=m.getColumnCount();while(result.next())
{for(int i=1;i<=columns;i++)
{
System.out.print(result.getString(i));
System.out.print(",");
sb=result.getString(i)+",";
p.print(sb);
}
System.out.println();
p.println();
}
System.out.println();
p.println();
p.close();
fos.flush();
}else if(!line.contains("#"))
{
String sql= line;//预编译语句,“?”代表参数
pre = con.prepareStatement(sql);//实例化预编译语句
pre.executeUpdate();//执行非查询语句
System.out.println("执行成功!");
}
}
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}catch(Exception e)
{
e.printStackTrace();
}finally{try{//逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源//注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();if (pre != null)
pre.close();if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}