Hallo Leute,
möchte über das Webgadget schnell auf eine SQLite Database zugreifen und mir Daten anzeigen!
Hat damit jemand schon Erfahrung?
Gruss ... Velindos
SQLite über Webgadget auslesen
SQLite über Webgadget auslesen
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: SQLite über Webgadget auslesen
Da gibt es 2 Möglichkeiten. Die eine ist es, mit Hilfe der WinAPI die Kommunikation zwischen Javascript und PB herzustellen. Müsste mal im Forum schauen, wie das ging. Gab einen Thread von mir dazu, wo das beantwortet wurde.
Die 2. Möglichkeit wäre es, per IndexedDB (WebSQL - http://stackoverflow.com/questions/1098 ... e-database) über JS und HTML direkt zu machen. Dazu musst du aber sicherstellen, das der IE 9 minimum installiert ist und das auch per Reg dein Programm den Engine-Zugang zur 9er bekommt.
Wenn du es unter Linux machst, müsste das Webgadget, da es auf WebKit aufsetzt direkten Zugang zu IndexedDB bzw. WebSQL haben.
Die 2. Möglichkeit wäre es, per IndexedDB (WebSQL - http://stackoverflow.com/questions/1098 ... e-database) über JS und HTML direkt zu machen. Dazu musst du aber sicherstellen, das der IE 9 minimum installiert ist und das auch per Reg dein Programm den Engine-Zugang zur 9er bekommt.
Wenn du es unter Linux machst, müsste das Webgadget, da es auf WebKit aufsetzt direkten Zugang zu IndexedDB bzw. WebSQL haben.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: SQLite über Webgadget auslesen
Du meinst, das WebGadget als Client, weil die Datenbankabfrage wird normallerweise auf der Server-Seite ausgeführt,
z.B. per PHP oder CGI (anders geht es ja auch gar nicht).
z.B. per PHP oder CGI (anders geht es ja auch gar nicht).
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: SQLite über Webgadget auslesen
Ich verstehe es so, das er eine Anwendung schreiben will, die Daten in einer SQLite Datenbank speichert und das Webgadget als HTML GUI verwendet. Und er brauch jetzt die Kommunikation zwischen HTML/CSS/Javascript und der SQLite Datenbank.
Wenn du wie gesagt Wert auf die HTML-GUI legst, schau mal, ob du das ganze als WebApp aufsetzen kannnst (wenn es nur darum geht). Wenn du aber noch anderweitig PB nutzen musst, dann wirst du um einen API-Hack des Gadgets nicht herumkommen oder per Callback und SetGadgetAttribute arbeiten.
Der Hack ist hier beschrieben: http://forums.purebasic.com/german/view ... +erweitern
Wenn du nur Daten einlesen willst, kannst du auch mit SetGadgetAttribute den HTML-Code selbst einfügen. Geht aber nur unter Windoof. Über das Navigation-Callback kannst du die Abfragen Triggern. So bekommst du allerdings in die Datenbank nicht viel rein. Denn der Callback kann Daten nur per Get übergeben und das ist an Limitierungen gekoppelt. Diese liegen bei 2048 Zeichen, wobei diese Anzahl auch gleich die Entities mit einschließt (z.B. %20 als 3 Zeichen). Das kannst du aber so lange du im Kontext der Anwendung bleibt optimieren mit: x://a=wert&b=wert
Also nur kurze Buchstaben. Die kannst du mit der HTTP-Bibliothek dann nach und nach herauslösen. Du kannst natürlich testen, ob diese Limitierung sich auch auf das Gadget außerhalb des HTTP-Protokolls bezieht. Wenn nicht kannst du dir auch das Hacken komplett sparen. Und wenn du in XHTML 1.0 Strict bzw. XHTML 1.1 arbeitest, solltest du den HTML-Code mit der XML-Bibliothek parsen können. Dann kannst du die Daten getrost auch in einzelne Bestandteile der HTML-Seite einfügen, anstatt alles neu einzulesen.
Wenn du wie gesagt Wert auf die HTML-GUI legst, schau mal, ob du das ganze als WebApp aufsetzen kannnst (wenn es nur darum geht). Wenn du aber noch anderweitig PB nutzen musst, dann wirst du um einen API-Hack des Gadgets nicht herumkommen oder per Callback und SetGadgetAttribute arbeiten.
Der Hack ist hier beschrieben: http://forums.purebasic.com/german/view ... +erweitern
Wenn du nur Daten einlesen willst, kannst du auch mit SetGadgetAttribute den HTML-Code selbst einfügen. Geht aber nur unter Windoof. Über das Navigation-Callback kannst du die Abfragen Triggern. So bekommst du allerdings in die Datenbank nicht viel rein. Denn der Callback kann Daten nur per Get übergeben und das ist an Limitierungen gekoppelt. Diese liegen bei 2048 Zeichen, wobei diese Anzahl auch gleich die Entities mit einschließt (z.B. %20 als 3 Zeichen). Das kannst du aber so lange du im Kontext der Anwendung bleibt optimieren mit: x://a=wert&b=wert
Also nur kurze Buchstaben. Die kannst du mit der HTTP-Bibliothek dann nach und nach herauslösen. Du kannst natürlich testen, ob diese Limitierung sich auch auf das Gadget außerhalb des HTTP-Protokolls bezieht. Wenn nicht kannst du dir auch das Hacken komplett sparen. Und wenn du in XHTML 1.0 Strict bzw. XHTML 1.1 arbeitest, solltest du den HTML-Code mit der XML-Bibliothek parsen können. Dann kannst du die Daten getrost auch in einzelne Bestandteile der HTML-Seite einfügen, anstatt alles neu einzulesen.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: SQLite über Webgadget auslesen
Ich habe eben auf Limitierung getestet. Sie besteht auch beim Gadget. Also maximal 2048 Zeichen möglich.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Re: SQLite über Webgadget auslesen
Hallo Leute, danke für eure Hilfe,
habe hier mal ein Beispiel, was im Webgadget probleme macht! Im Chrome funktioniert die Sache, bin jetzt kein Spezialist! Dürfte auch am Firefox liegen!
Gruss ... Velindos
habe hier mal ein Beispiel, was im Webgadget probleme macht! Im Chrome funktioniert die Sache, bin jetzt kein Spezialist! Dürfte auch am Firefox liegen!
Code: Alles auswählen
<!DOCTYPE html>
<html>
<head>
<style>
body {
color: #222;
font: 14px Arial;
}
body a {
color: #3D5C9D;
text-decoration: none;
}
</style>
<script>
var html5rocks = {};
html5rocks.webdb = {};
html5rocks.webdb.db = null;
html5rocks.webdb.open = function() {
var dbSize = 5 * 1024 * 1024; // 5MB
html5rocks.webdb.db = openDatabase("F:\Desktop\DeskTodo.db", "1.0", "Todo manager", dbSize);
}
html5rocks.webdb.createTable = function() {
var db = html5rocks.webdb.db;
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS todo(ID INTEGER PRIMARY KEY ASC, todo TEXT, added_on DATETIME)", []);
});
}
html5rocks.webdb.addTodo = function(todoText) {
var db = html5rocks.webdb.db;
db.transaction(function(tx){
var addedOn = new Date();
tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?,?)",
[todoText, addedOn],
html5rocks.webdb.onSuccess,
html5rocks.webdb.onError);
});
}
html5rocks.webdb.onError = function(tx, e) {
alert("There has been an error: " + e.message);
}
html5rocks.webdb.onSuccess = function(tx, r) {
// re-render the data.
html5rocks.webdb.getAllTodoItems(loadTodoItems);
}
html5rocks.webdb.getAllTodoItems = function(renderFunc) {
var db = html5rocks.webdb.db;
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM todo", [], renderFunc,
html5rocks.webdb.onError);
});
}
html5rocks.webdb.deleteTodo = function(id) {
var db = html5rocks.webdb.db;
db.transaction(function(tx){
tx.executeSql("DELETE FROM todo WHERE ID=?", [id],
html5rocks.webdb.onSuccess,
html5rocks.webdb.onError);
});
}
function loadTodoItems(tx, rs) {
var rowOutput = "";
var todoItems = document.getElementById("todoItems");
for (var i=0; i < rs.rows.length; i++) {
rowOutput += renderTodo(rs.rows.item(i));
}
todoItems.innerHTML = rowOutput;
}
function renderTodo(row) {
return "<li>" + row.todo + " [<a href='javascript:void(0);' onclick='html5rocks.webdb.deleteTodo(" + row.ID +");'>Delete</a>]</li>";
}
function init() {
html5rocks.webdb.open();
html5rocks.webdb.createTable();
html5rocks.webdb.getAllTodoItems(loadTodoItems);
}
function addTodo() {
var todo = document.getElementById("todo");
html5rocks.webdb.addTodo(todo.value);
todo.value = "";
}
</script>
</head>
<body onload="init();">
<ul id="todoItems">
</ul>
<form type="post" onsubmit="addTodo(); return false;">
<input type="text" id="todo" name="todo" placeholder="What do you need to do?" style="width: 200px;" />
<input type="submit" value="Add Todo Item"/>
</form>
</body>
</html>
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: SQLite über Webgadget auslesen
Schau mal in der Konsole nach, welcher Fehler dir der FF ausgibt. Du findest diese unter den "Web-Entwickler" Tools unter "Web-Konsole". Darüber erklärt sich das meiste schon 

PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node