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
2e0690b7
Commit
2e0690b7
authored
Feb 21, 2011
by
Konstantin Käfer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add Database#run, Database#execute, Database#all and Database#get
parent
98645f53
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
159 additions
and
2 deletions
+159
-2
sqlite3.js
lib/sqlite3.js
+26
-0
database.h
src/database.h
+0
-1
prepare.test.js
test/prepare.test.js
+133
-1
No files found.
lib/sqlite3.js
View file @
2e0690b7
...
@@ -35,3 +35,29 @@ Database.prototype.prepare = function(sql) {
...
@@ -35,3 +35,29 @@ Database.prototype.prepare = function(sql) {
return
new
Statement
(
this
,
sql
,
params
.
pop
());
return
new
Statement
(
this
,
sql
,
params
.
pop
());
}
}
};
};
// Database#run(sql, [bind1, bind2, ...], [callback])
Database
.
prototype
.
run
=
function
(
sql
)
{
var
statement
=
new
Statement
(
this
,
sql
);
statement
.
run
.
apply
(
statement
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
));
return
this
;
}
// Database#get(sql, [bind1, bind2, ...], [callback])
Database
.
prototype
.
get
=
function
(
sql
)
{
var
statement
=
new
Statement
(
this
,
sql
);
statement
.
get
.
apply
(
statement
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
));
return
this
;
}
// Database#all(sql, [bind1, bind2, ...], [callback])
Database
.
prototype
.
all
=
function
(
sql
)
{
var
statement
=
new
Statement
(
this
,
sql
);
statement
.
all
.
apply
(
statement
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
));
return
this
;
}
Database
.
prototype
.
execute
=
function
()
{
console
.
warn
(
'Database#execute() is deprecated. Use Database#all() instead.'
);
return
this
.
all
.
apply
(
this
,
arguments
);
};
src/database.h
View file @
2e0690b7
...
@@ -91,7 +91,6 @@ protected:
...
@@ -91,7 +91,6 @@ protected:
~
Database
()
{
~
Database
()
{
assert
(
handle
==
NULL
);
assert
(
handle
==
NULL
);
fprintf
(
stderr
,
"Deleted Database
\n
"
);
}
}
static
Handle
<
Value
>
New
(
const
Arguments
&
args
);
static
Handle
<
Value
>
New
(
const
Arguments
&
args
);
...
...
test/prepare.test.js
View file @
2e0690b7
...
@@ -250,7 +250,6 @@ exports['test all() parameter binding'] = function(beforeExit) {
...
@@ -250,7 +250,6 @@ exports['test all() parameter binding'] = function(beforeExit) {
});
});
};
};
exports
[
'test all() without results'
]
=
function
(
beforeExit
)
{
exports
[
'test all() without results'
]
=
function
(
beforeExit
)
{
var
db
=
new
sqlite3
.
Database
(
'test/support/prepare.db'
,
sqlite3
.
OPEN_READONLY
);
var
db
=
new
sqlite3
.
Database
(
'test/support/prepare.db'
,
sqlite3
.
OPEN_READONLY
);
...
@@ -267,3 +266,136 @@ exports['test all() without results'] = function(beforeExit) {
...
@@ -267,3 +266,136 @@ exports['test all() without results'] = function(beforeExit) {
assert
.
ok
(
empty
,
"Didn't retrieve an empty result set"
);
assert
.
ok
(
empty
,
"Didn't retrieve an empty result set"
);
});
});
};
};
exports
[
'test high concurrency'
]
=
function
(
beforeExit
)
{
var
db
=
new
sqlite3
.
Database
(
':memory:'
);
function
randomString
()
{
var
str
=
''
;
for
(
var
i
=
Math
.
random
()
*
300
;
i
>
0
;
i
--
)
{
str
+=
String
.
fromCharCode
(
Math
.
floor
(
Math
.
random
()
*
256
));
}
return
str
;
};
// Generate random data.
var
data
=
[];
var
length
=
Math
.
floor
(
Math
.
random
()
*
1000
)
+
200
;
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
data
.
push
([
randomString
(),
i
,
i
*
Math
.
random
(),
null
]);
}
var
inserted
=
false
;
var
retrieved
=
0
;
Step
(
function
()
{
db
.
prepare
(
"CREATE TABLE foo (txt text, num int, flt float, blb blob)"
).
run
(
this
);
},
function
(
err
)
{
if
(
err
)
throw
err
;
var
group
=
this
.
group
();
for
(
var
i
=
0
;
i
<
data
.
length
;
i
++
)
{
var
stmt
=
db
.
prepare
(
"INSERT INTO foo VALUES(?, ?, ?, ?)"
);
stmt
.
run
(
data
[
i
][
0
],
data
[
i
][
1
],
data
[
i
][
2
],
data
[
i
][
3
],
group
());
}
},
function
(
err
,
result
)
{
if
(
err
)
throw
err
;
assert
.
ok
(
result
.
length
===
length
,
'Invalid length'
);
inserted
=
true
;
db
.
prepare
(
"SELECT txt, num, flt, blb FROM foo"
)
.
all
(
function
(
err
,
rows
)
{
if
(
err
)
throw
err
;
for
(
var
i
=
0
;
i
<
rows
.
length
;
i
++
)
{
assert
.
ok
(
data
[
rows
[
i
][
1
]]
!==
true
);
assert
.
equal
(
rows
[
i
][
0
],
data
[
rows
[
i
][
1
]][
0
]);
assert
.
equal
(
rows
[
i
][
1
],
data
[
rows
[
i
][
1
]][
1
]);
assert
.
equal
(
rows
[
i
][
2
],
data
[
rows
[
i
][
1
]][
2
]);
assert
.
equal
(
rows
[
i
][
3
],
data
[
rows
[
i
][
1
]][
3
]);
// Mark the data row as already retrieved.
data
[
rows
[
i
][
1
]]
=
true
;
retrieved
++
;
}
});
}
);
beforeExit
(
function
()
{
assert
.
ok
(
inserted
);
});
};
exports
[
'test Database#get()'
]
=
function
(
beforeExit
)
{
var
db
=
new
sqlite3
.
Database
(
'test/support/prepare.db'
,
sqlite3
.
OPEN_READONLY
);
var
retrieved
=
0
;
db
.
get
(
"SELECT txt, num, flt, blb FROM foo WHERE num = ? AND txt = ?"
,
10
,
'String 10'
,
function
(
err
,
row
)
{
if
(
err
)
throw
err
;
assert
.
equal
(
row
[
0
],
'String 10'
);
assert
.
equal
(
row
[
1
],
10
);
assert
.
equal
(
row
[
2
],
10
*
Math
.
PI
);
assert
.
equal
(
row
[
3
],
null
);
retrieved
++
;
});
beforeExit
(
function
()
{
assert
.
equal
(
1
,
retrieved
,
"Didn't retrieve all rows"
);
});
};
exports
[
'test Database#run() and Database#all()'
]
=
function
(
beforeExit
)
{
var
db
=
new
sqlite3
.
Database
(
':memory:'
);
var
inserted
=
0
;
var
retrieved
=
0
;
// We insert and retrieve that many rows.
var
count
=
1000
;
Step
(
function
()
{
db
.
run
(
"CREATE TABLE foo (txt text, num int, flt float, blb blob)"
,
this
);
},
function
(
err
)
{
if
(
err
)
throw
err
;
var
group
=
this
.
group
();
for
(
var
i
=
0
;
i
<
count
;
i
++
)
{
db
.
run
(
"INSERT INTO foo VALUES(?, ?, ?, ?)"
,
'String '
+
i
,
i
,
i
*
Math
.
PI
,
// null (SQLite sets this implicitly)
group
()
);
}
},
function
(
err
,
rows
)
{
if
(
err
)
throw
err
;
inserted
+=
rows
.
length
;
db
.
all
(
"SELECT txt, num, flt, blb FROM foo ORDER BY num"
,
this
)
},
function
(
err
,
rows
)
{
if
(
err
)
throw
err
;
assert
.
equal
(
count
,
rows
.
length
,
"Couldn't retrieve all rows"
);
for
(
var
i
=
0
;
i
<
count
;
i
++
)
{
assert
.
equal
(
rows
[
i
][
0
],
'String '
+
i
);
assert
.
equal
(
rows
[
i
][
1
],
i
);
assert
.
equal
(
rows
[
i
][
2
],
i
*
Math
.
PI
);
assert
.
equal
(
rows
[
i
][
3
],
null
);
retrieved
++
;
}
}
);
beforeExit
(
function
()
{
assert
.
equal
(
count
,
inserted
,
"Didn't insert all rows"
);
assert
.
equal
(
count
,
retrieved
,
"Didn't retrieve all rows"
);
});
};
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