读sql文件执行创建数据库 插入数据库

该博客展示了使用Java进行数据库操作的代码。定义了JBSQL类,包含设置参数、连接数据库、获取查询结果、创建数据库等方法。还定义了JBMain类,在main方法中创建数据库并执行SQL文件中的语句,实现数据库的创建与操作。

/*执行程序*/
package enginedb;

import java.sql.*;
import java.util.*;
import java.io.*;

public class JBSQL {

  public String query_statement = null; /*定义sql语句*/
  public Connection conn = null;
  public Statement stmt = null;
  public ResultSet res = null;

  public String param[]; /*查询条件,或者是新的记录*/
  public JBSQL() {}

  public void setParam(String[] param) {
    this.param = param;
  }

  public void setQuerystatement(String query_statement) {
    this.query_statement = query_statement;
  }

  public void setConnection(String driverName, String jdbcURL, String username,
                            String passwd) throws Exception {
    Connection conn1;
    Class.forName(driverName);
    conn1 = DriverManager.getConnection(jdbcURL, username, passwd);
    conn1.setAutoCommit(false);
    this.conn = conn1;
  }

  /*获取查询结果*/
  public ResultSet getResult() {
    try {
      PreparedStatement select_stm = conn.prepareStatement(query_statement,
          java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
          java.sql.ResultSet.CONCUR_READ_ONLY);
      if (param != null) {
        for (int i = 0; i < param.length; i++) {
          select_stm.setString(i + 1, param[i]);
        }
      }
      res = select_stm.executeQuery();
    }
    catch (Exception e) {
      System.out.println(e);
    }
    return res;
  }
  //创建数据库
  public void createDateBase() throws SQLException,
      java.io.UnsupportedEncodingException {
    try {
      //程序转码,可以解决中文问题
      PreparedStatement create_stm = conn.prepareStatement(new String(
          query_statement.getBytes(), "iso8859_1"));
      create_stm.executeUpdate();
      create_stm.close();
      conn.commit();
    }
    catch (Exception e) {
      System.out.println(e);
      conn.rollback();
    }
  }

  //创建工作流数据库
  public void createEngineDB() throws SQLException,
      java.io.UnsupportedEncodingException {
    try {
      PreparedStatement create_stm = conn.prepareStatement(query_statement);
      create_stm.executeUpdate();
      create_stm.close();
      conn.commit();
    }
    catch (Exception e) {
      System.out.println(e);
      conn.rollback();
    }
  }

  //查找';'位置
  public ArrayList findPlace(String fileName) throws Exception {
    FileReader fileReader = new FileReader(fileName);
    ArrayList array = new ArrayList();
    char[] chrBuffer = new char[1024 * 35];
    //所有数据放入到Buffer中
    fileReader.read(chrBuffer);
    //strStream:含有全部读出的string
    String strStream = new String(chrBuffer);
    int index = 0;
    for (int i = 0; i < chrBuffer.length; i++) {
      if (chrBuffer[i] != '/0') { //如果未到末尾
        //查找';'的位置
        if (chrBuffer[i] == ';') { //输出';'所在位置
          char[] chars = new char[1024];
          strStream.getChars(index, i + 1, chars, 0);
          //取出的字符传加到ArrayList中
          array.add(new String(chars));
          index = i + 1;
        } //end if
      } //end if
    }
    fileReader.close();
    return array;
  }
}


/*执行程序*/
package enginedb;
import java.util.*;

public class JBMain {
  public JBMain() {
  }
    public static void main(String[] args) {
      JBSQL mysqlBean = new JBSQL();
      String driverName = "org.gjt.mm.mysql.Driver";
      String jdbcURL = "jdbc:mysql://127.0.0.1:3306/";
      String username = "root";
      String passwd = "";

      String engine_sql = "create database ";//创建语句
      String engine_db = "enginedb";//数据库名

      try {
        //创建enginedb数据库语句
        engine_sql = engine_sql + engine_db + ";";
        mysqlBean.setConnection(driverName, jdbcURL, username, passwd);
        mysqlBean.setQuerystatement(engine_sql);
        mysqlBean.createDateBase();

        ArrayList alist = mysqlBean.findPlace("wfdb_setup.sql");
        Iterator it = alist.iterator();
        while (it.hasNext()) {
          String strStream = (String) it.next().toString();
          String query_statement2 = strStream;
          jdbcURL = "jdbc:mysql://127.0.0.1:3306/" + engine_db;
          mysqlBean.setConnection(driverName, jdbcURL, username, passwd);
          mysqlBean.setQuerystatement(query_statement2);
          mysqlBean.createDateBase();
        }
      }
      catch (Exception ex) {
        ex.printStackTrace();
      }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值