33 var dbq =
Cc[
"@songbirdnest.com/Songbird/DatabaseQuery;1"]
34 .createInstance(
Ci.sbIDatabaseQuery);
36 var
ios =
Cc[
"@mozilla.org/network/io-service;1"]
37 .createInstance(
Ci.nsIIOService);
39 var
dir =
Cc[
"@mozilla.org/file/directory_service;1"]
40 .createInstance(
Ci.nsIProperties);
42 var testdir = dir.get(
"ProfD",
Ci.nsIFile);
44 var actualdir = testdir.clone();
45 actualdir.append(
"db_tests");
47 if(!actualdir.exists())
50 actualdir.create(
Ci.nsIFile.DIRECTORY_TYPE, 0700);
57 var
uri = ios.newFileURI(actualdir);
58 dbq.databaseLocation =
uri;
62 dbq.setDatabaseGUID(
"test_bind");
63 dbq.addQuery(
"drop table bind_test");
64 dbq.addQuery(
"create table bind_test (utf8_column text, " +
65 "string_column text, double_column real, " +
66 "int32_column integer, int64_column integer)");
67 dbq.addQuery(
"insert into bind_test values " +
68 "('foo', 'bar', 1234.567, 666, 9876543210)");
69 dbq.addQuery(
"insert into bind_test values " +
70 "('Sigur Rós', 'Ágætis Byrjun', -1234.567, -666, -9876543210)");
72 dbq.waitForCompletion();
77 dbq.bindUTF8StringParameter(0,
"hello world");
78 fail(
"No exception thrown");
85 dbq.addQuery(
"select * from bind_test where utf8_column = ?");
86 dbq.bindUTF8StringParameter(0,
"foo");
90 dbq.addQuery(
"select * from bind_test where utf8_column = ?");
91 dbq.bindUTF8StringParameter(0,
"Sigur Rós );
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where string_column = ?");
dbq.bindStringParameter(0, "bar");
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where string_column = ?");
dbq.bindStringParameter(0, "Ágætis Byrjun");
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where double_column = ?");
dbq.bindDoubleParameter(0, 1234.567);
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where int32_column = ?");
dbq.bindInt32Parameter(0, 666);
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where int32_column = ?");
dbq.bindInt32Parameter(0, -666);
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where int64_column = ?");
dbq.bindInt64Parameter(0, 9876543210);
execAndAssertCount(dbq, 1);
dbq.resetQuery();
dbq.addQuery("select * from bind_test where int64_column = ?");
dbq.bindInt64Parameter(0, -9876543210);
execAndAssertCount(dbq, 1);
// Test an insert -- this lets us test the null binding method
dbq.resetQuery();
dbq.addQuery("insert into bind_test values (?, ?, ?, ?, ?)");
dbq.bindNullParameter(0);
dbq.bindStringParameter(1, "bar2");
dbq.bindDoubleParameter(2, 567.0);
dbq.bindInt32Parameter(3, 0);
dbq.bindInt64Parameter(4, -1);
dbq.execute();
dbq.waitForCompletion();
// Make sure that null was inserted
dbq.resetQuery();
dbq.addQuery("select * from bind_test where utf8_column is null");
execAndAssertCount(dbq, 1);
// Make sure that everything else was inserted
dbq.resetQuery();
dbq.addQuery("select * from bind_test where string_column = ? and " +
"double_column = ? and int32_column = ? and int64_column = ?");
dbq.bindStringParameter(0, "bar2");
dbq.bindDoubleParameter(1, 567.0);
dbq.bindInt32Parameter(2, 0);
dbq.bindInt64Parameter(3, -1);
execAndAssertCount(dbq, 1);
// Test binding multiple queries
dbq.resetQuery();
dbq.addQuery("select * from bind_test where utf8_column = ?");
dbq.bindUTF8StringParameter(0, "foo");
dbq.addQuery("select * from bind_test where string_column = ?");
dbq.bindStringParameter(0, "bar");
dbq.addQuery("select * from bind_test where int32_column = ?");
dbq.bindInt32Parameter(0, 0);
execAndAssertCount(dbq, 3);
return Components.results.NS_OK;
}
function execAndAssertCount(dbq, numRows) {
dbq.execute();
dbq.waitForCompletion();
assertEqual(dbq.getResultObject().getRowCount(), numRows);
}
");
95 dbq.addQuery(
"select * from bind_test where string_column = ?");
96 dbq.bindStringParameter(0,
"bar");
100 dbq.addQuery(
"select * from bind_test where string_column = ?");
101 dbq.bindStringParameter(0,
"Ágætis Byrjun");
105 dbq.addQuery(
"select * from bind_test where double_column = ?");
106 dbq.bindDoubleParameter(0, 1234.567);
110 dbq.addQuery(
"select * from bind_test where int32_column = ?");
111 dbq.bindInt32Parameter(0, 666);
115 dbq.addQuery(
"select * from bind_test where int32_column = ?");
116 dbq.bindInt32Parameter(0, -666);
120 dbq.addQuery(
"select * from bind_test where int64_column = ?");
121 dbq.bindInt64Parameter(0, 9876543210);
125 dbq.addQuery(
"select * from bind_test where int64_column = ?");
126 dbq.bindInt64Parameter(0, -9876543210);
131 dbq.addQuery(
"insert into bind_test values (?, ?, ?, ?, ?)");
132 dbq.bindNullParameter(0);
133 dbq.bindStringParameter(1,
"bar2");
134 dbq.bindDoubleParameter(2, 567.0);
135 dbq.bindInt32Parameter(3, 0);
136 dbq.bindInt64Parameter(4, -1);
138 dbq.waitForCompletion();
142 dbq.addQuery(
"select * from bind_test where utf8_column is null");
147 dbq.addQuery(
"select * from bind_test where string_column = ? and " +
148 "double_column = ? and int32_column = ? and int64_column = ?");
149 dbq.bindStringParameter(0,
"bar2");
150 dbq.bindDoubleParameter(1, 567.0);
151 dbq.bindInt32Parameter(2, 0);
152 dbq.bindInt64Parameter(3, -1);
157 dbq.addQuery(
"select * from bind_test where utf8_column = ?");
158 dbq.bindUTF8StringParameter(0,
"foo");
159 dbq.addQuery(
"select * from bind_test where string_column = ?");
160 dbq.bindStringParameter(0,
"bar");
161 dbq.addQuery(
"select * from bind_test where int32_column = ?");
162 dbq.bindInt32Parameter(0, 0);
165 return Components.results.NS_OK;
170 dbq.waitForCompletion();
171 assertEqual(dbq.getResultObject().getRowCount(), numRows);
function execAndAssertCount(dbq, numRows)
function assertEqual(aExpected, aActual, aMessage)
function runTest()
Test file.