Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλήσπερα! θέλω να δημιουργήσω μια βάση δεδομένων σε μια android εφαρμογη και στη συνέχεια με βάση τα στοιχεία που θα δίνει ο χρήστης θα πέρνει τα κατάλληλα αποτέλεσμα, σκεφτήτε κάτι σαν ένα ερτολογιο να υπάρχει η βάση και αν πχ ο χρήστης δώσει σαν όνομα Χρήστος να πέρνει οτι γιορτάζει 25 Δεκεμβρίου..ότι βιντάκι έχω δει στο youtube οι περισσότεροι (αν όχι όλοι) φτιάχνουν μια βάση στην οποία ο χρήστης προσθέτει πράγματα στη συνέχεια...εγώ όμως δε θέλω κάτι τέτοιο..ξέρετε μήπως κανένα βίβλιο βίντεο,site οτίδηποτε μπορεί να με βοηθείσει? ευχαριστώ

Δημοσ.

φτιάχνεις την βάση σου στο pc, την βάζεις στον φάκελο assets και μετά την πρώτη φορά που ξεκινάς την εφαρμογή την κάνεις copy στον data φάκελο της εφαρμογής σου

η βάση αν θυμάμαι καλά το μόνο που χρειάζεται είναι να ονομάσεις σε κάθε πίνακα το πρωτεύον κλειδί _id

 

και link

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

  • Like 1
Δημοσ.

Επισης ακομα πιο χρησιμο ειναι να μαθεις για τους ContentProviders, ωστε να μπορεις να χρησιμοποιεις τη βαση σου και απο αλλες εφαρμογες. Σου δινει μεγαλες ευκολιες η ιδεα του ContentProvider και στη δημιουργια της βασης και στο πως τη δουλευεις.

http://developer.android.com/guide/topics/providers/content-providers.html

 

Μπορει να φανει καπως στη αρχη αλλα μετα τη πρωτη υλοποιηση δε θα το κανεις αλλιως

  • 3 εβδομάδες αργότερα...
Δημοσ.

επαναφέρω λίγο το θέμα guys, #warlock χτίζω όλη τη διαχείρηση της βάσης συμφωνα με το link που πόσταρες αλλά μου βγάζει error στη createDataBase()  πιάνει το  exception αφού πάει να καλέσει την copyDataBase() "error copying database" παίζει να ξέρεις ή κάποιος άλλος τι μπορεί να φταίει?

Δημοσ.

μου μυρίζει οτι έχεις κάποιο λάθος στα paths γιατί  δεν κάνει κάτι , απλώς αντιγράφει από ένα stream σε ένα άλλο

Δημοσ.

το DB_PATH="/data/data/com.example.ΑppName/databases/"

και το DB_NAME="example"

 

ίσως έχω λάθος τον τύπο του αρχείου της βάσεις? το έχω με κατάληξη .db μέσα στο φάκελο assets

 

edit: παίζει να χρειάζεται να βάλω κανένα permission στο manifest? γι αυτό να μην τρέχει?

Δημοσ.

πρώτα άλλαξε το catch να τυπώνει το exception να δούμε

 

πρέπει να γράψεις στο dbname και την κατάληξη

επίσης υπάρχει περίπτωση να μην υπάρχει ο φάκελος databases και να πρέπει να τον δημιουργήσεις πρώτα

 

δικαιώματα δεν χρειάζεται

επίσης δοκίμασε αντί να έχεις harcoded το path

DB_PATH = this.getApplicationInfo().dataDir+ File.separator +"databases"
 private void copyDataBase() throws IOException{
 
//Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DB_NAME);
 
// alla3a ki auto ligo  -- Path to the just created empty db
String outFileName = DB_PATH + File.separator + DB_NAME;

//dimiourgei to fakelo
new File(DB_PATH).mkdir();

 
//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
 
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
 
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
 
}
Δημοσ.

τα εχω κάνει όλα , αλλά πάλυ τπτ :/  με το exception τι εννοεις να αλλάξω το catch?

public void createDataBase() throws IOException{
		boolean dbExist=checkDataBase();
		
		if(dbExist){
			
		}
		
		else{
			
			this.getReadableDatabase();
			
			try{
				copyDataBase();
			}
			catch(IOException e){
				throw new Error("Error Copying DataBase "); // αυτο ειναι το exception Που πιανει
			}
			
		}
			
	}
Δημοσ.

λοιπόν πετάει
cant create db
και fileNotFoundException (για το path )
open failed: ENOENT


Πωωωω ρε φίλε καταρχήν 100000 sorry για όλον αυτόν το χρόνο που σου έφαγα όλο το λάθος ήταν σε ένα γράμμα στο path :X
το άλλαξα και τώρα τρέχει κομπλέ
 

ΥΓ: μπορείς να μου ρίξεις όσο βρίσιμο θες :-D

Νew Edit: αλλά όταν το άλλαξα από harcoded το path στο άλλο δεν θα επρεπε να ετρεχε???
τες πα αφου λύθηκε , σε ευχαριστώ ξανα

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...