0
我需要創建一個動態查詢來更新行,併爲用戶提供該行中存在的每個列的輸入窗口,然後在查詢中插入這些值。動態更新查詢
我只是不知道該如何去做,因爲我是編程新手。
這裏是我的代碼:
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:test.db");
c.setAutoCommit(true);
System.out.println("Opened database successfully");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
//Grabs the first,second and third column name which only is used if you are deleting from the SPJ table.
FirstColumn = rsmd.getColumnName(1);
SecondColumn = rsmd.getColumnName(2);
ThirdColumn = rsmd.getColumnName(3);
//Changes the query depending on what table you have chosen
if(tablename.equals("SPJ")) {
query = "UPDATE "+ tablename +" WHERE " + FirstColumn + " = '" + row1 + "' AND " + SecondColumn + " = '" + row2 + "' AND " + ThirdColumn + " = '" +row3+"'" ;
} else {
query = "UPDATE "+ tablename +" WHERE " + FirstColumn + " = '" + row + "' VALUES("+values+")";
}
int columnCount = rsmd.getColumnCount();
Object[] row = new Object[columnCount];
for (int i = 1; i <= columnCount; ++i) {
row[i - 1] = rs.getString(i); // Or even rs.getObject()
}
// runs the query.
stmt.executeUpdate(query);
//closes connections
stmt.close();
c.close();
我嘗試這樣做,給了我一個輸入面板,每列,並把它放入數組,但我得到附近WHERE的SQL語法錯誤? :/
int columnCount = rsmd.getColumnCount();
Object[] row = new Object[columnCount];
for (int i = 1; i <= columnCount; ++i) {
row[i-1] = JOptionPane.showInputDialog("Insert value: "+i); // Or even rs.getObject()
System.out.println(Arrays.toString(row));
}
}
您應該添加一個JDBC標記。 –