tx.executeSql('DROP TABLE IF EXISTS DEMO');
Dòng trên sẽ xóa bảng có tên DEMO mỗi khi bạn khởi động ứng dụng di động PhoneGap của mình
Và tôi chỉ muốn nói với bạn rằng tôi yêu mã của bạn. Nó cung cấp một manh mối rất tốt về "phải làm gì" cho ứng dụng PhoneGap hoặc Cordova của bất kỳ ai. Nó sẽ giúp ích rất nhiều cho bất kỳ ai lần đầu tiên bước vào thế giới SQLite.
Mã của bạn rất dễ đọc và dễ hiểu so với mã được viết trên trang web chính thức plugin Cordova / PhoneGap SQLite trên GitHub.
Bạn tôi, người cũng làm CTO của một công ty và có nhiều kinh nghiệm với SQLite, nói với tôi rằng không cần thiết phải đóng kết nối cơ sở dữ liệu SQLite theo cách thủ công và cũng rất nên dùng SQLite.
Và cho bất kỳ ai khác đang tìm kiếm thông tin SQLite cho PhoneGap / Cordova -
Giả sử bạn có một bảng tên là mytable và muốn lưu trữ các giá trị "beautiful" và "dolphin"
Khi bạn muốn thực hiện một thao tác trên SQLite của thiết bị di động, chẳng hạn như máy tính bảng hoặc điện thoại, hãy nhớ gọi nó theo cách này
Có những điều sau trong mã nguồn của bạn
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
và lưu trữ "đẹp" bên trong var1 và "dolphin" bên trong var2 và
thực hiện câu lệnh sau để thực hiện câu lệnh chèn SQL và sau đó lưu bên trong thiết bị.
db.transaction(insertNewLine);
Không gọi trực tiếp insertNewLine (tx)
Không trực tiếp gọi tx.executeSql (/ * BÁO CÁO CHÈN SQL * /); trong mã nguồn JavaScript của bạn
Và không bao gồm các giá trị thẳng vào câu lệnh truy vấn SQL và sau đó chạy câu lệnh SQL bao gồm các giá trị bạn muốn lưu trữ trong cơ sở dữ liệu.
Nói cách khác, điều sau là không chính xác
tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');
Ở trên không chính xác vì các giá trị bạn muốn lưu trữ, "đẹp" và "dolphin" được bao gồm bên trong câu lệnh SQL. Chúng phải riêng biệt.
Sau đây là cách chính xác để chạy INSERT SQL
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
// Notice that the values you want to store, beautiful and dolphin
// are separate from the SQL INSERT INTO statement
và sau đó thực hiện toàn bộ giao dịch cơ sở dữ liệu bằng cách đưa phần sau vào mã JavaScript của bạn
db.transaction(insertNewLine);
không phải mã bên dưới
tx.executeSql("INSERT....."); // this will not save your values onto the device
cũng không phải mã bên dưới
insertNewLine(tx); // this will not save your values onto the device either.
Và để sử dụng câu lệnh SELECT SQL, hãy có mã sau
// Get all lines in the table
//
function viewthelastglory(tx)
{
tx.executeSql( 'SELECT * FROM CUSTOMTABLE', [], querySuccess, errorcode );
}
// Deal with the lines
//
function querySuccess(tx, results)
{
var len = results.rows.length; var queryresult = "all entries ";
for (var i = 0 ; i < len ; i++)
{
queryresult = queryresult +
" Row - " + i +
" Word - " + results.rows.item(i).word +
" Meaning - " + results.rows.item(i).meaning;
}
// and now, you can use the queryresult variable to use the values
}
function errorcode(errorhaha)
{
alert("Error Code " + errorhaha.code + " Error Message " + errorhaha.message);
}
Và sau đó, thực hiện giao dịch cơ sở dữ liệu
db.transaction(viewthelastglory);
Nếu bạn đang cố gắng chọn một từ SQLite, WebSQL và IndexedDB, hãy nhớ rằng tôi đã tìm kiếm trên stackoverflow trong một thời gian và biết được điều đó
- Không ai thích IndexedDB vì tính phức tạp của nó
- IndexedDB không tương thích với nhiều loại và phiên bản của hệ điều hành di động
- WebSQL đã được W3C không dùng nữa
- WebSQL trả về 673K kết quả nhưng SQLite trả về 1800K kết quả. IndexedDB trả về 300 nghìn kết quả trên Google
- Trong số IndexedDB, SQLite và WebSQL, SQLite là công cụ duy nhất có trang web chính thức.
Lệnh sau tại dòng lệnh khi bạn đang ở trong thư mục của dự án Cordova sẽ cài đặt plugin SQLite vào dự án Cordova của bạn
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin