Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
node-sqlite3
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
俞永鹏
node-sqlite3
Commits
1c3e2b72
Commit
1c3e2b72
authored
Dec 07, 2009
by
Eric Fredricksen
Committed by
Eric Fredricksen
Dec 07, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved semantics a bit
parent
e2cdbf1e
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
50 additions
and
52 deletions
+50
-52
README
README
+14
-11
compiloop.py
compiloop.py
+2
-1
sqlite.js
sqlite.js
+21
-7
sqlite3_bindings.cc
sqlite3_bindings.cc
+2
-0
test.js
test.js
+11
-33
No files found.
README
View file @
1c3e2b72
...
...
@@ -6,7 +6,8 @@ Functions
### `sqlite.openDatabaseSync(filename)`
Returns an object representing the sqlite3 database with given filename.
Returns a `DatabaseSync` object representing the sqlite3 database with
given filename.
### `DatabaseSync.query(sql [,bindings] [,callback])`
...
...
@@ -16,20 +17,22 @@ case `bindings` should be an array of values, or the form `$VVV` where
`VVV` is an identifier, in which canse `bindings` should be an object
with keys matching the variable names.
If provided the `callback` is called with a
n argument for each
statement in the query. Each argument is an array of objects mapping
column names to values.
If provided the `callback` is called with a
number of arguments equal
to the number of statements in the query. Each argument is a result
set which is an array of objects mapping column names to values.
Each
callback argument `rows` also has these properties
Each
result set `r` also has these accessors:
- **`rows.count`** is the number of rows affected by the query.
- **`rows.rowid`** is the `ROWID` of the last `INSERT` command
- **`r.rowsAffected`** is the number of rows affected by an `UPDATE` query.
- **`r.insertId`** is the `ROWID` of the an `INSERT` query
- **`r.rows.length`** (also just `r.length`) is the number of rows in a
`SELECT` result
- **`r.all`** is an array of result sets, one for each statement in the
query
Within the callback, `this` is an array of all such arrays, with a
`count` property giving the total number of rows affected. That same
`this` object is returned by `query`.
The return value is the first (often only) result set.
### `
sqlite.Db
.close()`
### `
DatabaseSync
.close()`
Closes the database.
...
...
compiloop.py
View file @
1c3e2b72
...
...
@@ -22,7 +22,8 @@ while True:
m
=
os
.
stat
(
mdname
)
.
st_mtime
if
mdtime
!=
m
:
os
.
system
(
"Markdown.pl <
%
s >
%
s.html"
%
(
mdname
,
mdname
))
os
.
system
(
"Markdown.pl -v <
%
s >
%
s.html"
%
(
mdname
,
mdname
))
print
mdname
+
".html updated"
mdtime
=
m
time
.
sleep
(
1
)
...
...
sqlite.js
View file @
1c3e2b72
...
...
@@ -33,7 +33,6 @@ exports.openDatabaseSync = function (name, version, displayName,
}
// This is an extension of the HTML5 API
DatabaseSync
.
prototype
.
query
=
function
(
sql
,
bindings
,
callback
)
{
// TODO: error callback
if
(
typeof
(
bindings
)
==
"function"
)
{
...
...
@@ -41,9 +40,20 @@ DatabaseSync.prototype.query = function (sql, bindings, callback) {
bindings
=
callback
;
callback
=
tmp
;
}
var
result
=
this
.
performQuery
(
sql
,
bindings
);
var
all
=
this
.
performQuery
(
sql
,
bindings
);
if
(
all
.
length
==
0
)
{
var
result
=
None
;
}
else
{
for
(
var
i
=
0
;
i
<
all
.
length
;
++
i
)
{
var
resultset
=
all
[
i
];
resultset
.
all
=
all
;
resultset
.
rows
=
{
item
:
function
(
index
)
{
return
resultset
[
index
];
},
length
:
resultset
.
length
};
}
var
result
=
all
[
0
];
}
if
(
typeof
(
callback
)
==
"function"
)
{
callback
.
apply
(
result
,
result
);
callback
.
apply
(
result
,
all
);
}
return
result
;
}
...
...
@@ -56,10 +66,13 @@ DatabaseSync.prototype.query = function (sql, bindings, callback) {
function
SQLTransactionSync
(
db
,
txCallback
,
errCallback
,
successCallback
)
{
this
.
database
=
db
;
this
.
executeSql
=
function
(
sqlStatement
,
arguments
,
callback
)
{
var
result
=
db
.
query
(
sqlStatement
,
arguments
,
callback
)[
0
];
result
.
rows
=
{
item
:
function
(
index
)
{
return
result
[
index
];
},
length
:
result
.
length
};
var
result
=
db
.
query
(
sqlStatement
,
arguments
);
if
(
callback
)
{
var
tx
=
this
;
callback
.
apply
(
result
,
[
tx
].
concat
(
result
.
all
));
}
return
result
;
}
...
...
@@ -72,7 +85,8 @@ function SQLTransactionSync(db, txCallback, errCallback, successCallback) {
DatabaseSync
.
prototype
.
transaction
=
function
(
txCallback
,
errCallback
,
successCallback
)
{
var
tx
=
new
SQLTransactionSync
(
this
,
txCallback
,
errCallback
,
successCallback
);
var
tx
=
new
SQLTransactionSync
(
this
,
txCallback
,
errCallback
,
successCallback
);
}
// TODO: readTransaction()
...
...
sqlite3_bindings.cc
View file @
1c3e2b72
...
...
@@ -163,6 +163,8 @@ protected:
rosult
->
Set
(
String
::
New
(
"insertId"
),
Integer
::
New
(
sqlite3_last_insert_rowid
(
*
db
)));
result
->
Set
(
Integer
::
New
(
result
->
Length
()),
rosult
);
sqlite3_finalize
(
stmt
);
}
result
->
Set
(
String
::
New
(
"rowsAffected"
),
Integer
::
New
(
changes
));
...
...
test.js
View file @
1c3e2b72
...
...
@@ -39,9 +39,10 @@ db.query("SELECT a FROM egg; SELECT y FROM egg", function (as, ys) {
process
.
assert
(
ys
.
length
==
4
);
});
db
.
query
(
"SELECT e FROM egg WHERE a = ?"
,
[
5
],
function
(
rows
)
{
process
.
assert
(
rows
.
length
==
1
);
process
.
assert
(
rows
[
0
].
e
==
"E"
);
db
.
query
(
"SELECT e FROM egg WHERE a = ?"
,
[
5
],
function
(
es
)
{
asserteq
(
es
.
length
,
1
);
asserteq
(
es
[
0
].
e
,
es
.
rows
.
item
(
0
).
e
);
asserteq
(
es
[
0
].
e
,
"E"
);
});
...
...
@@ -64,46 +65,23 @@ db.query("CREATE TABLE test (x,y,z)", function () {
db
.
query
(
"INSERT INTO test (x,y,z) VALUES ($x, $y, $z)"
,
{
$x
:
1
,
$y
:
2
,
$z
:
3
});
});
db
.
query
(
"SELECT * FROM test WHERE rowid < ?;"
,
[
1
],
function
(
stmt
)
{
sys
.
puts
(
"rose:"
);
sys
.
puts
(
stmt
);
});
db
.
query
(
"SELECT * FROM test WHERE rowid < ?;"
,
[
1
]);
db
.
query
(
"UPDATE test SET y = 10;"
,
[],
function
()
{
sys
.
puts
(
this
.
rowsAffected
+
" rows affected"
);
process
.
assert
(
this
.
rowsAffected
==
2
);
});
db
.
transaction
(
function
(
tx
)
{
tx
.
executeSql
(
"SELECT * FROM test WHERE x = ?"
,
[
1
],
function
(
tx
,
records
)
{
for
(
var
i
=
0
;
records
.
rows
.
item
(
i
);
++
i
)
asserteq
(
records
.
rows
.
item
(
i
).
z
,
3
);
});
});
db
.
close
();
sys
.
puts
(
"OK
\
n"
);
process
.
exit
()
// Perhaps do this, one day
//var q = db.prepare("SELECT * FROM t WHERE rowid=?");
//var rows = q.execute([1]);
// Perhaps use this syntax if query starts returning a promise:
c
.
query
(
"select * from test;"
).
addCallback
(
function
(
rows
)
{
puts
(
"result1:"
);
p
(
rows
);
});
c
.
query
(
"select * from test limit 1;"
).
addCallback
(
function
(
rows
)
{
puts
(
"result2:"
);
p
(
rows
);
});
c
.
query
(
"select ____ from test limit 1;"
).
addCallback
(
function
(
rows
)
{
puts
(
"result3:"
);
p
(
rows
);
}).
addErrback
(
function
(
e
)
{
puts
(
"error! "
+
e
.
message
);
puts
(
"full: "
+
e
.
full
);
puts
(
"severity: "
+
e
.
severity
);
c
.
close
();
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment