java自动创建库和创建表和插入记录

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: java自动创建库和创建表和插入记录

背景

项目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);
}
}

效果:

总结

你是要完成需求还是心里装着用户呢?

在Java中,要自动创建数据库、创建表和插入记录,你可以使用JDBC(Java Database Connectivity)来实现。JDBC是Java访问数据库的标准API,它允许你连接到不同类型的数据库并执行SQL操作。在实现之前,请确保你已经安装了Java开发环境(JDK)和你所需要的数据库,并且已经导入了JDBC驱动程序(如果需要的话)。

以下是一个简单的示例,展示如何使用Java创建数据库、表和插入记录。在此示例中,我们将使用SQLite作为数据库,因为它是一个轻量级的数据库,不需要单独的服务器安装。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

连接到数据库并创建库:

public class DatabaseExample {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            // 注册SQLite的JDBC驱动程序
            Class.forName("org.sqlite.JDBC");
            // 创建连接
            connection = DriverManager.getConnection("jdbc:sqlite:test.db");
            System.out.println("连接成功");
            // 创建Statement对象
            statement = connection.createStatement();
            // 创建表
            String createTableQuery = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
            statement.execute(createTableQuery);
            System.out.println("表已创建");
            // 插入记录
            String insertQuery = "INSERT INTO users (name, age) VALUES ('John', 30)";
            statement.executeUpdate(insertQuery);
            System.out.println("记录已插入");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                // 关闭连接和Statement对象
                if (statement != null)
                    statement.close();
                if (connection != null)
                    connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

上述代码将创建一个名为"test.db"的SQLite数据库文件,并在其中创建一个名为"users"的表,然后插入一条记录。

请注意,这只是一个简单的示例,实际应用中可能需要更复杂的数据库操作和错误处理。另外,在真实项目中,你可能会使用数据库连接池来管理连接而不是在每次操作时都手动创建连接。

如果你想使用其他类型的数据库(例如MySQL、PostgreSQL等),则需要更改连接URL和驱动程序的类名。在这种情况下,确保你已经将相应的数据库驱动程序(JAR文件)包含在你的项目中。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Java 开发者
Java一分钟之-Quasar:协程库
【6月更文挑战第12天】Quasar是Java的高性能协程库,通过字节码增强实现轻量级并发模型——协程和通道,降低并发处理的复杂性和资源消耗。本文探讨了Quasar的常见问题,如内存泄漏、死锁和过度使用,提出相应避免策略,并提供了一个简单的协程间数据交换的代码示例。正确使用Quasar能提升程序性能和可维护性。
48 1
|
14天前
|
存储 算法 搜索推荐
Java中的数组函数库及其使用技巧
Java中的数组函数库及其使用技巧
|
18天前
|
存储 并行计算 算法
深入解析Java并发库(JUC)中的Phaser:原理、应用与源码分析
深入解析Java并发库(JUC)中的Phaser:原理、应用与源码分析
|
17天前
|
存储 安全 Java
深入剖析Java并发库:Exchanger的工作原理与应用场景
深入剖析Java并发库:Exchanger的工作原理与应用场景
|
17天前
|
存储 缓存 Java
深入剖析Java并发库(JUC)之StampedLock的应用与原理
深入剖析Java并发库(JUC)之StampedLock的应用与原理
深入剖析Java并发库(JUC)之StampedLock的应用与原理
|
21天前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
24 1
|
1月前
|
Java 编译器 Maven
Java一分钟之-AspectJ:AOP库
【6月更文挑战第13天】AspectJ是Java的AOP框架,扩展了语言并提供编译时和加载时织入,便于模块化横切关注点。关键概念包括编织、切面、切点和通知。常见问题涉及编译时织入配置、切点表达式误用、异常处理和版本兼容性。通过正确配置构建工具、精准设计切点、妥善处理异常和确保版本兼容,可避免这些问题。文中还提供了一个记录服务层方法执行时间的代码示例,帮助读者快速上手AspectJ。
38 2
|
10天前
|
Java Redis 数据安全/隐私保护
Redis13的Java客户端-Jedis快速入门,建立连接的写法,ip地址,设置密码密码,选择库的写法
Redis13的Java客户端-Jedis快速入门,建立连接的写法,ip地址,设置密码密码,选择库的写法
|
1月前
|
监控 网络协议 Java
Java一分钟之-Netty:高性能异步网络库
【6月更文挑战第11天】Netty是Java的高性能异步网络框架,基于NIO,以其高吞吐量、低延迟、灵活性和安全性受到青睐。常见问题包括内存泄漏、ChannelHandler滥用和异常处理不当。要规避这些问题,需正确释放ByteBuf,精简ChannelPipeline,妥善处理异常,并深入理解Netty原理。通过代码审查、遵循最佳实践和监控日志,可提升代码质量和性能。掌握Netty,打造高效网络服务。
26 2
|
1月前
|
Java API 容器
Java 8 的流库:Filter、Map、FlatMap 及 Optional 的概念与用法
【6月更文挑战第9天】Java 8 引入了许多强大的新特性,其中流库(Stream API)和 Optional 类极大地简化了集合操作和空值处理。本文将深入探讨 filter、map、flatMap 以及 Optional 的概念和用法,并提供示例代码来展示其实际应用。
23 4