Ich habe eine Java SQL-Frage in Bezug auf die Einfügemethode. Wenn ich eine Datenbank mit mehreren Tabellen habe, möchte ich eine einzelne Einfügemethode schreiben, die eine Zeile mit Daten in jede ausgewählte Tabelle für jede Art von relationaler Datenbank einfügen kann. Wenn einige Tabellen verschiedene Datentypen enthalten, beispielsweise (Ganzzahl, Datum, Varchar und usw.). Meine Codes:wie Sie mit Java SQL in eine Datenbanktabelle mit unterschiedlichen Datentypen einfügen
public void insertData(String tablename, String... values)
throws SQLException {
Connection con = null;
PreparedStatement prepStmt = null;
if (values.length == 0) {
throw new SQLException("Must supply values");
}
try{
con = getConnection();
String sql = "insert into "+tablename+" values(";
for (int i = 0; i < values.length; i++) {
sql += "?";
if (i != values.length-1) sql += ",";
}
sql += ")";
prepStmt = con.prepareStatement(sql);
for (int i = 0; i < values.length; i++) {
prepStmt.setString(i, values[i]);
}
prepStmt.executeUpdate();
}
finally {
closeStatement(prepStmt);
closeConnection(con);
}
}
Zum Beispiel Anwendungsfall:
Tabelle Lehrer hat int id, varchar (50) Name, int Alter, Text Thema, int classid;
Tabelle Student hat int id, varchar (50) Name, Datum dateofbirth, Text Adresse;
Tabelle Klasse hat int id, Text Betreff;
Wenn ich benutze:
insertData(Teacher, new String[] {"10", "Cass", "32", "Math", "10222"});
fügt die Daten in die Tabelle erfolgreich? Ich habe gehört, dass die Datenbank nur Varchar verwendet. Wenn das der Fall ist, muss ich mich nicht um den Typ kümmern. Wenn der Typ Varchar ist, sollte ich prepStmt.setString() verwenden?
Ich muss mehrere verschiedene Arten von Datenbanken, wie SQL Server, MySQL, Oracle und andere unterstützen. Funktioniert diese insertData() -Methode für alle verschiedenen Datenbanken?
Sie uns sagen, ob der Code funktioniert oder nicht – haifzhan
@HaifengZhang Ich denke, es sollte funktionieren, aber ich habe keine Datenbank, um die Methode noch zu testen. Ich werde eines erstellen und es später testen, aber der schwierigste Teil ist, dass ich nicht wissen werde, welche genauen Typen in der Tabelle sein werden. Daher möchte ich eine einzige Methode erstellen, um die Insert-Datei zu verwenden, welche Datentypen in der ausgewählten Tabelle sind, da ich weiß, dass PreparedStatement setInt setString setBoolean ausführen kann. Ich habe gehört, PreparedStatement ist besser für die Abfrageausführung zu verwenden. –
Aber meine eigentliche Frage ist nicht zum Testen meiner Codes, ich werde meine Frage ändern. –