2012-02-13 6 views
3

내가내 데이터베이스는 폰갭

document.addEventListener("deviceready", onDeviceReady, false); 

function populateDB(tx) { 
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); 
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")'); 
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); 
} 

// Query the database 
// 
function queryDB(tx) { 
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
} 

// Query the success callback 
// 
function querySuccess(tx, results) { 
    var len = results.rows.length; 
    console.log("DEMO table: " + len + " rows found."); 
    for (var i=0; i<len; i++){ 
     console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data); 
    } 
} 

// Transaction error callback 
// 
function errorCB(err) { 
    console.log("Error processing SQL: "+err.code); 
} 

// Transaction success callback 
// 
function successCB() { 
    var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
    db.transaction(queryDB, errorCB); 
} 

// PhoneGap is ready 
// 
function onDeviceReady() { 
    var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
    db.transaction(populateDB, errorCB, successCB); 
} 
같은 폰갭을 사용하여 만든 데이터베이스의 일부 데이터를 저장하기 위해 노력하고 있어요 통해 안드로이드에 /data/data/package-name/app_database/file__0/*.db에 저장하기

데이터베이스가 생성되지 않습니다. 대신에 /data/data/package-name/app_database/file__0/00000000000000001.db에 저장됩니다.

데이터를/data/data/package- 이름/데이터베이스/Database.db

수행 방법?

+0

왜 sharedpreferences를 사용하지 않습니까? – goodm

+0

나는이 코드가 sqlite를 통해 가능한 모든 모바일 플랫폼에 공통적으로 적용될 것이라는 이유 때문에 phonegap을 개발 중이다 .... 그게 내가 sqlite를 선호하는 이유 –

+0

데이터베이스를 만드는 방법을 이해하지 못한다. "base = context.openOrCreateDatabase ("db ", Context.MODE_PRIVATE, null);"을 사용하여 " 그리고 그것은 항상/data/data/package-name/database/db에 있습니다. – goodm

답변

1

PhoneGap 소스 코드를 수정하지 않으면 데이터베이스를 만드는 디렉토리를 변경할 수 없습니다. 더 나은 질문은 왜 /data/data/package-name/app_database/file__0/00000000000000001.db 대신 /data/data/package-name/database/Database.db에 데이터를 저장하겠습니까?

업데이트 : 이제는 내가 할 수있는 유일한 방법은 더 나은 요구 사항을 이해하면 write a plugin for Android은 자바 측을 기본 Java 측에 인터페이스합니다. 그런 다음 서비스가 생성하여 채워진 Java에서 DB를 열고 읽을 수 있습니다.

Marc Murphy (CommonsWare)가이 thread의 이유를 설명합니다.

+1

안녕하세요 사이먼, 답장을 보내 주셔서 감사합니다 .... 사실 나는 백그라운드에서 실행하고 /data/data/package-name/database/Database.db 데이터베이스를 일부 값으로 채 웁니다.이제 phonegap 측면에서이 데이터베이스 값을 읽고 수정하고 싶습니다 ... –

+0

Thanks Simon : D –

+1

KitKat DB 파일이 이제/data/data//app_webview/databases/file__0에 있기 때문에/1' –

0

참조 : http://developer.android.com/guide/topics/data/data-storage.html#dbhttp://developer.android.com/guide/developing/tools/adb.html#sqlite. 데이터베이스를 만들 때 .db가/data/data/package name/databases /에 만들어지면서 데이터베이스 이름과 파일 이름을 지정할 수 있습니다.

죄송합니다. 제공하신 코드는 데이터베이스 작성 방법을 보여주지 않습니다.

+0

나는이 window.openDatabase ("Database", "1.0", "PhoneGap Demo", 200000)와 같은 Phonegap API를 사용하여 데이터베이스를 만들었습니다. –

0

를 저장하고 쉽게 데이터를 검색 할 수있는 더 좋은 방법을 제공하고, 폰갭 아무튼 실제로는 SQLite 데이터베이스를 사용하지만 WebSQL 구현 또는 localStorage는 사용하지 않습니다.

원시 SQLite를 사용하려는 경우 this plugin에서 데이터베이스 작업 구문은 Phonegap 저장소 API와 거의 같습니다.