我想使用Java将用户提供的输入插入Sql表,但不知道需要多少列。
如。
insert into table_name values('"+id+"','"+name+"')
这个查询不起作用,因为我不知道列名,即ID,name。
我想要一个对任何插入数据都通用的查询。
我认为没有任何普遍的疑问。
如果你不知道列名,你可以使用元数据找到列名。
您可以获取连接的元数据(数据库)
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);
}
通过这种方式,您可以找到列名并动态创建查询。
根据我的需要,我尝试了这个代码。我希望它对所有人都有效。
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数据库。我正在使用以下代码从数据库中获取数据,并且工作正常。 为了插入数据,我尝试了上面的代码,仅替换了 与 但是它显示出一些错误。您能告诉我代码中的问题在哪里吗? 谢谢 :) 问题答案: 如果您的主键是自动递增,则可以尝试此操作;