方法一

package com.crt.openapi;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.Statement;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;

public class CreateDB2 {

public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");

//一开始必须填一个已经存在的数据库
String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?characterEncoding=utf-8&autoReconnect=true";

//遇到一个乱码的问题,是因为连接串中有这两个参数allowMultiQueries=true&useUnicode=true&,耽搁了一天时间,最终找到是这个问题
// String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true";
Connection conn = DriverManager.getConnection(url, "root", "123456");
Statement stat = conn.createStatement();
String dataBaseName="ecsb_tenant9999";
//创建数据库hello
stat.executeUpdate("CREATE DATABASE IF NOT EXISTS "+dataBaseName+" default charset utf8 COLLATE utf8_general_ci; ");

//打开创建的数据库
stat.close();
conn.close();
url=url.replace("ecsb_dev", dataBaseName);
conn = DriverManager.getConnection(url, "root", "123456");
stat = conn.createStatement();

/* //创建表test
// stat.executeUpdate("create table test(id int, name varchar(80))");
//添加数据
stat.executeUpdate("insert into test values(1, '张三')");
stat.executeUpdate("insert into test values(2, '李四')");*/
ScriptRunner runner = new ScriptRunner(conn);
runner.setAutoCommit(false);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
// runner.runScript(new InputStreamReader(new FileInputStream("D:\\work_code\\version2\\ecsb-parent\\ecsb-springboot\\src\\main\\resources\\db.sql"),"gbk"));
Resources.setCharset(Charset.forName("UTF-8"));
/*InputStreamReader reader = new InputStreamReader(Resources.getResourceAsStream("db.sql"), "UTF-8");
runner.runScript(reader);*/
runner.runScript(Resources.getResourceAsReader("db.sql"));
//查询数据
ResultSet result = stat.executeQuery("select * from api_token");
while (result.next())
{
System.out.println(result.getInt("id") + " " + result.getString("creater"));
}

//关闭数据库
result.close();
stat.close();
conn.close();
}

}

方法二

导入ant包

<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.7</version>
</dependency>

package com.crt.openapi;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.io.File;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.Statement;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.SQL;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.SQLExec;

public class CreateDB {

public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");

//一开始必须填一个已经存在的数据库
String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?characterEncoding=utf-8&amp;autoReconnect=true";

//遇到一个乱码的问题,是因为连接串中有这两个参数allowMultiQueries=true&amp;useUnicode=true&amp;,耽搁了一天时间,最终找到是这个问题
// String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?allowMultiQueries=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true";
Connection conn = DriverManager.getConnection(url, "root", "123456");
Statement stat = conn.createStatement();
String dataBaseName="ecsb_tenant1999";
//创建数据库hello
stat.executeUpdate("CREATE DATABASE IF NOT EXISTS "+dataBaseName+" default charset utf8 COLLATE utf8_general_ci; ");
//打开创建的数据库
stat.close();
conn.close();
url=url.replace("ecsb_dev", dataBaseName);
conn = DriverManager.getConnection(url, "root", "123456");
stat = conn.createStatement();
SQLExec sqlExec = new SQLExec();
sqlExec.setDriver("com.mysql.jdbc.Driver");
sqlExec.setUrl(url);
sqlExec.setUserid("root");
sqlExec.setPassword("1qaz@WSX");
//要执行的脚本
sqlExec.setSrc(new File("D:\\work_code\\version2\\ecsb-parent\\ecsb-springboot\\src\\main\\resources\\db.sql"));
sqlExec.setPrint(true); //设置是否输出
sqlExec.setEncoding("utf8");
sqlExec.setProject(new Project());
sqlExec.execute();
/* new SQL(){
public SQL SELECT(String columns) {};
return "";
}*/
/* //创建表test
// stat.executeUpdate("create table test(id int, name varchar(80))");
//添加数据
stat.executeUpdate("insert into test values(1, '张三')");
stat.executeUpdate("insert into test values(2, '李四')");*/
/*ScriptRunner runner = new ScriptRunner(conn);
runner.setAutoCommit(true);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
// runner.runScript(new InputStreamReader(new FileInputStream("D:\\work_code\\version2\\ecsb-parent\\ecsb-springboot\\src\\main\\resources\\db.sql"),"gbk"));
InputStreamReader reader = new InputStreamReader(Resources.getResourceAsStream("db.sql"), "UTF-8");
Resources.setCharset(Charset.forName("UTF8"));
// runner.runScript(Resources.getResourceAsReader("db.sql"));
runner.runScript(reader);*/
//查询数据
ResultSet result = stat.executeQuery("select * from api_token");
while (result.next())
{
System.out.println(result.getInt("id") + " " + result.getString("creater"));
}

//关闭数据库
result.close();
stat.close();
// runner.closeConnection();
conn.close();
}

}

