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文件)包含在你的项目中。

当涉及自动创建表和自动插入记录时,还有一些要考虑的方面需要完善:

数据版本控制: 如果应用程序在不同的版本之间进行升级或迁移,需要考虑如何管理数据库结构和数据的变化。使用数据库迁移工具(如Flyway或Liquibase)可以帮助管理不同版本之间的变更。

数据验证和完整性: 自动创建表和自动插入记录可能会忽略数据验证和完整性的问题。确保自动化过程能够遵循数据库的约束、外键关系和数据验证规则,以防止无效或损坏的数据。

安全性考虑: 如果自动创建表和自动插入记录在生产环境中使用,需要确保相关的权限和安全性措施已经设置。避免在生产环境中开启不必要的自动化功能,以减少潜在的安全风险。

数据量和性能: 如果要插入大量数据,自动插入记录可能会影响性能。考虑使用批量插入操作、索引优化等方法来提高性能。

日志和监控: 针对自动创建表和自动插入记录的操作,建议记录适当的日志,以便在发生问题时进行故障排除。同时,设置适当的监控来监视数据库状态和性能。

回退和恢复策略: 在自动化过程中可能出现错误或需要回退的情况。确保有合适的备份、回滚和恢复策略,以应对潜在的问题。

灵活性和定制性: 自动化过程可能无法覆盖所有情况。考虑提供灵活的配置选项,以便根据特定需求进行定制。

文档和培训: 如果团队中的其他成员需要了解和使用自动化功能,确保提供清晰的文档和培训资料,以便他们正确地使用这些功能。

总之,自动创建表和自动插入记录可以为开发流程带来便利,但需要以谨慎的态度使用,并考虑上述的要点,以确保数据库的结构和数据的安全、完整性和性能。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Java范例开发大全(全书源程序),目录如下: 第1篇  Java编程基础 第1章  Java开发环境的搭建(教学视频:9分钟) 2 1.1  理解Java 2 1.2  搭建Java所需环境 3 1.2.1  下载JDK 3 1.2.2  安装JDK 4 1.2.3  配置环境 5 1.2.4  测试JDK配置是否成功 7 实例1  开发第一个Java程序 7 第2章  Java基础类型与运算符 实例2  自动提升 9 实例3  自动转换 10 实例4  常用基础类型之强制转换 11 2.2  运算符 12 实例5  算术运算符 12 实例6  关系运算符 13 实例7  逻辑运算符 14 实例8  位运算符 15 实例9  移位运算符 16 实例10  转型运算符 17 2.3  其他形式 18 实例11  常量与变量 18 实例12  各种进制的转换 19 实例13  Java中的进制与移位运算符 22 第3章  条件控制语句(教学视频:75分钟) 26 3.1  if控制语句 26 实例14  判断输入的年份是否为闰年 26 实例15  抽奖活动 27 3.2  for语句 28 实例16  小九九乘法表 28 实例17  如何列出素数 29 实例18  Java中的递归 31 实例19  男生女生各多少人 32 实例20  求水仙花数 34 实例21  求任意一个正数的阶乘 35 实例22  求n的n次方 35 实例23  利用for循环输出几何图形 36 实例24  杨辉三角 38 3.3  while语句 39 实例25  求1到100之间的和 39 实例26  存上100元需要多少天 40 实例27  输出100之间的所有偶数 41 实例28  如何判断回文数字 42 3.4  do…while语句 43 实例29  输出100之间的所有奇数 44 实例30  求最大的随机数 44 3.5  switch语句 45 实例31  判断字母分类 46 实例32  优良及差 47 实例33  打印任意一年日历 48 实例34  一年四季的划分 51 第2篇  Java数据处理 第4章  异常处理(教学视频:62分钟) 54 4.1  编译时异常 54 实例35  除0发生的算术异常(ArithmeticException) 54 实例36  数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37  数组元素类型不匹配异常(ArrayStoreException) 56 实例38  强制类型转换异常(ClassCastException) 56 实例39  索引越界异常(IndexOutOfBoundsException) 57 实例40  空指针异常(NullPointerException) 58 实例41  数字格式转换异常(NumberFornatException) 59 实例42  字符串索引越界异常(StringIndexOutBounds) 60 实例43  操作错误(UnsupportedOperationException) 60 4.2  运行时异常 61 实例44  找不到指定类时发生的异常(ClassNotFoundException) 62 实例45  请求的方法不存在(NoSuchMethodException) 63 4.3  try…catch捕获异常 65 实例46  try…catch捕获异常的实例 66 实例47  try…catch…finally捕获异常的实例 67 实例48  try…catch嵌套捕获异常的实例 68 4.4  throws声明异常 69 实例49  throws声明异常实例一 69 实例50  throws声明异常实例二 70 4.5  throw抛出异常 72 实例51  throw抛出异常实例一 72 实例52  throw抛出异常实例二 73 4.6  自定义异常 74 实例53  自定义异常实例一 74 实例54  自定义异常实例二 75 第5章  数组(教学视频:98分钟) 78 5.1  一维数组 78 实例55  一维数组的创建与使用 78 实例56  按相反的顺序输出 79 实例57  奇偶分组 80 实例58  找宝 81 实例59  寻找最小数 82 实例60  我的位置在哪里 83 实例61  复制数组 85 实例62  插入新元素 86 实例63  数组的合并 87 实例64  去除重复元素 88 实例65  数组求和计算 90 实例66  求最大值、最小值和平均值 91 5.2  二维数组 92 实例67  二维数组的创建与使用 92 实例68  矩阵转置 93 实例69  奇数阶幻

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Circ.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值