quadWorks

über Mac, iPhone und Webrauschen – Software, Tipps, Ratgeber

Javascript: SQLite-Bibliothek

Gepostet am| 20. Juli 2014 | Keine Kommentare

Hier der Quellcode zu einer kleinen SQLite-Bibliothek für Javscript. Sollte eigentlich alles selbsterklärend sein…

// UseSQLiteDatabase()

const dbSize = 5 * 1024 * 1024; // 5MB

function UseSQLiteDataBase() {
SQLiteDataBase = {};
SQLiteDataBase.webdb = {};
SQLiteDataBase.webdb.db = null;
SQLiteDataBase.lastError = “”;
SQLiteDataBase.currentRow = 0;
}

// Result = OpenDatabase(#Database, DatabaseName$, User$, Password$ [, Plugin])
function OpenDatabase(Database,DatabaseName,user,Password) {
SQLiteDataBase.webdb.db = openDatabase(DatabaseName, “1.0″, DatabaseName, dbSize);
db = SQLiteDataBase.webdb.db;
// this one is needed, to initialize the onSucces, onError-functions
db.transaction(function(tx) { tx.executeSql(“SELECT 1″, [], SQLiteDataBase.webdb.onSuccess, SQLiteDataBase.webdb.onError); });
}

// Result = DatabaseUpdate(#Database, Request$)
function DatabaseUpdate(Database, Request) {
db.transaction(function(tx) { tx.executeSql(Request, [], SQLiteDataBase.webdb.onSuccess, SQLiteDataBase.webdb.onError); });
}

// CloseDatabase(#Database)
function CloseDatabase(Database) {
SQLiteDataBase.webdb.db = null;
SQLiteDataBase.webdb = null;
SQLiteDataBase.result = null;
SQLiteDataBase.lastError = null;
SQLiteDataBase = null;
db = null;
}

// Result = DatabaseQuery(#Database, Request$)
function DatabaseQuery(Database, Request) {
SQLiteDataBase.webdb.getItems = function(renderFunc) {
db.transaction(function(tx) { tx.executeSql(Request, [], renderFunc, SQLiteDataBase.webdb.onError); });
}
}

// Text$ = DatabaseColumnName(#Database, Column)
function DatabaseColumnName(Database, Column) {
var keys = Object.keys(SQLiteDataBase.result[0]);
return keys[Column];
}

// Result = DatabaseColumnIndex(#Database, ColumnName$)
function DatabaseColumnIndex(Database, ColumnName) {
var keys = Object.keys(SQLiteDataBase.result[0]);
keys = keys.toString();
keys = keys.split(“,”);
for (var i=0; i < keys.length; i++) {
if (ColumnName == keys[i]) { return i; }
}
}

// Result = ExamineDatabaseDrivers()
function ExamineDatabaseDrivers() {
return 1;
}

// Result = NextDatabaseDriver()
function NextDatabaseDriver() {
return 0;
}

// Text$ = DatabaseDriverName()
function DatabaseDriverName() {
return “Web-SQLite.”;
}

// Text$ = DatabaseDriverDescription()
function DatabaseDriverDescription() {
return “HTML5-Database, SQLite-based.”;
}

// Error$ = DatabaseError()
function DatabaseError() {
return SQLiteDataBase.lastError;
}

// Text$ = GetDatabaseString(#Database, Column)
function GetDatabaseString(Database, Column) {
var values = Object.keys(SQLiteDataBase.result[SQLiteDataBase.currentRow]).map(function (key) { return SQLiteDataBase.result[SQLiteDataBase.currentRow][key]; });
return values[Column];
}

// Result.d = GetDatabaseDouble(#Database, Column)
function GetDatabaseDouble(Database, Column) {
return parseFloat(GetDatabaseString(Database,Column));
}

// Result.f = GetDatabaseFloat(#Database, Column)
function GetDatabaseFloat(Database, Column) {
return parseFloat(GetDatabaseString(Database,Column));
}