Java创建数据库新建表及初始化表的更多相关文章

  1. MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表

    MySQL创建数据库 easyShopping,包括area表.goods表.customer表.orders表.ordersdetall表.test表 商品表表结构: 字段名 说 明 类 型 长 度 ...

  2. [转] Oracle学习之创建数据库(新建实例)

    由于项目需求,在本机中开发,需要新建oracle数据库实例,亲测可以. 出处:http://blog.csdn.NET/luiseradl/article/details/6972217 http:/ ...

  3. Android——SQLite数据库(一)创建数据库、创建表、初始化数据

    xml <Button android:layout_width="match_parent" android:layout_height="wrap_conten ...

  4. MySQL数据库执行sql语句创建数据库和表提示The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working

    MySQL创建数据库 只想sql文件创建表时候提示 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to ha ...

  5. 初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。

    标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报  分类: mysql(1)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

  6. Django Setting文件配置和简单的创建数据库字段

    Django Settings文件配置 静态文件配置 STATIC_URL = '/static/' # 静态文件配置 STATICFILES_DIRS = [ os.path.join(BASE_D ...

  7. java编写创建数据库和表的程序

    本文示例可见一斑了,主要是通过Java对SQL语句进行操作,和普通的增删改查的原理是一样的: import java.sql.*; public class Test { public static ...

  8. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  9. Java 创建、填充PDF表单域

    表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加 ...

随机推荐

  1. python---用顺序表实现栈

    class Stack(object): """栈, 存放数据的一种容器, 后进先出""" def __init__(self): self ...

  2. kubectl scale 一次缩容调整过程

    查看master环境相关信息一.版本信息 [root@master-web-38 ~]# kubectl versionClient Version: version.Info{Major:" ...

  3. 32位x86处理器架构

    我们看看32 位 x86 处理器的基本架构特点.这些处理器包括了 Intel IA-32 系列中的成员和所有 32 位 AMD 处理器. 操作模式 x86 处理器有三个主要的操作模式:保护模式.实地址 ...

  4. Gradle 安装记录

    Gradle 安装记录 官网 https://gradle.org/ 参考文档 https://gradle.org/install/ 下载地址 <二进制文件> <源码+文档> ...

  5. JavaScript学习总结6-apply

    JS中的apply方法可以控制this指向 任何JS支持的类型都可以转化为JSON JS对象是键值对型的,JSON是字符串型的 原型对象:__proto__ JS万物皆对象,ES6开始提供了对后端开发 ...

  6. vue - scss 引入 外部 在线 css

    <style lang="scss"> @import url('https://fonts.googleapis.com/css2?family=Lobster&am ...

  7. JavaSE前期准备1

    历史(建议了解即可) 一.1990年,美国Sun公司的"Stealth计划"(后改名为"Green计划")目标设置在家用电器等小型系统的程序语言,准备应用在电视 ...

  8. python基础练习题(题目 学习使用auto定义变量的用法)

    day28 --------------------------------------------------------------- 实例042:变量作用域 题目 学习使用auto定义变量的用法 ...

  9. Ubuntu 20.0.4 安装 NVIDIA N卡 驱动 画面撕裂 解决方法

    电脑 联想 Y7000 系统 Ubuntu 20.0.4 显卡 NVIDIA 1050TI 以下操作需要管理员权限 编辑文件,如果没有新建一个 /lib/modprobe.d/nvidia-graph ...

  10. Spring Security实现基于RBAC的权限表达式动态访问控制

    昨天有个粉丝加了我,问我如何实现类似shiro的资源权限表达式的访问控制.我以前有一个小框架用的就是shiro,权限控制就用了资源权限表达式,所以这个东西对我不陌生,但是在Spring Securit ...