Java创建数据库新建表及初始化表
方法一
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&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_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创建数据库新建表及初始化表的更多相关文章
- MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表
		MySQL创建数据库 easyShopping,包括area表.goods表.customer表.orders表.ordersdetall表.test表 商品表表结构: 字段名 说 明 类 型 长 度 ... 
- [转] Oracle学习之创建数据库(新建实例)
		由于项目需求,在本机中开发,需要新建oracle数据库实例,亲测可以. 出处:http://blog.csdn.NET/luiseradl/article/details/6972217 http:/ ... 
- Android——SQLite数据库(一)创建数据库、创建表、初始化数据
		xml <Button android:layout_width="match_parent" android:layout_height="wrap_conten ... 
- 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 ... 
- 初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。
		标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报 分类: mysql(1) 版权声明:本文为博主原创文章,未经博主允许不得转 ... 
- Django Setting文件配置和简单的创建数据库字段
		Django Settings文件配置 静态文件配置 STATIC_URL = '/static/' # 静态文件配置 STATICFILES_DIRS = [ os.path.join(BASE_D ... 
- java编写创建数据库和表的程序
		本文示例可见一斑了,主要是通过Java对SQL语句进行操作,和普通的增删改查的原理是一样的: import java.sql.*; public class Test { public static ... 
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
		package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ... 
- Java 创建、填充PDF表单域
		表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加 ... 
随机推荐
- 爬虫---scrapy架构和原理
			scrapy是一个为了爬取网站数据, 提取结构性数据而编写的应用框架, 它是基于Twisted框架开发而来, 而Twisted框架是事件驱动的, 比较适合异步代码. 对会阻塞线程的操作, 包括访问数据 ... 
- Spring5-IOC容器实现方式
			spring提供了两个接口实现IOC容器 (1)BeanFactory:IOC容器基本实现,是Spring内部使用的接口,不提倡开发人员使用 特点:加载配置文件时侯不会创建对象,在获取对象时才会创建对 ... 
- MySQL 的发展历史和版本分支
			时间和里程碑 想查看之前的版本可以从这里找到mysql4,5,8等版本http://mirrors.sohu.com/mysql/下面简单回顾下相关的一些版本信息1996 年 MySQL 1.0 发布 ... 
- Visual Studio2019 F5调试程序时选择文件后调试控制台进程关闭问题
			问题:Visual Studio2019 F5调试程序时选择文件后调试控制台进程关闭问题 解决方案: 修改Visual Studio 配置项 [工具]-[选项]-[项目和解决方案]-[Web项目]-[ ... 
- 我用 CSS3 实现了一个超炫的 3D 加载动画
			今天给大家带来一个非常炫酷的CSS3加载Loading动画,它的特别之处在于,整个Loading动画呈现出了3D的视觉效果.这个Loading加载动画由12个3D圆柱体围成一个椭圆形,同时这12个圆柱 ... 
- Delphi 类库(DLL)动态调用与静态调用示例讲解
			在Delphi或者其它程序中我们经常需要调用别人写好的DLL类库,下面直接上示例代码演示如何进行动态和静态的调用方法: { ************************************** ... 
- HashMap和Hashtable以及ConcurrentHashMap的区别
			 HashMap和Hashtable的区别 何为HashMap HashMap是在JDK1.2中引入的Map的实现类. HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部 ... 
- Odoo 服务器搭建备忘
			前提 OS:Ubuntu 20.04LTS Odoo:14旗舰版 数据库:Postgres13.0 *数据库和Odoo安装在一台服务器 系统设置 为了Log日志时间好看,进行系统时区设置 # 查看可用 ... 
- VDO虚拟数据优化
			VDOVirtual Data Optimize 虚拟数据优化 是一种通过压缩或删除存储设备上的数据来优化存储空间的技术. VDO 是红帽公司收购了 Permabit 公司后获取的新技术,并与2019 ... 
- B08. BootstrapBlazor实战 Menu 导航菜单使用(2)
			接上篇: B08. BootstrapBlazor实战 Menu 导航菜单使用(1) 3.项目模板 节省时间,直接使用 Bootstrap Blazor App 模板快速搭建项目 传送门: https ... 
