2011-03-09 15 views
12

मैं एक्सकोड पर एक फोनगैप प्रोजेक्ट का उपयोग कर रहा हूं। मैं जावास्क्रिप्ट का उपयोग करके SQLite डेटाबेस से कनेक्ट करने का प्रयास कर रहा हूं।स्थानीय स्तर पर जावास्क्रिप्ट में SQLite डेटाबेस

मैंने SQLite टूल में "myDatabase.sqlite" फ़ाइल बनाई है। अब मेरा सवाल यह है कि मैं अपने कोड में उस डेटाबेस को कैसे खोलूं? अभी मैं निम्नलिखित कोड का उपयोग कर रहा:

var db; 
var shortName = 'myDatabase'; 
var version = '1.0'; 
var displayName = 'myDatabase'; 
var maxSize = 65535; 


db = openDatabase(shortName, version, displayName,maxSize); 

db.transaction(function(transaction) { 
    transaction.executeSql('SELECT * FROM User;', [], 
    function(transaction, result) { 

     if (result != null && result.rows != null) { 
      for (var i = 0; i < result.rows.length; i++) { 
       var row = result.rows.item(i); 
       alert(row.ID); 
      } 
     } 
    }, errorHandler); 
}, errorHandler, nullHandler); 

समस्या यह है कि डेटाबेस में खाली है, क्योंकि यह त्रुटि 'ऐसा कोई तालिका' देता है जब मैं इसे चलाने के लिए है। मुझे लगता है कि यह "myDatabase" नामक एक नया डेटाबेस बनाया गया है और यही कारण है कि इसमें कोई टेबल नहीं है।

क्या कोई जानता है कि मैं अपनी फाइल को सभी तालिकाओं के साथ कैसे खोल सकता हूं?

धन्यवाद!

उत्तर

11

यह स्क्रिप्ट तुम्हारी मदद करेगा:

<script type="text/javascript"> 
     function createDatabase(){ 
     try{ 
       if(window.openDatabase){ 
       var shortName = 'db_xyz'; 
       var version = '1.0'; 
       var displayName = 'Display Information'; 
       var maxSize = 65536; // in bytes 
       db = openDatabase(shortName, version, displayName, maxSize); 
     } 
    }catch(e){ 
       alert(e); 
      } 
    } 
    function executeQuery($query,callback){ 
    try{ 
     if(window.openDatabase){ 
     db.transaction(
     function(tx){ 
     tx.executeSql($query,[],function(tx,result){ 
     if(typeof(callback) == "function"){ 
       callback(result); 
     }else{ 
       if(callback != undefined){ 
         eval(callback+"(result)"); 
        } 
     } 
     },function(tx,error){}); 
      }); 
      return rslt; 
     } 
     }catch(e){} 
     } 
      function createTable(){ 
      var sql = 'drop table image'; 
       executeQuery(sql); 
       var sqlC = 'CREATE TABLE image (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, image BLOB)'; 
       executeQuery(sqlC); 
      } 
      function insertValue(){ 
       var img = document.getElementById('image'); 
       var sql = 'insert into image (name,image) VALUES ("sujeet","'+img+'")'; 
       executeQuery(sql,function(results){alert(results)}); 
      } 
<input type="button" name='create' onClick="createDatabase()" value='Create Database'> 
<input type="button" name='create' onClick="createTable()" value='create table'> 
<input type="button" name='insert' onClick="insertValue()" value='Insert value'> 
<input type="button" name='select' onClick="showTable()" value='show table'> 
<input type="file" id="image" > 
<div result></div> 
</script> 

कोड जाने यात्रा यूआरएल डाउनलोड करने के लिए:

http://blog.developeronhire.com/create-sqlite-table-insert-into-sqlite-table/

+2

यह कोड तालिका को उस डेटा के साथ छोड़ देता है जिसे आपने पहले से ही SQLite फ़ाइल में बनाया है? तो आपको अभी भी कोड में डेटा डालना होगा? मेरे सभी डेटा जो मुझे चाहिए वह पहले ही SQLite फ़ाइल में है .. – Tjekkles

+1

आपके द्वारा प्रदान किया गया लिंक मर चुका है, क्या आप इसे अपडेट कर सकते हैं? धन्यवाद –

+0

