@@ -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