API cơ sở dữ liệu Web SQL không phải là một phần của đặc tả HTML5, nhưng nó là một đặc tả riêng biệt, được giới thiệu một bộ API để sử dụng cơ sở dữ liệu máy khách hoạt động SQL
Nếu bạn là một lập trình viên Web phía sau, thì các thao tác SQL sẽ dễ hiểu
Bạn cũng có thể tham khảo bài hướng dẫn SQL của chúng tôi để tìm hiểu thêm kiến thức thao tác cơ sở dữ liệu
Cơ sở dữ liệu Web SQL có thể hoạt động trong phiên bản mới nhất của trình duyệt Safari, Chrome và Opera
phương pháp cốt lõi
Sau đây là ba phương thức cốt lõi được định nghĩa trong đặc tả
- cơ sở dữ liệu mở. Phương pháp này sử dụng cơ sở dữ liệu hiện có hoặc tạo cơ sở dữ liệu đối tượng cơ sở dữ liệu mới
- Giao dịch. Phương pháp này cho phép chúng tôi kiểm soát một giao dịch và dựa trên trường hợp này cam kết hoặc khôi phục
- thực thiSql. Phương pháp này được sử dụng để thực hiện truy vấn SQL thực tế
Cơ sở dữ liệu mở
Chúng ta có thể sử dụng phương thức openDatabase[] để mở một cơ sở dữ liệu đã tồn tại, nếu cơ sở dữ liệu chưa tồn tại thì tạo một cơ sở dữ liệu mới, sử dụng đoạn mã sau
var db = openDatabase['mydb', '1.0', 'Test DB', 2 * 1024 * 1024];
phương thức openDatabase [] của năm tham số tương ứng với mô tả
- Tên cơ sở dữ liệu
- số phiên bản
- Văn bản mô tả
- Kích thước cơ sở dữ liệu
- Tạo một cuộc gọi lại
Tham số thứ năm, tạo một cuộc gọi lại sẽ được gọi sau khi tạo cơ sở dữ liệu
Để thực hiện các thao tác truy vấn
Thực thi sử dụng cơ sở dữ liệu. chức năng giao dịch []
var db = openDatabase['mydb', '1.0', 'Test DB', 2 * 1024 * 1024]; db.transaction[function [tx] { tx.executeSql['CREATE TABLE IF NOT EXISTS LOGS [id unique, log]']; }];
Câu lệnh trên tạo một bảng có tên LOGS trong cơ sở dữ liệu 'mydb' sau khi thực hiện
Chèn dữ liệu
Sau khi thực hiện câu lệnh trên để tạo bảng, chúng ta có thể chèn một số dữ liệu
var db = openDatabase['mydb', '1.0', 'Test DB', 2 * 1024 * 1024]; db.transaction[function [tx] { tx.executeSql['CREATE TABLE IF NOT EXISTS LOGS [id unique, log]']; tx.executeSql['INSERT INTO LOGS [id, log] VALUES [1, "本教程"]']; tx.executeSql['INSERT INTO LOGS [id, log] VALUES [2, "www.w3big.com"]']; }];
Chúng ta cũng có thể sử dụng một giá trị động để chèn dữ liệu
var db = openDatabase['mydb', '1.0', 'Test DB', 2 * 1024 * 1024]; db.transaction[function [tx] { tx.executeSql['CREATE TABLE IF NOT EXISTS LOGS [id unique, log]']; tx.executeSql['INSERT INTO LOGS [id,log] VALUES [?, ?'], [e_id, e_log]; }];
Ví dụ e_id e_log và các biến bên ngoài, tham số mảng execSql được ánh xạ tới từng mục trong "?. "
Xin lưu ý rằng kể từ ngày 18 tháng 11, W3C không còn hoạt động tích cực trên đặc tả Cơ sở dữ liệu Web SQL
API cơ sở dữ liệu Web SQL thực sự không phải là một phần của đặc tả HTML5, nhưng nó là một phần của bộ đặc tả cho phép các nhà phát triển của chúng tôi xây dựng các ứng dụng web chính thức, vì vậy đã đến lúc chúng ta tìm hiểu và kiểm tra nó
Có cái gì trong hộp vậy?
Nếu bạn chưa đoán được từ tiêu đề đặc tả quá dài dòng, Cơ sở dữ liệu Web SQL là một đặc tả mang SQL đến phía máy khách. Nếu bạn có kiến thức nền về lập trình viên back-end, thì có lẽ bạn sẽ quen thuộc với SQL và vui vẻ như một con lợn trong đống phân. Nếu không, bạn có thể muốn tìm hiểu một số SQL trước khi bắt đầu hack xung quanh, Google là bạn của bạn tại đây
Thông số kỹ thuật dựa trên SQLite [3. 1. 19], nhưng bản thân tôi đến từ MySQL, tất cả đều giống nhau [xin lỗi vì tuyên bố sâu rộng. ]
Để biết ví dụ về Cơ sở dữ liệu Web SQL đang hoạt động, hãy xem bản trình diễn trò chuyện trên Twitter HTML5 mà tôi đã tổng hợp
đặt hàng levitra
Nó sử dụng SQL và mệnh đề WHERE để thu hẹp cuộc trò chuyện gần đây về HTML5 trên Twitter [nó sẽ hoạt động trong Safari, Chrome và Opera 10. 50]Có ba phương pháp cốt lõi trong thông số kỹ thuật mà tôi sẽ trình bày trong bài viết này
openDatabase
transaction
executeSql
Hỗ trợ là một chút chắp vá vào lúc này. Chỉ Webkit [Safari, SafariMobile và Chrome] và Opera 10. 50 [ATOW alpha trên Mac] hỗ trợ cơ sở dữ liệu web. Bác sĩ Bruce Lawson đã nói với tôi rằng Firefox đang tạm dừng vì họ cảm thấy có một triển khai tốt hơn SQLite [mặc dù tôi hy vọng nó tương tự, bất kể họ chọn gì]. Dù bằng cách nào, tôi chắc chắn khuyên bạn nên kiểm tra tài liệu SQLite để biết các chức năng có sẵn
Do sự hỗ trợ chắp vá này và thực tế đơn giản là Webkit đã triển khai thông số kỹ thuật cơ sở dữ liệu một thời gian trước, thông số kỹ thuật trên W3C hiện đi trước một chút so với việc triển khai trong Safari, trong khi Webkit vẫn đang bắt kịp. Mặt khác, vì Opera chỉ mới bổ sung hỗ trợ, nên nó gần với thông số kỹ thuật hơn [tôi sẽ đề cập đến sự khác biệt khi chúng ta tiếp tục]
Tuy nhiên, thật thú vị khi chơi cùng, vì vậy hãy bắt đầu chơi
Tạo và mở cơ sở dữ liệu
Nếu bạn cố mở một cơ sở dữ liệu không tồn tại, API sẽ tạo nó một cách nhanh chóng cho bạn. Bạn cũng không phải lo lắng về việc đóng cơ sở dữ liệu
Để tạo và mở cơ sở dữ liệu, hãy sử dụng đoạn mã sau
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
Tôi đã truyền bốn đối số cho phương thức openDatabase
. đó là
- Tên cơ sở dữ liệu
- số phiên bản
- mô tả văn bản
- Kích thước ước tính của cơ sở dữ liệu
Tính năng còn thiếu của openDatabase
[Tôi không chắc nó được thêm vào khi nào] là đối số thứ năm
- gọi lại tạo
Cuộc gọi lại tạo sẽ được gọi nếu cơ sở dữ liệu đang được tạo. Tuy nhiên, nếu không có tính năng này, cơ sở dữ liệu vẫn đang được tạo một cách nhanh chóng và được phiên bản chính xác
Giá trị trả về từ openDatabase
chứa các phương thức giao dịch, vì vậy chúng tôi sẽ cần nắm bắt giá trị này để có thể thực hiện các truy vấn SQL
Kích thước cơ sở dữ liệu ước tính
Từ các thử nghiệm tôi đã chạy, chỉ Safari nhắc người dùng nếu bạn cố tạo cơ sở dữ liệu vượt quá kích thước của kích thước cơ sở dữ liệu mặc định, 5MB. Lời nhắc được hiển thị trong hình ảnh bên dưới, hỏi xem bạn có muốn cấp quyền cho cơ sở dữ liệu để mở rộng quy mô lên kích thước tiếp theo của cơ sở dữ liệu hay không — 5, 10, 50, 100 và 500MB. Mặt khác, Opera xây dựng cơ sở dữ liệu mà không phàn nàn gì, điều mà tôi mong đợi có thể thay đổi sau này vì nó vẫn ở dạng alpha
phiên bản
Tôi có thể sai, nhưng mọi thứ tôi đã kiểm tra cho đến nay đều nói rằng việc lập phiên bản trong cơ sở dữ liệu SQL đã bị hỏng. vấn đề là đây
Nếu bạn nâng cấp cơ sở dữ liệu của mình lên phiên bản 2. 0 [e. g. , có một số thay đổi lược đồ quan trọng kể từ phiên bản 1. 0], làm cách nào để bạn biết khách truy cập nào trên phiên bản 1. 0 và trên phiên bản 2. 0?
Số phiên bản là một đối số bắt buộc đối với openDatabase
, vì vậy bạn phải biết số phiên bản trước khi thử mở nó. Nếu không, một ngoại lệ được ném
Ngoài ra,
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
// here be the transaction
// do SQL magic here using the tx object
}];
3, phương pháp thay đổi phiên bản cơ sở dữ liệu, không được hỗ trợ đầy đủ trong Webkit. Nó hoạt động trong Chrome và Opera, nhưng không hoạt động trong Safari hoặc Webkit. Bất kể, nếu tôi không thể xác định phiên bản cơ sở dữ liệu mà người dùng đang sử dụng, thì tôi không thể nâng cấp người dùngMột cách giải quyết khả thi là duy trì cơ sở dữ liệu trạng thái, giống như cơ sở dữ liệu 'mysql' trong MySQL. Bằng cách này, bạn sẽ chỉ có một phiên bản của cơ sở dữ liệu trạng thái này và trong phiên bản này, bạn sẽ ghi lại phiên bản hiện tại của bất kỳ cơ sở dữ liệu nào kiểm soát ứng dụng của bạn. Đó là một hack, nhưng nó hoạt động
giao dịch
Bây giờ chúng tôi đã mở cơ sở dữ liệu của mình, chúng tôi có thể tạo giao dịch. Tại sao phải bận tâm với các giao dịch thay vì chỉ chạy SQL của chúng tôi? . Điều này có nghĩa là nếu một giao dịch — có thể chứa một hoặc nhiều câu lệnh SQL — không thành công [cả SQL hoặc mã trong giao dịch], thì các bản cập nhật cho cơ sở dữ liệu sẽ không bao giờ được chuyển giao — i. e. như thể giao dịch chưa bao giờ xảy ra
Ngoài ra còn có các cuộc gọi lại lỗi và thành công trong giao dịch, vì vậy bạn có thể quản lý lỗi, nhưng điều quan trọng là phải hiểu rằng các giao dịch có khả năng khôi phục các thay đổi
Giao dịch chỉ đơn giản là một chức năng có chứa một số mã
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
// here be the transaction
// do SQL magic here using the tx object
}];
Gần đây tôi đã tải bản trình diễn lên html5demos. com thể hiện việc khôi phục giao dịch đang hoạt động. Bản demo khôi phục cơ sở dữ liệu Web SQL
Trong các bản dựng trình duyệt hàng đêm, chúng tôi cũng có
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
// here be the transaction
// do SQL magic here using the tx object
}];
4, chỉ cho phép các câu lệnh đọc chạy trên cơ sở dữ liệu. Tôi cho rằng có những lợi ích về hiệu suất khi sử dụng var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
// here be the transaction
// do SQL magic here using the tx object
}];
5 chỉ đọc thay vì transaction
đọc/ghi, hầu hết có thể liên quan đến việc khóa bảngBây giờ chúng tôi đã có đối tượng giao dịch của mình [có tên là
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
// here be the transaction
// do SQL magic here using the tx object
}];
7 trong ví dụ của tôi], chúng tôi đã sẵn sàng để chạy một số SQLthực thiSql
Đây là kênh tình yêu dành cho tất cả sự tốt đẹp của SQL của bạn. executeSql
được sử dụng cho cả câu lệnh đọc và viết, bao gồm phép chiếu SQL injection và cung cấp phương thức gọi lại để xử lý kết quả của bất kỳ truy vấn nào bạn có thể đã viết
Khi chúng tôi có một đối tượng giao dịch, chúng tôi có thể gọi executeSql
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
Thao tác này bây giờ sẽ tạo một bảng đơn giản có tên là “foo” trong cơ sở dữ liệu của chúng ta có tên là “mydb”. Lưu ý rằng nếu cơ sở dữ liệu đã tồn tại thì giao dịch sẽ không thành công, do đó mọi SQL kế tiếp sẽ không chạy. Vì vậy, chúng tôi có thể sử dụng một giao dịch khác hoặc chúng tôi chỉ có thể tạo bảng nếu nó không tồn tại, điều mà tôi sẽ thực hiện ngay bây giờ để tôi có thể chèn một hàng mới vào cùng một giao dịch
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE IF NOT EXISTS foo [id unique, text]'];
tx.executeSql['INSERT INTO foo [id, text] VALUES [1, "synergies"]'];
}];
Bây giờ bảng của chúng tôi có một hàng duy nhất bên trong nó. Điều gì sẽ xảy ra nếu chúng ta muốn chụp văn bản từ người dùng hoặc một số nguồn bên ngoài? . Đối số thứ hai để executeSql
ánh xạ dữ liệu trường vào truy vấn, như vậy
tx.executeSql['INSERT INTO foo [id, text] VALUES [?, ?]', [id, userValue]];
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
1 và var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
2 là các biến bên ngoài và executeSql
ánh xạ từng mục trong đối số mảng tới dấu “?”Cuối cùng, nếu chúng ta muốn chọn các giá trị từ bảng, chúng ta sử dụng hàm gọi lại để nắm bắt kết quả
tx.executeSql['SELECT * FROM foo', [], function [tx, results] {
var len = results.rows.length, i;
for [i = 0; i < len; i++] {
alert[results.rows.item[i].text];
}
}];
[Lưu ý rằng trong truy vấn này, không có trường nào được ánh xạ, nhưng để sử dụng đối số thứ ba, tôi cần chuyển vào một mảng trống cho đối số thứ hai. ]
Cuộc gọi lại nhận đối tượng giao dịch [một lần nữa] và đối tượng kết quả. Đối tượng results chứa đối tượng
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
4, giống như mảng nhưng không phải là mảng. Nó có độ dài, nhưng để đến từng hàng riêng lẻ, bạn cần sử dụng var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
5, trong đó var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
6 là chỉ mục của hàng. Điều này sẽ trả về một đại diện đối tượng của hàng. Ví dụ: nếu cơ sở dữ liệu của bạn có trường var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
7 và trường var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
8, thì hàng đó sẽ chứa thuộc tính var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
7 và thuộc tính var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
8. Giá trị của trường var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE foo [id unique, text]'];
}];
8 có thể được truy cập bằng cách sử dụng var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE IF NOT EXISTS foo [id unique, text]'];
tx.executeSql['INSERT INTO foo [id, text] VALUES [1, "synergies"]'];
}];
2Đó là tất cả những gì bạn cần để bắt đầu với Cơ sở dữ liệu Web SQL. Tôi chắc chắn rằng các thư viện JavaScript nhỏ sẽ xuất hiện để giúp hỗ trợ làm việc với cơ sở dữ liệu. Nếu bạn muốn tìm hiểu thêm về cơ sở dữ liệu SQL [bắt đầu tự quảng cáo không biết xấu hổ] Tôi vừa hoàn thành chương lưu trữ cho Giới thiệu HTML5 mà tôi đang viết cùng với đồng nghiệp Doc Bruce, vì vậy hãy xem cả cậu bé hư đó
trình diễn
- Bản trình diễn HTML5 hiển thị cách sử dụng cơ sở dữ liệu đơn giản
- Trình diễn HTML5 về một giao dịch quay trở lại
- Bản trình diễn hiển thị lựa chọn phạm vi thời gian bằng SQLite
Loại
- API JavaScript
thẻ
- api
- cơ sở dữ liệu
- HTML5
- html5
- jav
- sql
- kho
Remy Sharp
Bài viết này được viết bởi Remy Sharp . Remy [@rem trên Twitter] là người sáng lập jQuery dành cho nhà thiết kế và hội thảo Full Frontal JavaScript, nếu không thì anh ấy là nhà phát triển và người viết blog. Nói chung, anh ấy phát cuồng về JavaScript, HTML & CSS như một con sóc phát cuồng trong mùa đông.
94 Phản hồi về bài viết “Giới thiệu Cơ sở dữ liệu Web SQL”
Giới thiệu Cơ sở dữ liệu Web SQL. Bác sĩ HTML5. Dịch vụ trực tuyến miễn phí Drakz nói.
[…] được đăng tại đây. Giới thiệu Cơ sở dữ liệu Web SQL. HTML5 Doctor Chia sẻ và […]
BWRic nói.
“Firefox đang ngừng hoạt động vì họ cảm thấy có một triển khai tốt hơn SQLite”
Bất kỳ ý tưởng những gì họ đang tìm kiếm để thực hiện?
Shelley nói.
Tôi không mong đợi thông số kỹ thuật này sẽ đi đến đâu vì các phụ thuộc bên ngoài. Điều quan trọng là những người đọc bài đăng này phải biết rằng có khả năng cao là chuyện này sẽ không đi đến đâu
từ thông số kỹ thuật
“Thông số kỹ thuật này đã đi đến chỗ bế tắc. tất cả những người triển khai quan tâm đã sử dụng cùng một chương trình phụ trợ SQL [Sqlite], nhưng chúng tôi cần nhiều triển khai độc lập để tiến hành theo lộ trình chuẩn hóa. Cho đến khi một người triển khai khác quan tâm đến việc triển khai thông số kỹ thuật này, thì phần mô tả về phương ngữ SQL chỉ đơn giản là một tham chiếu đến Sqlite, điều này không được chấp nhận đối với một tiêu chuẩn. Nếu bạn là người triển khai quan tâm đến việc triển khai chương trình phụ trợ SQL độc lập, vui lòng liên hệ với người biên tập để họ có thể viết một đặc tả cho phương ngữ, do đó cho phép đặc tả này tiếp tục. ”
Hãy suy nghĩ về những gì điều này đang yêu cầu. Bây giờ, bạn tin điều này thực tế đến mức nào?
Tôi đã không bao gồm nó trong cuốn sách của tôi
Remy Sharp nói.
@Shelly - Tôi đã đọc thông số kỹ thuật và có cùng suy nghĩ đó. Tôi không thể tưởng tượng rằng sẽ sớm có một phiên bản SQL cụ thể [cá nhân tôi nửa mong rằng điều này sẽ không bao giờ xảy ra]
Điều đó không có nghĩa là nó không nên được thảo luận hoặc chơi với. Có những nền tảng mà trình duyệt được các nhà phát triển biết đến [tôi. e. không phải là một ví dụ tuyệt vời, nhưng những người viết ứng dụng web cho iPhone], vì vậy đây là một công nghệ có thể được khai thác
Shelley nói.
Rémy, thật. nếu bạn đang làm việc trong một môi trường không phải web thông thường, chẳng hạn như phát triển iPhone, thì tất cả những gì bạn cần lo lắng là việc triển khai được Safari hỗ trợ. Tương tự, với các điện thoại thông minh khác và sử dụng Opera mini, hoặc bất cứ thứ gì
Nhưng tôi không nghĩ sẽ có một “tiêu chuẩn” W3C để cung cấp mức độ ổn định mà nhiều công ty đang hướng tới. Tôi nghĩ rằng cái này sẽ luôn là một triển khai maverick, bởi vì nó sẽ luôn phụ thuộc vào SQLite
Tôi cho rằng Google có thể tạo chương trình phụ trợ cơ sở dữ liệu quan hệ của riêng mình cho việc này — nhưng bạn biết đấy, gần đây công ty đã không đưa ra những lựa chọn tốt nhất, vì vậy tôi sẽ do dự khi sử dụng giải pháp thay thế SQLite mà công ty đưa ra
Mọi người phải suy nghĩ về điều này, và tự hỏi mình. nó cung cấp những gì mà localStorage sẽ không cung cấp?
Có thể họ làm, và họ có đủ khả năng thực hiện hạn chế. Điều đó thật tuyệt, miễn là kỳ vọng của mọi người về nơi tất cả những điều này sẽ diễn ra là thực tế. Và mọi người biết đây không phải là một thành phần của HTML5
Shelley nói.
Xin lỗi, "sẽ muốn", không phải "đi theo cách"
Đánh dấu nói.
Hơi lạc đề – 'relative_time' dường như không hoạt động chính xác. Tất cả các tweet được liệt kê là '[đã đăng chưa đầy 5 giây trước]'
edvakf nói.
@BWRic
“Firefox đang ngừng hoạt động vì họ cảm thấy có một triển khai tốt hơn SQLite”
Điều này là không đúng sự thật. Mozilla và Microsoft cho rằng việc yêu cầu một phiên bản SQLite cụ thể [dưới dạng thư viện và dưới dạng phương ngữ SQL] là quá có hại cho web vì họ không thể đảm bảo các phiên bản trong tương lai của SQLite sẽ tương thích với phiên bản hiện tại
Bạn có thể đọc thêm về nó trong các liên kết dưới đây
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/0326. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009AprJun/1242. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/0426. html
http. // o-micron. blogspot. com/2009/09/now-published-alternative-to-sql-for. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009AprJun/0106. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009JulSep/1136. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/0674. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/1263. html
Cuối cùng Hixie quyết định rằng anh ấy không muốn đẩy thông số kỹ thuật hơn nữa trừ khi có bất kỳ nhà cung cấp nào muốn triển khai Cơ sở dữ liệu Web SQL mà không cần sử dụng SQLite
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/0942. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/1052. html
http. // danh sách. w3. org/Archives/Public/public-webapps/2009OctDec/1078. html
Stuart Jones nói.
Không quan tâm – lợi thế của điều này so với hệ thống Ajax/Máy chủ được triển khai tốt là gì?
mors says.
Xin chào
I’m an Opera developer, and participated in Opera’s Web DB implementation
Về bài viết. simple and sweet, but you could have covered error handling better. Note that there is window. SQLError. You can also use resultSet. rows[index], per the specification
Chỉ cần một vài nhận xét về việc triển khai Opera
– Opera provides a default quota of 5MB per domain [origin in html5]. Only after trying to overflow that quota will Opera request anything from the user. Current betas of 10. 50 don’t implement the request, but the final will
– the quota is shared among all databases for a single origin
– Opera support a query execution timeout, so if you do a cartesian merge of a couple billion rows, it won’t lock the database in a never ending statement
– you can see which databases Opera has created by looking at opera. webdatabases
– nếu cơ sở dữ liệu trống, Opera sẽ áp dụng xóa nó khi được GCed, nếu không, bạn có thể sử dụng opera một cách rõ ràng. xóa Cơ sở dữ liệu [tên]. Still at this time there is no explicit way to delete databases, so that method was the best way for us to simply our unit tests cleanup
John Dyer nói.
Tôi đã thực hiện một số thử nghiệm trên Web SQL và thấy rằng Chrome được mã hóa cứng để giới hạn cơ sở dữ liệu ở mức 5 MB, trong khi Safari và Opera sẽ hỏi người dùng xem họ có muốn cho phép cơ sở dữ liệu tăng lên không
Đối với thử nghiệm của mình, tôi đã cố gắng tải toàn bộ Tân Ước tiếng Hy Lạp [khoảng 137.000 từ] với hình thái học của nó. This allows the user to do a lot of complex queries without stressing the server [I’ve only built a few due to the space limits]. bạn có thể thấy nó ở đây. http. //www. ứng dụng web kinh thánh. com/websql/
Giới thiệu Cơ sở dữ liệu Web SQL. Bác sĩ HTML5 – sql nói.
[…] http. //html5doctor. com/introducing-web-sql-databases/API cơ sở dữ liệu Web SQL thực sự không phải là một phần của đặc tả HTML5, nhưng nó là một phần của […]
Basic LISP commands and their syntax. . Life of the IT-Drummer . Common Lisp WebDev Insider says.
[…] Giới thiệu Cơ sở dữ liệu Web SQL. HTML5 Doctor […]
Remy Sharp nói.
@Mark – I see the demo showing relative time ranging from seconds to hours – perhaps a glitch in the Matrix?
@Stuart Jones – một câu trả lời đơn giản [trong số nhiều câu trả lời khác]. going offline. Vì cái này được đưa vào trình duyệt nên nó sẽ hoạt động mà không cần kết nối
@Mors – ha, vâng, tôi có thể nói về nhiều điều nữa – tôi muốn giữ cho bài viết có độ dài vừa phải;]
@John – thử nghiệm hữu ích, chúc mừng. I know you’ve posted to the Chromium group, so hopefully they’ll fix that bad boy. Không có ý nghĩa gì khi đạt đến giới hạn cứng
Kris Zyp says.
The Web SQL Database API has essentially been abandoned by the W3C in favor of the Indexed DB API. Có thể là kịp thời và thú vị để đề cập đến thông số cơ sở dữ liệu mà W3C hiện đang làm việc. http. //www. w3. org/TR/IndexedDB/
Remy Sharp nói.
@Kris – are there any implementations of the Indexed DB API [I didn’t think there were – and we’re much more interested in writing tutorials that people can see working in live browsers]. Nhưng cổ vũ cho việc chỉ ra nó
Mèo ăn lời. Một bộ sưu tập các ghi chú dự án. nói.
[…] in a “that doesn’t look crazy at all” sort of way. I found out about it from The HTML5 Doctors. You can now create SQL databases on the user’s local […]
HTML 5 Dr – Web SQL says.
[…] http. //html5doctor. com/introducing-web-sql-databases 0 Comments Leave A Response […]
cyberdog says.
Nice, was just getting into that with my own iPhone App. But – I’ve found that these run asynchronously, which can lead to unexpected results. I’m generally used to PHP’s database calls, which wait for the server to return a result before carrying on. Is there a way to make these transactions wait until done, or do you have to make a long chain of callback functions?
[On same vein. Javascript doesn’t have a “sleep” or “wait” function, does it? . [ Even in HTML5? If it did, then maybe a wrapper for the SQL transactions could be made to make it behave synchronously…]
Remy Sharp nói.
@cyberdog – there’s no method to tell JavaScript to block [sleep/wait] – so in a word. no. The queries [inserts and selects] queue and run asynchronously. If you check out the Twitter time range example you can see how my code ensures that all the data has been run in before allowing the time range selects to work – even though the transactions run asynchronously. At first I found it a little odd – like you my SQL background was serverside and blocking, but once you get the hang of the idea of queued transactions it’s pretty simple
cyberdog says.
@Remy – Alright, thanks for confirming that. I can work around it with various call-backs and such [and thanks for example], it is just a little weird to get used to as you say. . ]
I just didn’t want to resort to a wasteful “do… while” loop while waiting on the transaction to end… it’s a shame, though, it’d be useful to have some blocking method so an efficient wrapper could be made. Oh well. . ]
HTML5. Introducing Web SQL Databases « Web Page Authority Blog says.
[…] Introducing Web SQL Databases . HTML5 Doctor The Web SQL database API isn’t actually part of the HTML5 specification, but it is part of the suite of specifications that allows us developers to build fully fledged web applications, so it’s about time we dig in and check it out. […]
Daily Digest for February 27th . Nhiều Hơn Trầy Xước Bề Mặt nói.
[…] Shared Introducing Web SQL Databases . HTML5 Doctor. […]
Cheap Website Hosting. Do You Get What You Pay For? says.
[…] Giới thiệu Cơ sở dữ liệu Web SQL. HTML5 Doctor […]
Web SQL databases on Client side . Abhishek Tech Blog says.
[…] Full description is available at html5doctor. […]
Web SQL databases « KoppiePeest says.
[…] Voor een introductie, zie. http. //html5doctor. com/introducing-web-sql-databases/. […]
Anton says.
In transaction as base of ‘executeSql’ use ‘tx’ argument. What this argument mean? Can I use defined above ‘db’ or not?
Adam Boarman's dot com » Blog Archive » Your Questions Answered #7 says.
[…] parts of HTML5, like Web SQL Databases and , are essentially JavaScript APIs. They may not cut down on your need for […]
Shaun Abram » Blog Archive » HTML5 talk at Google Technology User Group says.
[…] side database and can involve asynchronous transactions for a more responsive user experience. http. //html5doctor. com/introducing-web-sql-databases/ […]
The Past, Present & Future of Local Storage for Web Applications . ItPak. net nói.
[…] Giới thiệu Cơ sở dữ liệu Web SQL […]
5 mẹo sử dụng HTML5 ngay hôm nay. Blog của Gene Loparco nói.
[…] cơ sở dữ liệu javascript [SQLite], bạn có thể lưu trữ dữ liệu toàn diện và phức tạp hơn cần thiết cho […]
ericmiraglia. com » Sự phát triển của ứng dụng web [R] năm 2010. HTML5 và hơn thế nữa [Tài nguyên] nói.
[…] Lưu trữ SQL trên máy khách [demo; hướng dẫn/giới thiệu] […]
Fernando nói.
Về phần phiên bản, những gì tôi phát hiện ra là trong các trình duyệt webkit, bạn có thể thay đổi phiên bản, tuy nhiên, bạn cần làm mới trình duyệt để thực hiện các giao dịch tiếp theo với cơ sở dữ liệu
Thấy
http. // nhà phát triển. táo. com/library/safari/#documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase. html%23//apple_ref/doc/uid/TP40007256-CH3-SW2
Norma nói.
Tôi thắc mắc về Chèn lệnh gọi lại. tôi có mã như vậy
db. Giao dịch [
chức năng [giao dịch] {
Giao dịch. thực thiSql[
'CHÈN VÀO myNums[num1, num2, num3] GIÁ TRỊ [?,?,?];',
[tuổi, số lần lặp lại, lượng calo],
hàm số[]{
refreshEntries[];
jQT. quay lại[];
},
/errorHandler
];
}
];
trả về sai;
}
Điều này không hoạt động. Nếu tôi xóa các cuộc gọi lại, việc chèn sẽ xảy ra. Nếu tôi di chuyển các cuộc gọi lại đến trước khi quay lại, refreshEntries sẽ xảy ra và quay lại khiến trang tải lại, thêm một phần chèn khác vào cơ sở dữ liệu
Không có chức năng gọi lại cho phần chèn?
Thanks,
bình thường
5 điều thú vị nhất về HTML5 « Blog của Pinyadda. Blog khởi nghiệp truyền thông nói.
[…] về những cách mà gói đổi mới này đang làm cho trình duyệt web của bạn mạnh mẽ hơn rất nhiều. Những thứ như bộ nhớ cục bộ [cho phép các ứng dụng web sử dụng trình duyệt, thay vì máy chủ của riêng chúng, để lưu […]
Nhà phát triển nói.
Cơ sở dữ liệu được lưu trữ ở đâu trong máy khách. và làm cách nào chúng tôi có thể thay đổi vị trí của cùng một vị trí do người dùng xác định mới
ioconnor nói.
Đây là một ví dụ tuyệt vời. Sqlite hiện là cơ chế duy nhất, có thể trong 10 năm tới, cho phép các ứng dụng trình duyệt phía máy khách mở rộng quy mô
Có bất kỳ kế hoạch nào để viết một loạt bài báo thảo luận về các chủ đề như xử lý lỗi mạnh mẽ, gọi lại không đồng bộ cũng như những khó khăn và vướng mắc khi viết các ứng dụng phía máy khách lớn như Opera và Sqlite không?
Không có nhiều về những chủ đề này và sẽ thật tuyệt nếu tìm thấy tất cả ở đây tại một nơi…
Zakaria nói.
@rem. Tôi đang cố mở một cơ sở dữ liệu sqlite hiện có bằng chức năng “openDatabase”
Nó không thể tải nó. Nó có bình thường không?
Nếu có, tôi có thể tiêm một “. sql” chứa tập lệnh sql cho phép tạo bảng với một số phần chèn vào cơ sở dữ liệu được tạo bằng chức năng “openDatabase”?
cảm ơn
Plnodi nói.
Trong Ghi chú của Nhóm làm việc W3C ngày 18 tháng 11 năm 2010 nói rằng
Beware. Thông số kỹ thuật này không còn được bảo trì tích cực và Nhóm làm việc về ứng dụng web không có ý định bảo trì thêm
Cơ sở dữ liệu Web Sql đã CHẾT ??????
Cho tôi biết ý kiến của bạn
Cảm tạ
xin lỗi
Pratush nói.
Chào mọi người,
Tôi là người mới trong html5 và javascript
Tôi đang làm việc trên ứng dụng web cho điện thoại thông minh [iphone, Android]. Tôi đang gặp phải một số vấn đề về chèn/cập nhật giá trị trong cơ sở dữ liệu của trình duyệt
i. e
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE IF NOT EXISTS foo [id unique, text]'];
tx.executeSql['INSERT INTO foo [id, text] VALUES [1, "synergies"]'];
}];
3db. giao dịch [chức năng [tx] {
tx. execSql['CHÈN/CẬP NHẬT. ’, [], hàm[tx, rs] {
alert["Thành công/Thất bại"];
.............
}
}];
trong một thời gian db. giao dịch bị bỏ qua và do đó, dữ liệu không được lưu trong cơ sở dữ liệu
Vui lòng cho tôi biết nếu có gì đó sai trong mã hoặc cách khác để thực hiện việc này
Tôi thực sự bị mắc kẹt trong vấn đề này
Cảm ơn trước
Pratush nói.
Chào mọi người,
Tôi là người mới trong html5 và javascript
Tôi đang làm việc trên ứng dụng web cho điện thoại thông minh [iphone, Android]. Tôi đang gặp phải một số vấn đề về chèn/cập nhật giá trị trong cơ sở dữ liệu của trình duyệt
i. e
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE IF NOT EXISTS foo [id unique, text]'];
tx.executeSql['INSERT INTO foo [id, text] VALUES [1, "synergies"]'];
}];
3db. giao dịch [chức năng [tx] {
tx. execSql['CHÈN/CẬP NHẬT. ’, [], hàm[tx, rs] {
alert["Thành công/Thất bại"];
.............
}
}];
trong một thời gian db. giao dịch bị bỏ qua và do đó, dữ liệu không được lưu trong cơ sở dữ liệu
Vui lòng cho tôi biết nếu có gì đó sai trong mã hoặc cách khác để thực hiện việc này
Tôi thực sự bị mắc kẹt trong vấn đề này
Làm ơn giúp tôi
Cảm ơn trước
HTML5 and Browser Caching. Part 2 « Geo Development says.
[…] interested in getting your feet wet there’s a great article on how to use Web SQL Database at HTML5 Doctor . Nó bao gồm việc tạo và kết nối với cơ sở dữ liệu, truy vấn và xử lý kết quả cũng như […]
Sam Dutton nói.
Tự quảng cáo một cách trơ trẽn, nhưng tôi đã tạo tiện ích mở rộng của Chrome, sử dụng Cơ sở dữ liệu Web SQL để đánh dấu mã thời gian video HTML và ghi lại các khung hình. http. //bit. ly/framegrabberTiện ích mở rộng
Điều làm tôi ấn tượng là khả năng cơ sở dữ liệu xử lý nhanh chóng và đáng tin cậy các URL dữ liệu, mà [trong trường hợp này] là các chuỗi có tối đa 200.000 ký tự trở lên
Chrome có thể lưu trữ và truy xuất URL dữ liệu cực kỳ nhanh chóng và đặt chúng làm thuộc tính src cho hình ảnh
Tôi đủ lớn để nhớ những ngày mà JavaScript còn chậm hơn rất nhiều, vì vậy những thứ như thế này vẫn khiến tôi ngạc nhiên
Ray Browning nói.
Tôi là người mới ở đây trong vùng đất HTML5. Tôi thực sự thích công nghệ Cơ sở dữ liệu Web SQL của bạn
Tôi đang cố gắng xây dựng một ứng dụng rất đơn giản
Tôi cần truy xuất dữ liệu từ SQL Server DB của chúng tôi và đưa dữ liệu đó vào Web SQL DB. Hiện tại, tôi đã có thể lấy dữ liệu từ SQL Server DB của chúng tôi bằng PHP và đọc dữ liệu từ Web SQL DB cục bộ bằng Javascript
Tôi đang tìm cách tải dữ liệu SQL Server vào Web SQL DB nhưng dường như tôi không thể tìm thấy câu trả lời trong các nhóm tin tức
Bạn có thể giúp một ông già ra ngoài?
Cảm ơn tất cả công việc khó khăn của bạn, chúng tôi thực sự đánh giá cao nó
Ray Browning nói.
Pratush,
tôi cũng mới
I didn’t know if you found a solution to your insert problem
Đây là những gì tôi đang làm và nó có vẻ hiệu quả
function onCreateCompany[]
{
var sNo = tài liệu. itemForm. Công tyKhông. giá trị;
var sName = document. itemForm. Tên công ty. giá trị;
nếu [sKhông == “”. sName == “”]
{
//hiển thị thông báo “Lỗi. 'Số công ty' và 'Tên công ty' là các trường bắt buộc. ”;
}
khác
{
var query = “INSERT INTO Companies [Company_No, Name] VALUES [?, ?];”;
cố gắng
{
localDB. transaction[function[transaction]
{
Giao dịch. executeSql[query, [sNo, sName], function[transaction, results]
{
nếu [. results. rowsAffected]
{
// display a message “Error. không thể chèn dữ liệu. ”;
}
khác
{
// Hiển thị thông báo “Đã chèn hàng. ” + kết quả. chènId;
}
}, trình xử lý lỗi];
}];
}
catch [e]
{
// hiển thị thông báo “Lỗi. Không thể thêm dữ liệu. ” + e + ” ” + truy vấn + “. ”];
}
}
}
Sam Dutton nói.
@Ray Nâu
> Tôi cần truy xuất dữ liệu từ SQL Server DB của chúng tôi và đưa dữ liệu đó vào Web SQL DB. Hiện tại, tôi đã có thể lấy dữ liệu từ SQL Server DB của chúng tôi bằng PHP và đọc dữ liệu từ Web SQL DB cục bộ bằng Javascript
> Tôi đang tìm cách tải dữ liệu SQL Server vào Web SQL DB nhưng dường như tôi không thể tìm thấy câu trả lời trong các nhóm tin tức
Tôi không chắc cách tốt nhất để làm điều này, nhưng bạn có thể
– export your SQL Server data to and XML or JSON file
– lấy tệp XML hoặc JSON bằng AJAX từ một trang web
– phân tích cú pháp dữ liệu và lưu trữ nó trong cơ sở dữ liệu phía máy khách
Tôi không biết liệu có kế hoạch cho cơ sở dữ liệu phía máy khách 'xây dựng sẵn' có thể tải xuống hay không
Ray Browning nói.
Tôi nhận thấy rằng WebSQL là một cách rất hay và dễ dàng để làm việc với dữ liệu trên thiết bị cục bộ MÀ KHÔNG CÀI ĐẶT BẤT CỨ THỨ GÌ
Sẽ thật tuyệt khi thấy ai đó tiếp tục công việc trên WebSQL và tiếp tục phát triển
webaloman nói.
Về phiên bản
nếu bạn mở phiên bản w/o
var db = openDatabase[‘mydb’, ”, ‘cơ sở dữ liệu đầu tiên của tôi’, 2 * 1024 * 1024];
sau đó bạn có thể lấy phiên bản hiện tại [nếu DB tồn tại] bằng cách
db. phiên bản
và sau đó tùy chọn thực hiện changeVersion
Bộ binh nói.
Xin chào,
Tôi có một câu hỏi nhanh đó là
Sự khác biệt giữa SQL Server 2008 và Web SQL là gì ???
Remy Sharp nói.
@Infanty – một là SQL Server 2008 và cái còn lại dựa trên SQLite 3. 6. 19. Vì vậy, bạn có thể tìm hiểu thêm về SQLite từ tài liệu của họ. http. //www. sqlite. tổ chức/
Bộ binh nói.
@ tiến sĩ. Remy Sharp. Câu hỏi của tôi là. Tôi có thể thay thế máy chủ SQL 2008 thành web sql không ??
web sql là gì ??
Remy Sharp nói.
1. Không – Web SQL là công nghệ *phía máy khách*. SQL Server 2008 – Tôi sẽ nhảy vọt và đoán đó là phía máy chủ
2. Xem bài viết phía trên những bình luận này
3. Nó được đưa vào trình duyệt của bạn nếu bạn đang sử dụng Safari, Chrome hoặc Opera
4. Phụ thuộc vào trường hợp kinh doanh của bạn. Google sử dụng nó để duy trì Gmail trên nền tảng di động để lưu trữ tất cả dữ liệu liên hệ và email [chủ đề, nội dung, v.v.]
Bộ binh nói.
@ tiến sĩ. Remy Sharp. Cảm ơn thông tin của bạn
Câu hỏi cuối cùng của tôi là liệu chúng tôi có thể thực hiện sao lưu hoặc mọi thứ chúng tôi làm trong máy chủ SQL 2008 không??
Ustuka Doyran nói.
Xin chào
nhập khẩu được không. csv vào cơ sở dữ liệu web-sqlite?
Nếu có, xin vui lòng hiển thị với mẫu
kiểm tra nói.
Có thể chia sẻ db giữa hai ứng dụng web không?
Ray Browning nói.
Tôi biết rằng dự án đã ngừng hoạt động nhưng có một số người trong số chúng tôi ở đây đang sử dụng nó và yêu thích WebDB
Tôi nghe nói rằng Google đang sử dụng một số nội dung WebDB cho GMail ngoại tuyến?
Tôi không biết làm nhưng có ai nghĩ đến việc viết một plugin cho IE hoặc Fire Fox không. Tôi có những người dùng sử dụng IE và muốn tận dụng lợi thế của công nghệ
Tôi đã có thể tải dữ liệu vào các hộp tổ hợp “Chọn” từ SQL Server bằng PHP và cũng ghi lại bằng PHP. Không có WebDB trên máy khách, công việc ngoại tuyến sẽ không thể thực hiện được
cảm ơn bác sĩ
cá đuối
karthikraja nói.
Bài đăng hay. Tôi nghi ngờ về kích thước Cơ sở dữ liệu Web SQL. Bạn có thể vui lòng cho tôi biết cách xử lý khi vượt quá kích thước đã cho không. Vui lòng cho tôi biết quy trình mở rộng bộ nhớ đã cho. Tôi đang làm việc trên trình duyệt iPhone, Android và Blackberry…. Cảm ơn trước …
Andy Blum nói.
Tôi rất buồn vì điều này sẽ không phải là một phần của thông số kỹ thuật chính thức. Đối với tôi, đây dường như là một giải pháp lý tưởng để giảm tải công việc cho PC cục bộ để cơ sở dữ liệu tập trung không bị quá tải. Tôi có thể hình dung các ứng dụng quy trình công việc phức tạp trong đó trạng thái db được khởi tạo khi bắt đầu phiên thông qua REST. Trạng thái cũng có thể được gửi đến máy chủ tập trung vào cuối phiên thông qua REST
PG nói.
Xin chào,
Bạn có thể cho tôi biết làm cách nào để biết có bao nhiêu byte dữ liệu trong db webSQL của tôi không. Tôi cần kiểm tra xem các trình duyệt khác nhau có thể hỗ trợ bao nhiêu byte dữ liệu. Tôi cần tìm kích thước tính bằng byte cho cơ sở dữ liệu webSQL
Lũ khốn nói.
PG@ không biết cách tính dung lượng cơ sở dữ liệu. Nhưng đối với trình duyệt thì bạn không cần lo lắng vì khi gọi window. cơ sở dữ liệu mở[. ,. ,. , maxMemory], khi bắt đầu, bạn chỉ cần đặt kích thước ban đầu của bộ nhớ. Nếu cơ sở dữ liệu cần thêm bộ nhớ sau đó, thì trình duyệt sẽ tự động hiển thị hộp thoại cho biết cơ sở dữ liệu của bạn cần bộ nhớ. và khi bạn bấm vào nút “Ok” thì trình duyệt sẽ tự động tăng bộ nhớ
PG nói.
Cảm ơn Prats vì phản hồi của bạn. Chỉ muốn xác nhận xem điều này có đúng với trình duyệt di động dành cho BB, Android và iphone safari không?
Lũ khốn nói.
Vâng…
gaurav v bagga nói.
Xin chào,
Tôi thắc mắc về các vấn đề bảo mật, chẳng hạn như tôi có thể dễ dàng xem qua mã SQL của bạn. Các cách khác nhau để mã SQL có thể được bảo vệ để nó không dễ truy cập là gì
Một điều tôi có thể nghĩ ra là mã hóa nhưng chỉ muốn quan điểm của bạn
Ray Browning nói.
> Chào,
>Tôi thắc mắc về các vấn đề bảo mật, giống như tôi có thể dễ dàng truy cập>thông qua mã SQL của bạn. Các cách khác nhau mà mã SQL có thể> được bảo vệ để nó không dễ truy cập là gì
>Một điều tôi có thể nghĩ ra là mã hóa nhưng chỉ muốn quan điểm của bạn >quan điểm
Có lẽ điều tốt nhất cần làm là giới hạn dữ liệu ở phía SQL bằng cách sử dụng chế độ xem và bảo mật
Và nói.
Tôi đã thử sử dụng cơ sở dữ liệu web sql. Trong mã của tôi, tôi thực hiện cuộc gọi opendatabase tại thời điểm người dùng đăng nhập. Và khi người dùng tiếp tục, tôi sẽ chèn một số dữ liệu vào db này và nhận thấy rằng dữ liệu đang được lưu. Nếu người dùng đăng xuất và đăng nhập lại, tôi nhận thấy db được tạo lại, dẫn đến mất dữ liệu được lưu trữ trước đó. Điều gì có thể là lý do cho điều đó?
osc2nuke nói.
tôi muốn tất cả những ai gắn bó với webdb, hãy cung cấp javascript xuất sắc này để chèn. tập tin sql. http. //html5sql. com/chỉ mục. html trong môi trường web
DS nói.
Ai đó có thể vui lòng hướng dẫn tôi về việc dữ liệu được lưu trữ trong cơ sở dữ liệu web sql có liên tục không?
Tôi đã tạo một cơ sở dữ liệu và sau đó thêm một số bản ghi vào đó. Tôi không thể truy cập cơ sở dữ liệu qua bất kỳ trang nào khác chứng minh khái niệm “cùng nguồn gốc”
Nhưng nếu tôi cần truy cập lại cơ sở dữ liệu để trích xuất dữ liệu thì tôi phải làm như thế nào?
Hãy giúp tôi. Cảm ơn bạn
Ray Browning nói.
Toàn bộ ý tưởng của WebDB là để nó tồn tại. Tôi không chắc tại sao cơ sở dữ liệu của bạn lại biến mất. Chúng tôi sử dụng đoạn mã sau và nó có vẻ hoạt động. Bạn có chắc là trình duyệt của bạn hỗ trợ nó?
nếu [localDB==null]
{
var shortName = ‘MyDB’;
phiên bản var = '1. 0’;
var displayName = ‘MyDatabase’;
var kích thước tối đa = 65536;
localDB = cửa sổ. openDatabase[tên ngắn, phiên bản, tên hiển thị, kích thước tối đa];
}
nếu [. cửa sổ. openDatabase]
{
DisplayMyError[“Trình duyệt bạn đang sử dụng không hỗ trợ điều này. Google Chrome được khuyên dùng. ”];
}
khác
{
ProcessSomeData[];
}
onlywebpro nói.
Vào ngày 18 tháng 11 năm 2010, W3C đã thông báo rằng cơ sở dữ liệu Web SQL là một đặc tả không dùng nữa. Đây là khuyến nghị dành cho các nhà phát triển web không sử dụng công nghệ này nữa vì thông số kỹ thuật sẽ không nhận được bản cập nhật mới nào và các nhà cung cấp trình duyệt không được khuyến khích hỗ trợ công nghệ này
Trân trọng,
Quản lý của onlyWebPro. com
onlywebpro nói.
Nhà phát triển nên sử dụng IndexedDB để phát triển ứng dụng web sắp tới
Jumaru nói.
Tôi hơi bối rối về một điều. Vì execSql chạy không đồng bộ nên điều đó không có nghĩa là chạy
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE IF NOT EXISTS foo [id unique, text]'];
tx.executeSql['INSERT INTO foo [id, text] VALUES [1, "synergies"]'];
}];
5
sẽ tạo ra kết quả không mong muốn nếu phần chèn chạy trước khi bảng tạo chạy ???
var db = openDatabase['mydb', '1.0', 'my first database', 2 * 1024 * 1024];
db.transaction[function [tx] {
tx.executeSql['CREATE TABLE IF NOT EXISTS foo [id unique, text]'];
tx.executeSql['INSERT INTO foo [id, text] VALUES [1, "synergies"]'];
}];
6andodew nói.
có thể sử dụng cơ sở dữ liệu bên ngoài?
Sanchit nói.
Thành viên tôn trọng,
Tôi đang có máy chủ cơ sở dữ liệu và đang cố chèn dữ liệu từ tài liệu HTML5 của mình vào Máy chủ SQL. Sử dụng các mã quy định, tôi thậm chí không thể kết nối với cơ sở dữ liệu của mình. Làm thế nào tôi nên viết mã cho vấn đề. Nội dung trang đăng ký của tôi như sau…
Đăng ký trong HTML5
var fname = tài liệu. getElementById[“txtFirstName”];
var lname = tài liệu. getElementById[“txtLastName”];
var giới tính = tài liệu. getElementById[“giới tính”];
địa chỉ var = tài liệu. getElementById[“txtarAddress”];
var emailid = tài liệu. getElementById[“emailID”];
var dob = tài liệu. getElementById[“DOB”];
var create = “TẠO BẢNG NẾU KHÔNG TỒN TẠI REGUSINGHTML5[RegID INT ,FirstName TEXT,LastName TEXT,Gender TEXT, Address TEXT, EmailID TEXT, DateOfBirth TEXT, Primarykey[RegID]]”;
var insert = “CHÈN VÀO ĐĂNG KÝHTML5 [Văn bản Tên, Văn bản Họ, Văn bản Giới tính, Văn bản Địa chỉ, Văn bản ID Email, Văn bản Ngày sinh] GIÁ TRỊ [?, ?,?,?,?,?”;
Tạo nên[];
chức năng Tạo [] {
var db=cửa sổ. openDatabase['Mẫu','10. 0. 1600. 22′,'HTML5 Reg',2*1024*1024];
db. giao dịch[chức năng [tx]{
tx. execSql[tạo];
}];
cảnh báo ["Cơ sở dữ liệu đã tạo"]
}
hàm Chèn [] {
var db = openDatabase['Mẫu', '10. 0. 1600. 22’, ‘HTML5 Reg’, 2 * 1024 * 1024];
db. giao dịch[chức năng [tx] {
tx. execSql[insert, [fname. giá trị, tên. giá trị, giới tính. mục, địa chỉ. giá trị, địa chỉ email. giá trị, dob. giá trị]];
}];
alert[“Cơ sở dữ liệu đã chèn”];
}
MẪU ĐĂNG KÝ TRỰC TUYẾN
Tên đầu tiên
Họ
Giới tính
Nam giới
Giống cái
Địa chỉ nhà
ID email
Ngày sinh
Chèn vào DB
–>
Ngoài ra, tôi đang sử dụng SQL Server 2008. Hãy giúp tôi ra
Cám ơn bạn
Sanchit Choubey
Wytze nói.
Trên thực tế, Safari có hỗ trợ changeVersion [ít nhất là trên máy tính Windows của tôi], nhưng có một nhược điểm. bạn phải cung cấp NĂM đối số nếu không nó sẽ thất bại
Tranh luận
1. phiên bản dự kiến
2. phiên bản mới
3. gọi lại giao dịch [bạn có thể thực thi SQL tại đây như một phần của thay đổi phiên bản]
4. gọi lại thất bại [nếu thay đổi phiên bản hoặc gọi lại giao dịch không thành công]
5. gọi lại thành công [nếu thay đổi phiên bản và gọi lại giao dịch thành công]
Tôi chưa thử nghiệm tính năng này trên thiết bị iOS nhưng nó phù hợp với thông số kỹ thuật của Safari được cung cấp tại đây
Remy Sharp nói.
@Wytze – lol. Bạn nói "thực ra" như thể bạn đang sửa lỗi cho tôi. Lưu ý rằng bài viết đã được viết hơn 2 năm trước – đó là trạng thái hiện tại
Cảm ơn bạn đã thử nghiệm hỗ trợ mới nhất và cung cấp thông tin mới nhất
Andrew nói.
Cơ sở dữ liệu web SQL có được gắn với một miền cụ thể như LocalStorage không?
Andrew nói.
Mặc dù đặc tả web SQL không còn được phát triển nữa, web SQL dường như là giải pháp dữ liệu liên tục duy nhất cho cả thiết bị iOS và Android được hỗ trợ với một cơ sở mã, ngoài lưu trữ cục bộ
Và lưu trữ cục bộ trên thiết bị iOS dường như không ổn định một cách đáng tin cậy sau bản cập nhật cuối cùng
MR nói.
Hi, I am using websql in my mobile app, I am using around 12-13 tables. Lúc đầu, tôi tạo các bảng này, nhưng vấn đề là khi tôi khởi động ứng dụng lần đầu tiên, chỉ có 6-7 bảng được tạo và dừng ở đó. Không có lỗi, không có thất bại. Chỉ dừng lại ở đó. bạn có thể giúp tôi với đó
Ray Browning nói.
Chào buổi sáng WebDB
Có thể lấy một phần bổ trợ hoặc Polyfill mà chúng tôi có thể đưa vào HTML của mình để tải WebDB không?
I saw that the good doctor Remy had something on https. //ý chính. github. com/350433
Tôi chưa có thời gian để xem lại mã. Đây có phải là điều chúng ta có thể làm không?
Tôi ước tôi biết 1/10 những gì bác sĩ vĩ đại biết
Thanks
Alesha Fernandes nói.
var db = openDatabase[‘mydb’, ‘1. 0’, ‘cơ sở dữ liệu đầu tiên của tôi’, 2 * 1024 * 1024];
cơ sở dữ liệu trên 'mydb' được tạo trong SQL Server hoặc MYSQL, vui lòng cho tôi biết cơ sở dữ liệu này được tạo ở đâu. Hay chúng ta cần một js để giữ thông tin cơ sở dữ liệu. Cần biết điều này khẩn cấp cho dự án của tôi
Bruce Lawson nói.
It’s created in the browser. It uses SQLite. http. // vi. wikipedia. org/wiki/SQLite
Vaibhav nói.
Độ dài ký tự tối đa của truy vấn SQL trong Web SQL mà tôi có thể vượt qua là bao nhiêu?
Làm cách nào để tải dữ liệu JSON vào các bảng Web SQL thông qua một URL trong iOS?. Cộng đồng Android - Phát triển ứng dụng nói.
[…] Introducing webSQL databases […]
Lluís Segura nói.
Xin chào,
is it possible to accés to WebSQL database with any php library?
Thanks
Tobe nói.
Cảm ơn bạn, điều này đã giúp tôi rất nhiều. Tôi mới sử dụng javascript và tôi thường phụ thuộc rất nhiều vào mã như mã ở đây trong các dự án của tôi để hướng dẫn cho tôi một chút
nery nói.
hi,
I’m starting to use the database of chrome but i have a problem about the foreign keys, these are not actives
tôi đã đọc một tài liệu sqlite và tôi cần thực hiện lệnh này
“PRAGMA Foreign_keys = boolean;”
nhưng tôi không biết làm thế nào trong javascript. tôi đã thử sử dụng chức năng của bạn
var db = openDatabase[‘mydb’, ‘1. 0’, ‘cơ sở dữ liệu đầu tiên của tôi’, 2 * 1024 * 1024];
db. giao dịch[chức năng [tx] {
tx. execSql[‘PRAGMA Foreign_keys = boolean’];
}];
nhưng không hoạt động…
Bạn co thể giup tôi được không??
cảm ơn
nery nói.
db. giao dịch[chức năng [tx] {
tx. execSql[‘PRAGMA Foreign_keys = ON’];
}];
bardu nói.
Tôi không quen sử dụng WebSQL hay SQLite, tuy nhiên, chúng tôi có một trường hợp sử dụng mà chúng tôi cần tải SQLite DB xuống máy tính bảng Android và tìm nạp dữ liệu qua JavaScript
Liệu chúng tôi có thể mở DB đã tải xuống này qua openDatabase không [. ] hay DB phải được tạo bởi WebSQL?
Cảm ơn trước
Stephan
Hướng dẫn toàn diện để chơi trò chơi HTML5 ngoại tuyến. Người chơi HTML5 nói.
[…] API tiếp theo là Cơ sở dữ liệu Web SQL. Cơ sở dữ liệu Web SQL là cơ sở dữ liệu phía máy khách cho phép bạn lưu trữ thông tin cho máy khách theo cùng một cách […]
Umesh nói.
hi,
Tôi đang sử dụng cơ sở dữ liệu sqlite với phonegap
tôi gặp vấn đề về khóa ngoại
‘PRAGMA Foreign_keys = ON;’
cái đó. db. giao dịch [chức năng [tx] {
cái đó. db. execSql[‘PRAGMA Foreign_keys = ON’];
}
cũng tx. execSql[‘PRAGMA Foreign_keys = ON’];
bất kỳ ai có thể giúp tôi ra ???
Keerthi Kumar nói.
cách lưu các giá trị bảng cơ sở dữ liệu sql trong indexeddb bằng html 5
Xin chào các chuyên gia html5
Khi tải trang html5, tôi muốn tìm nạp các giá trị từ bảng cơ sở dữ liệu sql
và phải lưu trữ trong indexeddb bằng html5 [hoạt động hoàn toàn ngoại tuyến]
Khi nhấp vào nút gửi, tôi muốn lưu bằng kết nối cơ sở dữ liệu [thao tác trực tuyến]
Ví dụ. Tôi phải bảng cơ sở dữ liệu huyện và taluk
Bây giờ Đang tải đang tải quận và sau khi chọn quận một lần nữa, tôi đang gửi yêu cầu tới
máy chủ và tìm nạp taluk, sẽ mất nhiều thời gian để tránh điều này đang sử dụng phương pháp này
nhưng tôi chưa quen với khái niệm này, có ai có thể vui lòng giúp tôi giải quyết vấn đề này không?
cảm ơn trước
[Kerthi Kumar]
Just. a. guy says.
Tôi vừa đọc xong bài viết giới thiệu đầu tiên của mình về indexedDB
Tôi thấy giao diện indexedDB quá phức tạp
Tôi nhận ra nhu cầu gọi lại. Có vẻ như mục tiêu của nó là để
nhúng tất cả công việc không đồng bộ vào đại lý DOM
Đối với tôi, nỗ lực mã hóa này có thể đã được xử lý
đồng bộ hơn trong chuỗi nhân viên web và
sau đó được chuyển trở lại tác nhân DOM thông qua
nhắn tin gọi lại
Tôi thấy giao diện Web SQL hợp lý hơn
Tuy nhiên, giao diện Web SQL không được dùng nữa
Xấu hổ làm sao
mohsen nói.
Xin chào,
Tôi là người mới bắt đầu sử dụng HTML5
Chúng tôi có thể chuyển đổi cơ sở dữ liệu SQL web HTML5 sang máy chủ SQL hoặc cơ sở dữ liệu truy cập không?
Cảm ơn bạn,
Mohsen
Alin nói.
Cơ sở dữ liệu SQLite 'mydb' sẽ được lưu trữ ở đâu? . db’. Xin hãy giúp tôi về điều đó