当前位置: 首页 > 知识库问答 >
问题:

使用Java Netbeans将数据插入Sql

凌志学
2023-03-14

我想使用Java将用户提供的输入插入Sql表,但不知道需要多少列。

如。

insert into table_name values('"+id+"','"+name+"')

这个查询不起作用,因为我不知道列名,即ID,name。

我想要一个对任何插入数据都通用的查询。

共有2个答案

贺君浩
2023-03-14

我认为没有任何普遍的疑问。

如果你不知道列名,你可以使用元数据找到列名。

您可以获取连接的元数据(数据库)

DatabaseMetaData databaseMetaData = connection.getMetaData();

您还可以获得表格列表。

String   catalog          = null;
String   schemaPattern    = null;
String   tableNamePattern = null;
String[] types            = null;

ResultSet result = databaseMetaData.getTables(
    catalog, schemaPattern, tableNamePattern, types );

while(result.next()) {
    String tableName = result.getString(3);
}

在表中列出列名。

String   catalog           = null;
String   schemaPattern     = null;
String   tableNamePattern  = "my_table";
String   columnNamePattern = null;


ResultSet result = databaseMetaData.getColumns(
    catalog, schemaPattern,  tableNamePattern, columnNamePattern);

while(result.next()){
    String columnName = result.getString(4);
    int    columnType = result.getInt(5);
}

通过这种方式,您可以找到列名并动态创建查询。

谭刚毅
2023-03-14

根据我的需要,我尝试了这个代码。我希望它对所有人都有效。

void getTableInput(String tname,String dname)抛出ClassNotFoundException,SQLException{this.tname=tname;this.dname=dname;Scanner s=new Scanner(System.in);

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    String conURL = "jdbc:sqlserver://localhost:1433;databaseName=" + this.dname + ";user=JT_DATA;password=1234";
    Connection con = DriverManager.getConnection(conURL);

    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("SELECT * FROM " + this.tname);
    ResultSetMetaData rsmd = rs.getMetaData();
    int colNo = rsmd.getColumnCount();
    String colName[] = new String[colNo];




    String[] get_User_Input = new String[100];
    for (int i = 1; i <=colNo; i++) 
    {
        colName[i-1] = rsmd.getColumnLabel(i);
        System.out.print(Arrays.toString(colName) + " : ");
        get_User_Input[i-1] = s.next();
    }
    String store="";
    for(int i=0;i<colNo;i++)
    {
        store += "'"+get_User_Input[i]+"',";
    }
    store = store.substring(0,store.length() -1);
    PreparedStatement pst = con.prepareStatement("insert into "+this.tname+" values ("+ store +")");
    pst.executeUpdate();
    System.out.println("Data Inserted");

}

但问题是。这只能插入字符串数据类型。

 类似资料:
  • 问题内容: 我想使用PreparedStatement将行插入表中。该表有3列(int,String,String)。关键是int列是AUTO_INCREMENT,所以我想将该变量保留为空,然后让数据库完成该工作(这是一个id)。还没有找到如何做! 这是一个MySQL数据库。 问题答案: 这是相对简单的,只需从列列表中删除自动增量列即可: 准备该语句,设置两个参数,然后在非查询模式下执行。

  • 问题内容: 我使用Google Maps API制作了一个非常简单的页面,其中有几个字段,用户将在其中放置一些数据。看起来像- http://aiworker2.usask.ca/marker_field_db.html 我要做的是使用javascript / Ajax将数据存储到MySQL数据库中。我发现了几个使用Jquery的示例。我是这个javascript / Ajax / Jquery平

  • 我有一个postgres数据库,包含一个名为“users”的表。该表有四个字段: id BIGSERIAL主键 显示名称文本不为空, 电子邮件文本不为空 电话号码文本 我想从dart代码中添加数据。我的尝试是这样的: 问题是我遇到了一个例外 (PostgreSQLSeverity.error 42601:在“display_name”处或附近出现语法错误)

  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错

  • 我创建了一个模型使用在sql炼金术如下所示。 然后我将同一个模型移植到Snowflake数据库。 该模型有一个字段,声明为和。当我尝试插入数据到表使用雪花控制台。我必须提供,否则它不会插入数据并返回错误。 查询(成功执行,其中提供了)- 查询(当我完全忽略列时成功执行)- 查询(执行失败,其中为空)- 它返回了一个错误- 此方法的任务是将数据插入上述数据库表中。 来自SQLAlChemy的错误-

  • 问题内容: 我正在尝试使用Java将数据插入mysql数据库。我正在使用以下代码从数据库中获取数据,并且工作正常。 为了插入数据,我尝试了上面的代码,仅替换了 与 但是它显示出一些错误。您能告诉我代码中的问题在哪里吗? 谢谢 :) 问题答案: 如果您的主键是自动递增,则可以尝试此操作;