feat: add execute_batch command for executing multiple SQL statements in a single call

This commit is contained in:
t8y2
2026-04-30 09:42:34 +08:00
parent 125793bd62
commit cd273441a3
5 changed files with 63 additions and 5 deletions
+14 -4
View File
@@ -353,10 +353,12 @@ function deleteSelectedRow() {
}
function escapeVal(v: CellValue): string {
if (v === null) return "NULL";
if (v === null || v === undefined) return "NULL";
if (typeof v === "boolean") return v ? "TRUE" : "FALSE";
if (typeof v === "number") return String(v);
return `'${String(v).replace(/'/g, "''")}'`;
if (typeof v === "number" && Number.isFinite(v)) return String(v);
const s = String(v);
if (s === "") return "''";
return `'${s.replace(/\\/g, "\\\\").replace(/'/g, "''")}'`;
}
function qualifiedTableName(): string {
@@ -407,7 +409,15 @@ async function saveChanges() {
const stmts = generateSaveStatements();
if (stmts.length === 0) return;
saveError.value = "";
if (props.onExecuteSql) {
if (props.connectionId && props.database) {
try {
await api.executeBatch(props.connectionId, props.database, stmts);
} catch (e: any) {
saveError.value = String(e.message || e);
return;
}
} else if (props.onExecuteSql) {
try {
for (const sql of stmts) {
await props.onExecuteSql(sql);
+4
View File
@@ -73,6 +73,10 @@ export async function executeQuery(connectionId: string, database: string, sql:
return invoke("execute_query", { connectionId, database, sql });
}
export async function executeBatch(connectionId: string, database: string, statements: string[]): Promise<QueryResult> {
return invoke("execute_batch", { connectionId, database, statements });
}
export async function listIndexes(connectionId: string, database: string, schema: string, table: string): Promise<IndexInfo[]> {
return invoke("list_indexes", { connectionId, database, schema, table });
}