2010-04-22 18 views
26

Hy đó,HTML5 lưu trữ cơ sở dữ liệu (SQL lite) - vài câu hỏi

tôi không thể tìm đủ nguồn lực mới bắt đầu trên web về HTML5 ví dụ sử dụng lưu trữ cơ sở dữ liệu (CRUD)

Tôi đang mở (tạo) DB của tôi như thế này:

var db; 

$(document).ready(function() 
{ 

    try 
    { 
     if (!window.openDatabase) { 
      alert('Not Supported -> Please try with a WebKit Browser'); 
     } else { 
      var shortName = 'mydatab'; 
      var version = '1.0'; 
      var displayName = 'User Settings Database'; 
      var maxSize = 3072*1024; // = 3MB   in bytes 65536 
      db = openDatabase(shortName, version, displayName, maxSize);  
      } 
    } 
    catch(e) 
    { 
     if (e == 2) { 

      alert("Invalid database version."); 
     } else { 
      alert("Unknown error "+e+"."); 
     }return; 
    } 
}); 

CÂU HỎI 1: Tôi có thể tạo và sử dụng bao nhiêu cơ sở dữ liệu trên một miền? CÂU HỎI 2. Cách xóa (thả) một cơ sở dữ liệu. -> Tôi chưa tìm ra điều này.

Để tạo truy vấn sql bạn sử dụng giao dịch:

function nullDataHandler(transaction, results) { } 
function createTables(db) 
{ 
    db.transaction(function (transaction) 
    { 
    //first query causes the transaction to (intentionally) fail if the table exists. 
    transaction.executeSql('CREATE TABLE people(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL DEFAULT "John Doe", shirt TEXT NOT NULL DEFAULT "Purple");', [], nullDataHandler, errorHandler); 
    }); 
} 

CÂU HỎI 3: Làm thế nào để là transaciton trên thất bại nếu một bảng tồn tại? Là nullDataHandler có liên quan để làm điều này? Ở đâu trên web có tài liệu giải thích về API executeSql? Lập luận?

thx

+0

Hey tôi đã viết ra hướng dẫn sử dụng cơ bản này, trong đó có một vài ví dụ làm việc .... Hy vọng họ có thể giúp đỡ một số .... http://mnesia.wikispaces.com/HTML5+and+webstorage Như bây giờ tôi nghĩ không ai thực sự chú ý nhiều đến lưu trữ dựa trên WEB SQL .... Và đó là điều dễ hiểu ... Hệ thống lưu trữ cục bộ dựa trên cặp khóa hoạt động rất tốt cho hầu hết các ứng dụng web .... Nhắc tôi làm thế nào redis và memcache đã đưa ra so với RDBMS ... Đặc biệt là cho các ứng dụng mà không thực sự cần rằng loại cấu trúc trong đó dữ liệu ... – Sid

Trả lời

32

Thông số bạn đang tìm kiếm là Web SQL Database. Đọc nhanh gợi ý:

  1. Không có giới hạn, mặc dù khi cơ sở dữ liệu của bạn vượt quá kích thước nhất định (5MB có vẻ là mặc định), trình duyệt sẽ nhắc người dùng cho phép nhiều không gian hơn.
  2. Không có cách nào, trong thông số hiện tại, để xóa cơ sở dữ liệu.
  3. Hàm executeSql() nhận một tham số gọi lại lỗi tùy chọn.

HTML5 Doctor cũng có phần giới thiệu tốt.

Về sau, tôi khuyên bạn nên xem Indexed DB. Web SQL về cơ bản đã bị hủy bỏ vì không có chuẩn cho SQL/SQLite. Ngay cả Microsoft đã ủng hộ Indexed DB. Xem Consensus emerges for key Web app standard.

+0

Cảm ơn Jeff. Tôi gần như đã đọc xong Consesus - nó rất thông tin, như phần còn lại của những gì bạn nói. Như bạn thấy, điểm & câu trả lời được thêm vào. Nhưng trước khi tôi rời khỏi .. tôi nên sử dụng gì bây giờ để lưu trữ dữ liệu người dùng? Nó không phải là nhiều dữ liệu .. nhưng những điều tôi cần phải nhớ cho một người sử dụng .. như một số địa chỉ trang web vv .. vì vậy thời gian tiếp theo ông đăng nhập danh sách sẽ được trong một danh sách phụ. Bây giờ, hhave đề cập đến nó là một ứng dụng web iphone -> đó là lý do tại sao tôi sử dụng WEB DB. (nhưng tôi không thích nó). – PathOfNeo

+0

Thật tuyệt khi có một số tính năng html5 trong túi của bạn. Tôi thích các cơ chế sessionStorage và localStorage ... tôi đã ngừng sử dụng query_string và truyền dữ liệu cần thiết với hai cơ chế đó. Tôi chỉ không chắc chắn trong bao lâu, sự tồn tại của localStorage là gì và có một số lý do khác ngoài những lý do tại sao tôi nghĩ rằng DB WEB sẽ làm tốt. – PathOfNeo

