Helps you generate websql simple queries and run them without writing any sql code.
bower install angular-websql
- Include the
angular-websql.min.js
and angular itself. - Add
angular-websql
as a module dependency to your app.
angular.module('yourModule', ['angular-websql']);
1- Add $webSql
provider to a controller.
angular.module('yourModule', ['angular-websql'])
.controller('yourController', ['$scope','$webSql', function($scope, $webSql){
. . .
}]);;
2- Open a database. See method.
3- Use returned database object's methods.
$scope.db = $webSql.openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
1- Database name
2- Version number
3- Text description
4- Size of database
An object, containing database operation methods, is returned with openDatabase
method.
All methods return a promise which takes query result object as parameter.
These methods are:
- createTable()
- createOrAlterTable()
- dropTable()
- insert()
- bulkInsert()
- update()
- delete()
- select()
- selectLimit()
- selectAll()
- selectAllLimit()
- selectOne()
createTable('user', {
"id":{
"type": "INTEGER",
"null": "NOT NULL", // default is "NULL" (if not defined)
"primary": true, // primary
"auto_increment": true // auto increment
},
"created":{
"type": "TIMESTAMP",
"null": "NOT NULL",
"default": "CURRENT_TIMESTAMP" // default value
},
"username":{
"type": "TEXT",
"null": "NOT NULL"
},
"password": {
"type": "TEXT",
"null": "NOT NULL"
},
"age": {
"type": "INTEGER"
}
})
createTable('user', {
"id":{
"type": "INTEGER",
"null": "NOT NULL", // default is "NULL" (if not defined)
"primary": true, // primary
"auto_increment": true // auto increment
},
"created":{
"type": "TIMESTAMP",
"null": "NOT NULL",
"default": "CURRENT_TIMESTAMP" // default value
},
"username":{
"type": "TEXT",
"null": "NOT NULL"
},
"password": {
"type": "TEXT",
"null": "NOT NULL"
},
"age": {
"type": "INTEGER"
},
"newAddedField": {
"type": "TEXT"
}
})
$scope.db.insert('user', {"username": 'pc', "password": '1234', 'age': 22}).then(function(results) {
console.log(results.insertId);
})
INSERT INTO user (username, password, age) VALUES('pc', '1234', 22)
$scope.db.insert('user', [
{"username": 'pc1', "password": '1234', 'age': 22},
{"username": 'pc2', "password": '5678', 'age': 23},
{"username": 'pc3', "password": '9101', 'age': 24},
{"username": 'pc4', "password": '1213', 'age': 25},
]).then(function(results) {
console.log(results.insertId);
})
INSERT INTO user (username, password, age) VALUES('pc1', '1234', 22)
INSERT INTO user (username, password, age) VALUES('pc2', '5678', 23)
INSERT INTO user (username, password, age) VALUES('pc3', '9101', 24)
INSERT INTO user (username, password, age) VALUES('pc4', '1213', 25)
$scope.db.update("user", {"username": 'paulo.caldeira'}, {
'id': 1
})
UPDATE user SET username='paulo.caldeira' WHERE id=1
$scope.db.update("user", {"age": 23}, {
"username": {
"operator":'LIKE',
"value":'paulo.*',
"union":'AND' // condition suffix
},
"age": 22
})
UPDATE user SET age=23 WHERE username LIKE 'paulo.*' AND age=22
$scope.db.del("user", {"id": 1})
DELETE user WHERE id=1
$scope.db.select("user", {
"age": {
"value":'IS NULL',
"union":'AND'
},
"username":'IS NOT NULL'
}).then(function(results) {
$scope.users = [];
for(i=0; i < results.rows.length; i++){
$scope.users.push(results.rows.item(i));
}
})
SELECT * FROM user WHERE age IS NULL AND username IS NOT NULL
$scope.db.selectLimit("user", {
"age": {
"value":'IS NULL',
"union":'AND'
},
"username":'IS NOT NULL'
}, 10).then(function(results) {
$scope.users = [];
for(i=0; i < results.rows.length; i++){
$scope.users.push(results.rows.item(i));
}
})
SELECT * FROM user WHERE age IS NULL AND username IS NOT NULL LIMIT 10
selectAll(string tableName, [{operator:"string",postOperator:"string optionnal",columns["string column","string column"]}] Array/Object)
$scope.db.selectAll("user").then(function(results) {
$scope.users = [];
for(var i=0; i < results.rows.length; i++){
$scope.users.push(results.rows.item(i));
}
})
SELECT * FROM user
$scope.db.selectAll("user", [{operator:"GROUP BY",columns:['age','username']}]).then(function(results) {
$scope.users = [];
for(var i=0; i < results.rows.length; i++){
$scope.users.push(results.rows.item(i));
}
})
SELECT * FROM user GROUP BY age, username
$scope.db.selectAll("user", [
{operator:"GROUP BY",columns:['age']},
{operator:"ORDER BY",postOperator:'DESC',columns:['username']},
])
.then(function(results) {
$scope.users = [];
for(var i=0; i < results.rows.length; i++){
$scope.users.push(results.rows.item(i));
}
})
SELECT * FROM user GROUP BY age ORDER BY username DESC
$scope.db.selectAllLimit("user", 10).then(function(results) {
$scope.users = [];
for(var i=0; i < results.rows.length; i++){
$scope.users.push(results.rows.item(i));
}
})
SELECT * FROM user LIMIT 10
$scope.db.selectOne("user")
SELECT * FROM user LIMIT 1
Your can use common operators like =
, >=
, <=
and LIKE
. You can use also IS NULL
and NOT NULL
as condition values.
Thanks to github community, our libraries do not depend only from our work but also from work of contributors. I want to thank all those who in any way participated in the development of this library.
Special thanks to these contributors:
- @gfauchart
- @dbtek
- prevent empty operator in where clause
- insert method update with replace flag to "INSERT OR REPLACE" queries
- escape single quote or double quote value(s)
- changing callback to angular promise