2013-07-09 4 views
6

मैं अपने प्रदर्शन को बंद करते समय बेहतर प्रदर्शन के लिए एक स्क्लाइट-फ़ाइल को स्मृति में पढ़ने की कोशिश कर रहा हूं, मैं इसे वापस एचडीडी में लिखना चाहता हूं।बैकअप और जावा में डिस्क से स्मृति में sqlite को पुनर्स्थापित करें

मैं जावा में jdbc (3.7.2) ड्राइवर का उपयोग कर रहा हूं।

डॉक्स के अनुसार, मेरी संहिता लग रहा है फ़ाइल

तरह
this._conn = DriverManager.getConnection("jdbc:sqlite:"); 
Statement stat = this._conn.createStatement(); 
File dbFile = new File(this._config.GetDataBaseFile()); 
if (dbFile.exists()) { 
    this._logger.AddInfo("File exists."); 
    stat.executeUpdate("restore from " + dbFile.getAbsolutePath()); 
} 

मौजूद है (और इसके लिए एक वैध SQLite डाटाबेस), this._conn खुला है, लेकिन अगर मैं इसे पर स्टेटमेंट्स को निष्पादित करना चाहते हैं, ऐसा लगता है कि वहाँ कोई टेबल नहीं है और न ही अंदर डेटा है। ऐसा लगता है कि यह कुछ भी बहाल नहीं करता है।

आगे कैसे हल/डिबग करने के बारे में कोई सुझाव?

(-: स्मृति: वैसे अगर मैं अपने कनेक्शन पर stat.executeUpdate("backup to test.db") उपयोग करें, यह मेरी खाली बैकअप डाटाबेस ...): फ़ाइल नाम के आसपास 1) उद्धरण

+0

फ़ाइल मौजूद है, और यह एक वैध SQLite डेटाबेस है - लेकिन इसमें कोई सारणी है? – mthmulders

+0

हाँ यह करता है। और डेटा भी। – RalphP

+0

@ mjreaper..क्या आपको इस कोड का समाधान मिल गया है? क्या आप मेरी मदद कर सकते हैं कैसे बहाल करें? –

उत्तर

0

ऐसा लगता है कि आपको दो बातें याद कर रहे हैं , और 2) stat.close। निम्नलिखित का प्रयास करें:

this._conn = DriverManager.getConnection("jdbc:sqlite:"); 
Statement stat = this._conn.createStatement(); 
File dbFile = new File(this._config.GetDataBaseFile()); 
if (dbFile.exists()) { 
    this._logger.AddInfo("File exists."); 
    stat.executeUpdate("restore from '" + dbFile.getAbsolutePath() + "'"); 
    stat.close(); 
} 

एक ही रास्ता मैं इसे Xerial SQLite JDBC संस्करण 3.7.15-M1 के साथ काम करने के लिए मिल सकता है था। मुझे नहीं लगता कि संस्करण इस मामले में बहुत मायने रखता है।

0

उद्धरण और stat.close() लिंक के मुताबिक, 'https://bitbucket.org/xerial/sqlite-jdbc/wiki/Usage', जो मैंने परीक्षण किया है। उद्धरण सहायता करते हैं जब फ़ाइल पथ में रिक्त स्थान होते हैं, हालांकि।

मुझे लगता है कि यह शायद jdbc ड्राइवर के कारण हो सकता है। SQLite के लिए जेरियल के जेडीबीसी ड्राइवर का प्रयास करें, जो मेरे लिए ठीक काम करता है।

संबंधित मुद्दे