Skip to content

Commit f407b2f

Browse files
committed
Update SQL.java
1 parent 9e263d6 commit f407b2f

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

  • src/main/java/io/github/intisy/utils/custom

src/main/java/io/github/intisy/utils/custom/SQL.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,43 @@ public SimpleLogger getLogger() {
8787
return logger;
8888
}
8989

90+
public void deleteData(String tableName, String... whereClause) {
91+
String sql = buildDeleteStatement(tableName, whereClause);
92+
try (Statement statement = getConnection().createStatement()) {
93+
executeSQL(statement, sql, "delete data", Type.UPDATE);
94+
} catch (SQLException e) {
95+
logger.error("Delete failed: " + e.getMessage());
96+
throw new RuntimeException("Failed to delete data", e);
97+
}
98+
}
99+
100+
private String buildDeleteStatement(String tableName, String... whereClause) {
101+
StringBuilder sql = new StringBuilder("DELETE FROM ")
102+
.append(tableName);
103+
104+
if (whereClause.length > 0) {
105+
if (whereClause.length % 2 != 0) {
106+
throw new IllegalArgumentException("WHERE clause parameters must be in column-value pairs.");
107+
}
108+
109+
sql.append(" WHERE ");
110+
for (int i = 0; i < whereClause.length; i += 2) {
111+
if (i > 0) sql.append(" AND ");
112+
113+
sql.append(whereClause[i]);
114+
115+
// Check if the value is null and append accordingly
116+
if (whereClause[i + 1] == null) {
117+
sql.append(" IS NULL");
118+
} else {
119+
sql.append(" = '").append(whereClause[i + 1].replace("'", "''")).append("'");
120+
}
121+
}
122+
}
123+
124+
return sql.toString();
125+
}
126+
90127
private DatabaseType detectDatabaseType() {
91128
if (url.toLowerCase().contains("sqlite")) {
92129
return DatabaseType.SQLITE;

0 commit comments

Comments
 (0)