java - 使用 JDBC 动态向表中插入数据

标签 java jdbc

我在 mysql 数据库中有 1 个表,在 oracle 数据库中有另一个表。我正在编写一个实用程序来从一个表获取数据并将其插入到另一个表中。

以下是我在swing中设计的实用工具。

用于选择查询的文本区域; 另一个用于插入查询的Textarea; 一个名为加载数据的按钮。

现在,如果我单击加载数据,则选择应运行查询并获取数据。并执行插入查询插入到表中。

注意:由于它是一个实用工具,因此表名称是动态的。

我现在面临的问题是插入查询。如何动态查找表的 desc,以便在运行时使用 setString、setLong 等?

最佳答案

以下示例说明 ResultSetMetaData 对象如何告诉您有关所查询的表的信息:

import java.sql.*;

public class JDBCQuery {

    public static void main(String args[]) {
        Connection conn = null;
        Statement s = null;
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            conn = DriverManager.getConnection(
                    "jdbc:odbc:Driver={SQL Server};" + 
                    "Server=.\\SQLEXPRESS;" +
                    "Trusted_Connection=yes;" +
                    "Database=myDb");
            s = conn.createStatement();
            s.executeQuery("SELECT * FROM dbo.SalesSummary WHERE 0 = 1");
            ResultSet rs = s.getResultSet();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                System.out.println(String.format("-- Column %d --", i));
                System.out.println(String.format("Column name: %s", rsmd.getColumnName(i)));
                System.out.println(String.format("Database-specific type name: %s", rsmd.getColumnTypeName(i)));
                System.out.println(String.format("Column size (DisplaySize): %d", rsmd.getColumnDisplaySize(i)));
                System.out.println(String.format("java.sql.Type of column: %d", rsmd.getColumnType(i)));
                System.out.println();
            }
        } catch( Exception e ) {
            e.printStackTrace();
        } finally {
            try {
                if (s != null) {
                    s.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch( Exception e ) {
                e.printStackTrace();
            }
        }
    }
}

这是输出:

-- Column 1 --
Column name: Item
Database-specific type name: nvarchar
Column size (DisplaySize): 255
java.sql.Type of column: -9

-- Column 2 --
Column name: FiscalYear
Database-specific type name: int
Column size (DisplaySize): 11
java.sql.Type of column: 4

-- Column 3 --
Column name: Quarter
Database-specific type name: int
Column size (DisplaySize): 11
java.sql.Type of column: 4

-- Column 4 --
Column name: Sales
Database-specific type name: money
Column size (DisplaySize): 21
java.sql.Type of column: 3

可以获取 java.sql.Types 的完整列表 here .

关于java - 使用 JDBC 动态向表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817363/

相关文章:

java - 从数组中播放android中的mp3文件

java - 如何在 Java 8 中迭代 JSONArray

java - 获取 GPS 位置时,加载另一个 URL

java - 从 Intellij 编译项目时在 Maven 项目上获取 "no groovy library is defined for module"

maven - 无法通过JDBC在Hive服务器2上执行查询

java - JDBC setNetworkTimeout() 什么时候触发?

Java preparedStatement设置

oracle - 如何使用 SSL 和 JDBC 设置 Oracle

java - 我无法理解 java.sql.date 的文档

java - 无法在 Spring Boot 2.0.1 中禁用 Spring Security