Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据表结构在运行时动态创建CRUD表单_Java_Mysql_Swing - Fatal编程技术网

Java 根据表结构在运行时动态创建CRUD表单

Java 根据表结构在运行时动态创建CRUD表单,java,mysql,swing,Java,Mysql,Swing,我被困在一个问题上,我一直在谷歌搜索,阅读了不少资源,现在感觉到了方向 这是我的问题。 我正在开发一个类似于CRUD应用程序的应用程序,用于MySQL数据库,具有可变的表和结构,我不能有固定数量的表和结构 我在为变量表结构创建表单方面没有方向性。我想要实现的是,当用户从组合框中选择表名时,在检索特定表的表结构后,应该创建相关字段的数量 迄今取得的成就: -我已经能够获取表的结构/模式、数据类型和数据。 -可以编写查询来创建、更新、删除相同的内容 无法在以下方面取得成功: -我想创建JTextFi

我被困在一个问题上,我一直在谷歌搜索,阅读了不少资源,现在感觉到了方向

这是我的问题。 我正在开发一个类似于CRUD应用程序的应用程序,用于MySQL数据库,具有可变的表和结构,我不能有固定数量的表和结构

我在为变量表结构创建表单方面没有方向性。我想要实现的是,当用户从组合框中选择表名时,在检索特定表的表结构后,应该创建相关字段的数量

迄今取得的成就: -我已经能够获取表的结构/模式、数据类型和数据。 -可以编写查询来创建、更新、删除相同的内容

无法在以下方面取得成功: -我想创建JTextField,该JTextField具有与表中关联的列名相关的唯一对象名JTextField。 -列名是字符串类型,如何将它们转换为JTextField的对象

比如说

String f1 = "fieldname_1";  // In reality these string values will be fetched from database resultset containing column names as identifier.
String f2 = "fieldname_2";  // In reality these string values will be fetched from database resultset containing column names as identifier.
JTextField f1 = new JTextField ();

or 

String[] f = {"fieldname_1", "fieldname_2"}; 
JTextField f[0] = new JTextField ();
但它会给出错误,如f1已定义

注意:我希望输入字段名是唯一的,以便在输入后更容易访问这些数据

欢迎对问题进行更正,如果我处理问题的方法是错误的,请给出一个简单的想法/方法,以朝着正确的方向进行


关于

您不能基于列名创建唯一的变量名

相反,您可以创建一个
HashMap
,将列名映射到表单中使用的文本字段:

HashMap<String, JTextField> textFields = new HashMap<String, JTextField>();
当然,您需要修改以获得想要使用的正确布局

然后,当您想要访问给定列的文本字段时,可以使用:

JTextField textField = textFields.get(columnName);

我想创建JTextField,该JTextField具有与表中关联的列名相关的唯一对象名
==或
JTextField textField = textFields.get(columnName);