1
1
<!DOCTYPE html>
2
- < html lang ="en ">
2
+ < html lang ="en-US " dir =" ltr ">
3
3
< head >
4
4
< meta charset ="UTF-8 ">
5
5
< meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6
6
< title > SQLite Browser</ title >
7
- < link href ="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css " rel ="stylesheet ">
8
- < script src ="https://cdn.jsdelivr.net/npm/@sqlite.org/sqlite-wasm@3.46.1-build4/sqlite-wasm/jswasm/sqlite3.mjs " type ="module "> </ script >
9
- < style >
10
- # tableList {
11
- max-height : 300px ;
12
- overflow-y : auto;
13
- }
14
- table {
15
- margin-top : 20px ;
16
- }
17
- </ style >
7
+ < link type ="text/css " rel ="stylesheet " href ="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css ">
8
+ < link type ="text/css " rel ="stylesheet " href ="style.css ">
9
+ < script type ="module " src ="https://cdn.jsdelivr.net/npm/@sqlite.org/sqlite-wasm@3.46.1-build4/sqlite-wasm/jswasm/sqlite3.mjs "> </ script >
18
10
</ head >
19
11
< body >
20
12
< div class ="container my-5 ">
@@ -39,100 +31,6 @@ <h5>SQL Query</h5>
39
31
</ div >
40
32
</ div >
41
33
42
- < script type ="module ">
43
- import sqlite3InitModule from 'https://cdn.jsdelivr.net/npm/@sqlite.org/sqlite-wasm@3.46.1-build4/sqlite-wasm/jswasm/sqlite3.mjs' ;
44
-
45
- let db ;
46
-
47
- document . getElementById ( 'dbFile' ) . addEventListener ( 'change' , async ( event ) => {
48
- const file = event . target . files [ 0 ] ;
49
- if ( ! file ) return ;
50
-
51
- const arrayBuffer = await file . arrayBuffer ( ) ;
52
- const sqlite3 = await sqlite3InitModule ( {
53
- print : console . log ,
54
- printErr : console . error
55
- } ) ;
56
-
57
- db = new sqlite3 . oo1 . DB ( new Uint8Array ( arrayBuffer ) ) ;
58
- loadTables ( ) ;
59
- } ) ;
60
-
61
- async function loadTables ( ) {
62
- if ( ! db ) return ;
63
-
64
- try {
65
- const tables = db . selectObjects ( `
66
- SELECT name
67
- FROM sqlite_master
68
- WHERE type='table' AND name NOT LIKE 'sqlite_%';
69
- ` ) ;
70
-
71
- const tableList = document . getElementById ( 'tableList' ) ;
72
- tableList . innerHTML = '' ;
73
-
74
- tables . forEach ( ( table ) => {
75
- const li = document . createElement ( 'li' ) ;
76
- li . className = 'list-group-item list-group-item-action' ;
77
- li . textContent = table . name ;
78
- li . addEventListener ( 'click' , ( ) => browseTable ( table . name ) ) ;
79
- tableList . appendChild ( li ) ;
80
- } ) ;
81
- } catch ( err ) {
82
- alert ( `Error loading tables: ${ err . message } ` ) ;
83
- }
84
- }
85
-
86
- async function browseTable ( tableName ) {
87
- if ( ! db ) return ;
88
-
89
- const query = `SELECT * FROM ${ tableName } ;` ;
90
- executeSQL ( query ) ;
91
- }
92
-
93
- document . getElementById ( 'executeQuery' ) . addEventListener ( 'click' , ( ) => {
94
- const query = document . getElementById ( 'query' ) . value ;
95
- executeSQL ( query ) ;
96
- } ) ;
97
-
98
- function executeSQL ( query ) {
99
- if ( ! db ) return ;
100
-
101
- try {
102
- const results = db . selectObjects ( query ) ;
103
- displayResults ( results ) ;
104
- } catch ( err ) {
105
- document . getElementById ( 'queryResult' ) . innerHTML = `<div class="alert alert-danger">Error: ${ err . message } </div>` ;
106
- }
107
- }
108
-
109
- function displayResults ( results ) {
110
- const resultDiv = document . getElementById ( 'queryResult' ) ;
111
- if ( results . length === 0 ) {
112
- resultDiv . innerHTML = '<div class="alert alert-info">No results found.</div>' ;
113
- return ;
114
- }
115
-
116
- let columns = Object . keys ( results [ 0 ] ) ;
117
- let tableHtml = '<table class="table table-striped">' ;
118
- tableHtml += '<thead><tr>' ;
119
-
120
- columns . forEach ( ( column ) => {
121
- tableHtml += `<th>${ column } </th>` ;
122
- } ) ;
123
- tableHtml += '</tr></thead><tbody>' ;
124
-
125
- results . forEach ( ( row ) => {
126
- tableHtml += '<tr>' ;
127
- columns . forEach ( ( column ) => {
128
- tableHtml += `<td>${ row [ column ] } </td>` ;
129
- } ) ;
130
- tableHtml += '</tr>' ;
131
- } ) ;
132
-
133
- tableHtml += '</tbody></table>' ;
134
- resultDiv . innerHTML = tableHtml ;
135
- }
136
- </ script >
34
+ < script type ="module " src ="script.js "> </ script >
137
35
</ body >
138
36
</ html >
0 commit comments