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中添加 ...
随机推荐
- Struts2-使用forEach标签+el标签获取值栈数据
import cn.web.body.User; import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList; i ...
- 网络编程学习——Linux epoll多路复用模型
前言 后端开发的应该都知道Nginx服务器,Nginx是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.后端部署中一般使用的就是Nginx反向代理技术. ...
- linux下elf二进制文件怎么回事(ls,vmstat等命令)
这个实验有两个目的: 1.linux的可执行命令例如:ls .cd等都是二进制elf格式文件等,后面的逻辑是什么,我们怎么窥探底层内容. 2.ELF可执行文件默认从地址0x080480000开始分配 ...
- 【GPLT】 图着色问题(c++)
题目如下: 这道题就是奇葩,多少有点低质量,这题不难,知识点就是邻接矩阵,但有以下奇葩点 1.颜色的编号是1-v 不是1-k,这点卡了我一会: 2.颜色涂色可以多于3,也可以少于3(这其实正常,但如果 ...
- 面试突击41:notify是随机唤醒吗?
做 Java 开发的小伙伴,对 wait 方法和 notify 方法应该都比较熟悉,这两个方法在线程通讯中使用的频率非常高,但对于 notify 方法的唤醒顺序,有很多小伙伴的理解都是错误的,有很多人 ...
- Git批量下载MODIS数据
1.download.sh获取 EarthData(需注册账号)中获取MODIS的产品类型.地理范围.时间年份等,进入下载页面Download Status 下载点击得到_download.sh 文件 ...
- vue2.x版本中Object.defineProperty对象属性监听和关联
前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...
- SpringBoot中异常处理
一.背景 在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢? 二.需求 1.拦截系统中部分异常,返回自定义的响应. 比如: 系统发生HttpRequestMetho ...
- 交换机POE技术知识大全
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 一个典型的以太网供电系统,在配线柜里保留以太网交换机设备,用一个带电源供电集线器(Midspan HUB)给局域网的双绞线提 ...
- Linux 查询 OS、CPU、内存、硬盘信息
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 一.前言 当我们接手了一台或者几台服务器的时候,首先我们 ...