मैंने इस कोड का उपयोग करने की कोशिश की। मैं इसे आईफोन में एप्लिकेशन के रूप में बनाने के लिए कॉर्डोवा का उपयोग कर रहा हूं। लेकिन मुझे err.code मिल रहा है 5. क्या आप कृपया मेरी मदद कर सकते हैं? @Sujeet – Anu

0

myDatabase और myDatabase.sqlite 2 अलग-अलग फ़ाइल नाम हैं, एक्सटेंशन के साथ सही फ़ाइल नाम का संदर्भ देने के लिए अपना कोड अपडेट करें।

यदि आप डेटाबेस खोलने का प्रयास करते हैं तो SQLite स्वचालित रूप से एक नया खाली डेटाबेस बना देता है जो मौजूद नहीं है।

+0

जब मैं नाम का उपयोग myDatabase.sqlite कार्यक्रम openDatabase आदेश (मैंने पहले और उस पंक्ति के बाद एक चेतावनी डाल दिया है पर रुक जाता है ... और यह पहली चेतावनी पता चलता है, लेकिन दूसरी नहीं। तो यही कारण है कि मैं सोच रहा था कि यह समस्या है ... कोई विचार है? – Tjekkles

1

मेरी SQLite कोड में मैं तीन js डिबगिंग के लिए SQLite एक को नियंत्रित करने के लिए फ़ाइल का उपयोग कर रहा उद्देश्य, क्वेरी निष्पादित करने के लिए एक और डेटाबेस को initilize और बुनियादी टेबल बनाने के लिए एक और एक।

debug.js
startup.js
query.js

Reference URL ishttp://allinworld99.blogspot.in/2016/04/sqlite-first-setup.html
startup.js

var CreateTb1 = "CREATE TABLE IF NOT EXISTS tbl1(ID INTEGER PRIMARY KEY AUTOINCREMENT, CreatedDate TEXT,LastModifiedDate TEXT, Name TEXT)"; 
var CreateTb2 = "CREATE TABLE IF NOT EXISTS tbl2(ID INTEGER PRIMARY KEY AUTOINCREMENT, CreatedDate TEXT,LastModifiedDate TEXT,Mark INTEGER)"; 

var DefaultInsert = "INSERT INTO tbl1(CreatedDate,Name) select '" + new Date() + "','Merbin Joe' WHERE NOT EXISTS(select * from tbl1)"; 

var db = openDatabase("TestDB", "1.0", "Testing Purpose", 200000); // Open SQLite Database 

$(window).load(function() 
{ 
    initDatabase(); 
}); 

function createTable() // Function for Create Table in SQLite. 
{ 

    db.transaction(function(tx) 
    { 
    tx.executeSql(CreateTb1, [], tblonsucc, tblonError); 
    tx.executeSql(CreateTb2, [], tblonsucc, tblonError); 

    insertquery(DefaultSettingInsert, defaultsuccess); 

    }, tranonError, tranonSucc); 
} 

function initDatabase() // Function Call When Page is ready. 
{ 
    try 
    { 
    if (!window.openDatabase) // Check browser is supported SQLite or not. 
    { 
     alert('Databases are not supported in your device'); 
    } 
    else 
    { 
     createTable(); // If supported then call Function for create table in SQLite 
    } 
    } 
    catch (e) 
    { 
    if (e == 2) 
    { 
     // Version number mismatch. 
     console.log("Invalid database version."); 
    } 
    else 
    { 
     console.log("Unknown error " + e + "."); 
    } 
    return; 
    } 
} 

debug.js

function tblonsucc() 
{ 
    console.info("Your table created successfully"); 
} 

function tblonError() 
{ 
    console.error("Error while creating the tables"); 
} 

function tranonError(err) 
{ 
    console.error("Error processing SQL: " + err.code); 
} 

function tranonSucc() 
{ 
    console.info("Transaction Success"); 
} 

query.js

function insertquery(query, succ_fun) 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], eval(succ_fun), insertonError); 
    }); 
} 

function deletedata(query, succ_fun) 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], eval(succ_fun), deleteonError); 
    }); 
} 

function updatedata(query, succ_fun) 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], eval(succ_fun), updateonError); 
    }); 
} 

function selectitems(query, succ_fun) // Function For Retrive data from Database Display records as list 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], function(tx, result) 
    { 
     eval(succ_fun)(result.rows); 
    }); 
    }); 
} 
संबंधित मुद्दे