Hi leute,
mal eine Frage, dessen Antwort, mein Grudverständnis etwas entwirren soll.
Also von Anfang an:
in den 90'ern habe ich mal für win CE programmiert. Da ging es darum, Messwerte zu speichern.
Mit VB6 und winCE tool konnte ich mit einem einfachen befehl+SQL(tabelle war glaube ich fix 'DB'!?) daten 'irgenwo' hinspeichern und wieder abrufen.
Den Befehl weiß ich nicht mehr. ich dachte MS hätten da einen kleinen MS mini SQL-Server integriert o.ä..
Jetzt ist es so, dass ich ohne irgewelche installationen, ausser dem OS, sowohl in Win8, Win8.1, Win RT, mit Androidbrowser bzw Crome
mit:
mydb = window.openDatabase(shortName, version, displayName, maxSize);
auf irgendeine DB-engine zugreifen kann!?
Also ohne SQLite installiert zu haben.
Mit IE gehts nicht, obwohl HTML5!?
Was ist das für ein Ding, was MS und Android schon mitbringen?
grüße aus LA
ralphi
PS: der code zum ausprobieren
<!DOCTYPE html>
<html xmlns="...www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>JS DB Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
<script type="text/javascript">
var mydb = null;
function initDb() {
var shortName = 'testDb';
var version = '1.0';
var displayName = 'test db';
var maxSize = 1048576; // in bytes
mydb = window.openDatabase(shortName, version, displayName, maxSize);
}
function init() {
try {
if (!window.openDatabase) {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> No DB support...";
} else {
initDb();
createTables();
displayPerson(null);
}
} catch(e) {
if (e == INVALID_STATE_ERR) {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> Invalid database version.";
} else {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> Unknown error "+e+".";
}
return;
}
}
errorHandler = function (transaction, error) {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> Failure: " + error.message;
return true;
}
// fire and forget...
nullDataHandler = function (transaction, results) { }
// create tables for the database
function createTables() {
try {
mydb.transaction(
function(transaction) {
transaction.executeSql('CREATE TABLE IF NOT EXISTS person(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, first_name VARCHAR NOT NULL, last_name VARCHAR NOT NULL);', [], nullDataHandler, errorHandler);
document.getElementById('status').innerHTML = "<b style='color: green;'>[OK]</b>Created table 'person'";
});
} catch(e) {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> Unable to create db 'person' "+e+".";
return;
}
}
function insertData() {
var firstName = document.personForm.firstName.value;
var lastName = document.personForm.lastName.value;
if (firstName == "" || lastName == "") {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> 'First name' and 'Last name' are required fields!";
} else {
try {
mydb.transaction(
function(transaction) {
transaction.executeSql("insert into person (first_name, last_name) VALUES ('"+firstName+"', '"+lastName+"');", [],
function (transaction, results) {
if (!results.rowsAffected) {
document.getElementById('status').innerHTML = "<span style='color: red;'>No rows affected</span>";
} else {
document.personForm.firstName.value = "";
document.personForm.lastName.value = "";
document.getElementById('status').innerHTML = "<span style='color: green;'>Inserted row with id "+results.insertId+"</span>";
displayPerson(results.insertId);
}
}, errorHandler);
});
} catch(e) {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> Unable to perform an INSERT "+e+".";
}
}
}
displayPerson = function(personId) {
var query;
if (personId != null) {
query = "SELECT * FROM person where id="+personId;
} else {
query = "SELECT * FROM person";
}
try {
mydb.transaction(
function(transaction) {
transaction.executeSql(query,
[ ],
function (transaction, results) {
for (var i=0; i<results.rows.length; i++) {
var row = results.rows.item(i);
var tr = document.createElement("tr");
var tdId = document.createElement("td");
var idText = document.createTextNode(row['id']);
tdId.appendChild(idText);
tr.appendChild(tdId);
var tdFn = document.createElement("td");
var fnText = document.createTextNode(row['first_name']);
tdFn.appendChild(fnText);
tr.appendChild(tdFn);
var tdLn = document.createElement("td");
var lnText = document.createTextNode(row['last_name']);
tdLn.appendChild(lnText);
tr.appendChild(tdLn);
document.getElementById("person_data").appendChild(tr);
}
}, function (transaction, error) {
document.getElementById("status").innerHTML = "Sth. went wrong. Failure code: " + error.code + "<br />Message: " + error.message;
});
});
} catch(e) {
document.getElementById('status').innerHTML = "<b style='color: red;'>[ERROR]</b> Unable to select data from the db "+e+".";
}
}
</script>
</head>
<body style="font-family: Helvetica, Verdana, Arial;">
<button onclick="init()">start</button>
<h1>Person DB</h1>
<h4>Status</h4>
<div id="status" style="margin-bottom: 5px;"></div>
<h2>Persons</h2>
<table border="1" cellspacing="2" id="person_data">
<tr>
<th><b>ID</b></th>
<th><b>First name</b></th>
<th><b>Last name</b></th>
</tr>
</table>
<h2>Create a new person</h2>
<form name="personForm">
First name: <input style="width: 100px;" type="text" name="firstName" id="firstName" /><br />
Last name: <input style="width: 100px;" type="text" name="lastName" id="lastName" /><br />
<br />
<input type="button" name="insert" value="insert" onclick="insertData()" />
</form>
</body>
</html>