// Result = GetDatabaseLong(#Database, Column)
function GetDatabaseLong(Database, Column) {
return parseInt(GetDatabaseString(Database,Column));
}

// Result = GetDatabaseQuad(#Database, Column)
function GetDatabaseQuad(Database, Column) {
return parseInt(GetDatabaseString(Database,Column));
}

// Result = FirstDatabaseRow(#Database)
function FirstDatabaseRow(Database) {
var count = DatabaseColumns(Database);
if (count != 0) { SQLiteDataBase.currentRow = 0; }
return count;
}

// Text$ = CheckDatabaseNull(#Database, Column) !!!
function CheckDatabaseNull(Database, Column) {
}

// Result = AffectedDatabaseRows(#Database)
function AffectedDatabaseRows(Database) {
return SQLiteDataBase.result.length;
}

// Result = NextDatabaseRow(#Database)
function NextDatabaseRow(Database) {
if (SQLiteDataBase.result.length == SQLiteDataBase.currentRow ) { return 0; }
SQLiteDataBase.currentRow++;
}

// Result = PreviousDatabaseRow(#Database)
function PreviousDatabaseRow(Database) {
if (SQLiteDataBase.currentRow < 1 ) { return 0; }
SQLiteDataBase.currentRow–;
}

// FinishDatabaseQuery(#Database)
function FinishDatabaseQuery(Database) {
SQLiteDataBase.result = null;
SQLiteDataBase.lastError = null;
SQLiteDataBase.currentRow = null;
}

// Result = DatabaseColumns(#Database)
function DatabaseColumns(Database) {
var keys = Object.keys(SQLiteDataBase.result[0]);
return keys.length;
}

// hier alle Einträge pushen
function loaddbitems(tx, rs) {
SQLiteDataBase.result = null;
SQLiteDataBase.result = new Array();
for (var i=0; i < rs.rows.length; i++) { SQLiteDataBase.result.push(rs.rows.item(i)); }
}

UseSQLiteDataBase();
OpenDatabase(null,”test”);
//DatabaseUpdate(null,”CREATE TABLE IF NOT EXISTS todo (ID INTEGER PRIMARY KEY ASC, todo TEXT, added_on DATETIME)”);
//DatabaseUpdate(null,”INSERT INTO todo (todo, added_on) VALUES (‘Hallo’,1234567)”);
DatabaseQuery(null,”SELECT * FROM todo”);
//CloseDatabase();
setTimeout(function() {alert(typeof(GetDatabaseString(null,1)));},1000);

SQLiteDataBase.webdb.onError = function(tx, e) {
SQLiteDataBase.lastError = e.message;
}

SQLiteDataBase.webdb.onSuccess = function(tx, r) {
SQLiteDataBase.webdb.getItems(loaddbitems);
}

Werbung

Flash-Player Installation offline

Gepostet am| 29. Juli 2013 | Keine Kommentare

Der Download-Manager von Adobe Flash macht regelmäßig Probleme. Es gibt jedoch auch einen offline-Installer, den Adobe gut versteckt.

Spotlight-Index neu aufbauen

Gepostet am| 3. Juli 2013 | Keine Kommentare

Manchmal kommt es vor, dass sich die OS X Suche Spotlight spotlight verschluckt oder nicht mehr korrekt funktioniert. Dann hilft eine kleine Zeile im Terminal:

sudo mdutil -E /

Andere Volumes können auch neu indiziert werden. Dazu, z.B. für die Festplatte FILM das hier eingeben:

sudo mdutil -E /Volumes/FILM

Die Neuindizierung dauert etwas länger, aber danach sollte alles wieder funktionieren.

Backspace für Safari 6: Zurück zur vorigen Seite

Gepostet am| 29. Juni 2013 | Keine Kommentare

