目录
- 背景
- 实操
- 注意点:
- 1、编写一个新建表的类
- 2、编写客户端
- 效果:
- 总结
背景
项目metaverse 第三版为了让软件的使用者成为软件设计者,让用户自动生成代码。
于是今天向大家介绍的是使用java自动创建库和创建表和插入记录。在这个迅速发展的时代,我们要深刻明白,机器能做的不需要人做。
实操
注意点:
1、首先要引入连接数据库的pom,主要要和自己连接的数据库mysql版本一致
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
1、编写一个新建表的类
package demo;
import java.sql.*;
/**
* @BelongsProject: JAVAtest
* @BelongsPackage: first2023年3月21日
* @Author: GuoYuan.Zhao
* @CreateTime: 2023-03-21 16:06
* @Description: TODO
* @Version: 1.0
*/
public class CreateTable {
public boolean createDB(String tableName) {
PreparedStatement prepare;
// 1.数据库名
String DBName = tableName;
// 数据库驱动
String mysqlDriver = "com.mysql.cj.jdbc.Driver";
// 数据库地址
String url = "jdbc:mysql://localhost:3306/";
String username = "root";
String password = "123456";
Connection conn = null;
Connection newConn = null;
try {
// 将mysql驱动注册到DriverManager中去
Class.forName(mysqlDriver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
// 建表语句
String tableSql = "create table "+tableName+" (username varchar(50) not null primary key,"
+ "password varchar(20)); ";
// 建库语句
String databaseSql = "create database " + DBName;
// 链接数据库
conn = DriverManager.getConnection(url, username, password);
// 用于执行静态SQL语句并返回其产生的结果的对象
Statement smt = conn.createStatement();
if (conn != null) {
System.out.println("数据库连接成功!");
// 执行建库语句
smt.executeUpdate(databaseSql);
// 链接新建的数据库
newConn = DriverManager.getConnection(url + DBName, username, password);
if (newConn != null) {
System.out.println("已经连接到新创建的数据库:" + DBName);
Statement newSmt = newConn.createStatement();
// 执行建表语句
int i = newSmt.executeUpdate(tableSql);
// DDL语句返回值为0
if (i == 0) {
System.out.println(tableSql + "表已经创建成功!");
//执行sql
String sql1="insert into " +tableName+ " set username =" + "\"" + tableName +"\"";
System.out.println(sql1);
String url1 = "jdbc:mysql://localhost:3306/"+tableName;
Connection conn1 = DriverManager.getConnection(url1, username, password);
//执行sq
prepare =conn1.prepareStatement(sql1);
//拿到返回值
int result=prepare.executeUpdate();
System.out.println(result);
}
}
}
} catch (SQLException e1) {
e1.printStackTrace();
}
return true;
}
}
2、编写客户端
package demo;
import java.util.Scanner;
/**
* @BelongsProject: JAVAtest
* @BelongsPackage: demo
* @Author: GuoYuan.Zhao
* @CreateTime: 2023-03-21 20:20
* @Description: TODO
* @Version: 1.0
*/
public class Student {
// CreateTable createTable = new CreateTable();
public static void main(String[] args) {
System.out.println("请输入姓名");
Scanner scanner = new Scanner(System.in);
String studentName = scanner.nextLine();
CreateTable createTable = new CreateTable();
createTable.createDB(studentName);
}
}
效果:
总结
你是要完成需求还是心里装着用户呢?