使用Java Netbeans将数据插入到Sql中

时间:2016-06-06 05:50:47

标签: java sql sql-server jdbc

我想使用Java将用户给出的输入插入到Sql Table中,但是不知道需要多少coloumn。

例如。

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

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

我想要任何插入数据的通用查询。

2 个答案:

答案 0 :(得分:0)

我认为没有任何通用的查询。

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

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

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);
}

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

答案 1 :(得分:0)

根据我的需要,我尝试了这段代码。我希望能为所有人工作。

void getTableInput(String tname,String dname)抛出ClassNotFoundException,SQLException {         this.tname = tname;         this.dname = dname;         扫描仪s =新扫描仪(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");

}

但问题是这个问题。这只能插入String数据类型。