In Safari 6 scheint die Backspace (Rückschritt?)-Taste zum Navigieren nicht zu funktionieren. Bisher führte ein Druck darauf nämlich zur vorigen Seite. Da aber einige Benutzer dabei Text aus Textfelder löschten, hat Apple das Verhalten geändert.

Um die Funktion dieser Taste wieder herzustellen, einfach im Terminal das hier eingeben:

defaults write com.apple.Safari NSUserKeyEquivalents -dict-add Back "\U232b"

Um das Ganze rückgängig zu machen, das Folgende:

defaults delete com.apple.Safari NSUserKeyEquivalents

Dumm dabei ist, dass alle Tastaturkommandos gelöscht werden. Daher lohnt es sich, zuerst einen Tastaturkurzbefehl in den Systemeinstellungen für das “Zurück”-Kommando vorzunehmen. So sieht das Ganze dann aus:

Tastaturkurzbefehl für Safari einrichten.

Tastaturkurzbefehl für Safari einrichten.

Anschließend lässt sich die Navigation mittels der Systemeinstellungen wieder zurücksetzen, ohne andere Befehle zu verlieren.

Werbung

Symbolische Links für die Dropbox

Gepostet am| 21. Juni 2013 | Keine Kommentare

Wer sein bekanntes Schema im Dokumente-Ordner nicht aufbrechen will, aber trotzdem alle möglichen Dateien mit Dropbox synchronisieren möchte, kann dies mit symbolischen Links probieren. Das geht sogar recht leicht…
Mehr…

Kopieren von Text aus der Quick-Look-Vorschau

Gepostet am| 3. Juni 2013 | Keine Kommentare

Manchmal würde es Sinn machen, aus einer Quick-Look-Vorschau einzelne Textpassagen herauskopieren zu können. Das geht, aber erst nach dem Freischalten.

Im Terminal das Folgende eingeben:

defaults write com.apple.finder QLEnableTextSelection -bool TRUE

und

killall Finder

Anschließend lässt sich aus Textdateien markierter Text per Copy and Paste herausnehmen und andernorts wieder einfügen.

Doppelte Einträge im Finder-Menü “Öffnen Mit” entfernen

Gepostet am| 1. April 2013 | Keine Kommentare

Wer im Finder des öfteren die Funktion “Öffnen Mit” nutzt, kennt das Problem: Doppelte Einträge. Das lässt sich korrigieren.

Mehr…

Werbung

Shuttle KD20 – Kopierprobleme lösen

Gepostet am| 18. Februar 2013 | Keine Kommentare

Seit Kurzem besitze ich ein Shuttle KD20. Das habe ich angeschafft, um zuhause meine Medien wie MP3, Fotos und Videodateien übers Netzwerk streamen zu können. Die Doppelfestplatte mit RAID 1 sollte dabei die Datensicherheit gewährleisten.

Bei den ersten Gehversuchen fiel nun auf, dass externe Festplatten nicht per Autocopy übertragen werden können – eigentlich ein Totschlagargument, wenn es nicht geht. Nun liegt es aber seltsamerweise an der verwendeten Zeichensatztabelle, die Mehr…

Logitech Ultrathin Keyboard Mini

Gepostet am| 5. Februar 2013 | Keine Kommentare

Logitech hat nun auch ein Case mit Tastatur fürs iPad Mini vorgestellt. Für 79,99 Euro gibt es die Hülle passend zum iPad in schwarz und weiß.

Keyboard für Ipad Mini von Logitech (Foto: Logitech)

Keyboard für Ipad Mini von Logitech (Foto: Logitech)

Sichern unter … in Mac OS X Mountain Lion wiederherstellen

Gepostet am| 31. Januar 2013 | Keine Kommentare

Schon in Lion wurde der “Sichern Unter …”-Knopf gegen ein “Duplizieren” getauscht. Wer Kopien einer Datei selber verwalten möchte, und verschiedene Zwischenstände behalten will, kann sich mit zwei Tricks behelfen. Mehr…

Werbung
weitersuchen »