根据数据库表名动态查询表字段

目的

        通过数据库的表名,获取到此表的所有表字段,以用作统一的批量新增。

代码

        

package org.springblade.test;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class QueryColumnsByTableName {

    /**
     * 获取数据库连接
     *
     * @return 返回数据库连接对象
     * @throws SQLException 如果连接失败或无法建立连接时抛出异常
     */
    public static Connection getConnection() throws SQLException {
        // 加载并注册JDBC驱动
        // Class.forName("com.mysql.jdbc.Driver");
        String JDBC_URL = "your_jdbc_url";
        String USER = "your_username";
        String PASSWORD = "your_password";
        // 使用DriverManager获取数据库连接
        return DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
    }

    /**
     * 根据表名查询字段列表
     *
     * @param tableName 表名
     * @return 包含表名和字段列表的映射关系
     */
    public Map<String, List<String>> queryColumnsByTableName(String tableName) {
        Map<String, List<String>> tableFieldMap = new HashMap<>();
        try (Connection connection = getConnection()) {
            DatabaseMetaData metaData = connection.getMetaData();
            ResultSet columnsRs = metaData.getColumns(null, null, tableName, "%");
            while (columnsRs.next()) {
                String columnName = columnsRs.getString("COLUMN_NAME");
                // 使用表名作为键存储字段列表
                if (!tableFieldMap.containsKey(tableName)) {
                    tableFieldMap.put(tableName, new ArrayList<>());
                }
                tableFieldMap.get(tableName).add(columnName);
            }
            columnsRs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return tableFieldMap;
    }

    @org.junit.jupiter.api.Test
    public void queryColumnsByTableNameTest() {
        String tableName = "your_table_name";
        Map<String, List<String>> dqGzfwYqjd = queryColumnsByTableName(tableName);
        System.out.println("Table '" + tableName + "' fields:");
        for (String field : dqGzfwYqjd.get(tableName)) {
            System.out.println(field);
        }
    }
}

        

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Python 获取 SQLite3 数据库表名字段名,你可以按照以下步骤进行操作: 1. 导入 `sqlite3` 模块: ```python import sqlite3 ``` 2. 连接到数据库: ```python conn = sqlite3.connect('your_database.db') ``` 将 `'your_database.db'` 替换为你的数据库文件路径。 3. 创建一个游标对象: ```python cursor = conn.cursor() ``` 4. 获取所有表名: ```python cursor.execute("SELECT name FROM sqlite_master WHERE type='table'") tables = cursor.fetchall() ``` 5. 遍历表名并获取每个字段名: ```python for table in tables: table_name = table[0] cursor.execute(f"PRAGMA table_info({table_name})") columns = cursor.fetchall() # 打印表名 print(f"表名: {table_name}") # 打印字段名 for column in columns: column_name = column[1] print(f"字段名: {column_name}") print() # 用于分隔每个的输出 ``` 6. 关闭游标和数据库连接: ```python cursor.close() conn.close() ``` 完整的代码示例: ```python import sqlite3 conn = sqlite3.connect('your_database.db') cursor = conn.cursor() cursor.execute("SELECT name FROM sqlite_master WHERE type='table'") tables = cursor.fetchall() for table in tables: table_name = table[0] cursor.execute(f"PRAGMA table_info({table_name})") columns = cursor.fetchall() print(f"表名: {table_name}") for column in columns: column_name = column[1] print(f"字段名: {column_name}") print() cursor.close() conn.close() ``` 记得将 `'your_database.db'` 替换为你实际的数据库文件路径。这段代码将输出数据库中每个表名字段名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值