+1

Dữ liệu được lưu trữ với localStorage sẽ vẫn tồn tại cho đến khi người dùng quyết định xóa nó (Cài đặt> Safari> Cơ sở dữ liệu). Tôi khuyên bạn nên xem tài liệu của Apple: http://developer.apple.com/safari/library/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007256-CH1-SW1 –

2
CREATE TABLE IF NOT EXISTS table_name 

sẽ tạo bảng table_name chỉ khi nếu không tồn tại.

1

Tôi tìm thấy WebSQL sau hướng dẫn hữu ích cho các hoạt động CRUD cơ bản, vì chúng chứa các ví dụ và giải thích những gì mã đã được thực hiện:

Và các liên kết sau đây cho SequelSphere (một HTML5 JavaScript SQL Relational Database Phương án thay thế cho WebSQL hoạt động trong tất cả các trình duyệt, lưu trữ dữ liệu trong LocalStorage và IndexedDB):

+0

Cơ sở dữ liệu SQL Web không được chấp nhận (http://www.w3.org/TR/webdatabase/), phải không? – Maxbester

+1

@Maxbester Nó không được chấp nhận. W3 sẽ không cải thiện tài liệu của websql khi tất cả các nhà cung cấp đã triển khai cùng một công cụ sql, SQLite, nhưng nó vẫn là một chức năng được ghi lại và sẽ tiếp tục là một phần của định nghĩa tiêu chuẩn Web SQL –

1

Sử dụng PersistenceJS có một API persistence.reset mà sẽ xóa các dữ liệu sạch. PersistenceJS Site

Đối với phát triển/mục đích thử nghiệm, bạn có thể xem nội dung và xóa WebSQL, IndexedDB, cookies, vv bằng cách tìm kiếm cho tên miền của bạn tại URL này trong Chrome:

chrome://settings/cookies 

Ở đó, bạn có thể xóa tất cả bộ nhớ cho một miền hoặc chỉ một số thực thể lưu trữ cục bộ nhất định. Có, URL chỉ ngụ ý 'cookie', nhưng giao diện tại URL này bao gồm tất cả các loại bộ nhớ ngoại tuyến. Tôi nghĩ nếu giao diện công cụ dành cho nhà phát triển Chrome có khả năng nhấp chuột phải và xóa một thực thể lưu trữ dữ liệu trong tab Tài nguyên cùng với việc kiểm tra nội dung. Nhưng hiện tại, tất cả những gì tôi biết là URL cài đặt/cookie.

1

Nó được hỗ trợ trên safari iOS, chrome và một số phiên bản mới nhất của opera .... nó chưa được chấp nhận bởi IE và Firefox đó là ...... những gì người ta có thể hỏi hơn db địa phương trên trình duyệt trong đó có hệ thống db quan hệ ... vì vậy u có thể truy vấn nó dễ dàng và xử lý dữ liệu phức tạp .... mà là rất khó khăn hơn trong các hệ thống dựa trên chính vale ..

Tôi nhớ đọc thậm chí nó hỗ trợ tối đa một gb .i không chắc chắn ....

Lưu ý:

1) Tôi muốn đề cập đến một điểm có một IDE được gọi là Dashcode mà chúng ta hãy xây dựng các ứng dụng web trông giống như iOS native.even cũng có web SQL được sử dụng.

2) thực tế web SQL là triển khai SQLite trên trình duyệt.

3) SQLite là ưa thích nhất ở cả iOS và Android như db cho mã nguồn gốc ..

Các nhược điểm của SQLite:

Các Thiếu sự hỗ trợ đồng thời nhưng đó không phải là một vấn đề trong trình duyệt vì nó sẽ được sử dụng bởi người dùng duy nhất tại một thời điểm .. đây là một trường hợp cũng trong điện thoại di động.

Kết luận:

Web Sql đang bị bỏ rơi bởi w3 đó là một điều đáng buồn vì vậy chúng tôi đã khám phá các lựa chọn khác.

+0

rất chắc chắn bị bỏ rơi http://www.w3.org/TR/webdatabase/ – neonstalwart

+1

Cụ thể hơn, hỗ trợ cho thông số kỹ thuật đã bị hủy bỏ, tuy nhiên, nhiều nền tảng vẫn hỗ trợ các API. Câu hỏi đặt ra là - kể từ khi phát triển hơn nữa và hỗ trợ của spec đã dừng lại, API sẽ được hỗ trợ trên nhiều nền tảng trong bao lâu. Đó là lý do tại sao @Jeffery Đề nghị chuyển sang DB được lập chỉ mục. – Bamerza

+0

Có, tôi đồng ý với bạn tất cả tôi đã không đọc tài liệu rõ ràng ... Cảm ơn bạn đã chỉ ra ... –

Các vấn đề liên quan