Lesen von Daten aus Sqlite Datenbank in der android-Anwendung.
Ich versuche zum Lesen der Daten aus einer Datenbank. Import der Datenbank in die sqlite
manuell und jetzt wollen einfach nur die Verbindung in android-Anwendung und möchten, Lesen Sie die Zeilen und zeigt Sie in der text-Felder, jedoch ist der code, den ich verwende, ist entweder die Datenbank neu, jedes mal, oder ist das erstellen der Tabelle wieder in die Datenbank und ich bekomme einen Laufzeitfehler.
Mein code ist :
package com.example.dbexample;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "TranslatesManager";
// Translates table name
private static final String TABLE_TRANSLATOR = "Words";
// Translates Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_ENGLISHNAME = "Englishname";
private static final String KEY_URDUNAME = "Urduname";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
/* String CREATE_TranslateS_TABLE = "CREATE TABLE " + TABLE_TRANSLATOR + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_ENGLISHNAME + " TEXT,"
+ KEY_URDUNAME + " TEXT" + ")";
db.execSQL(CREATE_TranslateS_TABLE);
*/
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
// db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRANSLATOR);
// Create tables again
//onCreate(db);
}
// Adding new Translate
void addTranslate(Translate Translate) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ENGLISHNAME, Translate.getName()); // Translate Name
values.put(KEY_URDUNAME, Translate.getUrduName()); // Translate Phone
// Inserting Row
db.insert(TABLE_TRANSLATOR, null, values);
db.close(); // Closing database connection
}
// Getting single Translate
Translate getTranslate(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_TRANSLATOR, new String[] { KEY_ID,
KEY_ENGLISHNAME, KEY_URDUNAME }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Translate Translate = new Translate(Integer.parseInt
(cursor.getString(0)),cursor.getString(1), cursor.getString(2));
// return Translate
return Translate;
}
// Getting All Translates
public List<Translate> getAllTranslates() {
List<Translate> TranslateList = new ArrayList<Translate>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_TRANSLATOR;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Translate Translate = new Translate();
Translate.setID(Integer.parseInt(cursor.getString(0)));
Translate.setName(cursor.getString(1));
Translate.setUrduName(cursor.getString(2));
// Adding Translate to list
TranslateList.add(Translate);
} while (cursor.moveToNext());
}
// return Translate list
return TranslateList;
}
// Updating single Translate
public int updateTranslate(Translate Translate) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ENGLISHNAME, Translate.getName());
values.put(KEY_URDUNAME, Translate.getUrduName());
// updating row
return db.update(TABLE_TRANSLATOR, values, KEY_ID + " = ?",
new String[] { String.valueOf(Translate.getID()) });
}
// Deleting single Translate
public void deleteTranslate(Translate Translate) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_TRANSLATOR, KEY_ID + " = ?",
new String[] { String.valueOf(Translate.getID()) });
db.close();
}
// Getting Translates Count
public int getTranslatesCount() {
String countQuery = "SELECT * FROM " + TABLE_TRANSLATOR;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
}
Übersetzer ist Klasse.
Es hat nur id, englishname, urduname Felder.
Bitte korrigieren Sie diese Datei oder finden Sie Fehler, so dass ich weiß, wie ich gerade gelesen von sqlLiteDatabase
Textfeldern.
meine Haupttätigkeit-code :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_db);
DatabaseHandler db = new DatabaseHandler(this);
// Inserting Translates
/// Log.d("Insert: ", "Inserting ..");
//db.addTranslate(new Translate("Ravi", "9100000000"));
//db.addTranslate(new Translate("Srinivas", "9199999999"));
//db.addTranslate(new Translate("Tommy", "9522222222"));
//db.addTranslate(new Translate("Karthik", "9533333333"));
// Reading all Translates
Log.d("Reading: ", "Reading all Translates..");
List<Translate> Translates = db.getAllTranslates();
for (Translate cn : Translates) {
String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() +
" ,Phone: " + cn.getUrduName();
// Writing Translates to log
Log.d("Name: ", log);
}
TextView t1 = (TextView) findViewById(R.id.textView1);
TextView t2 = (TextView) findViewById(R.id.textView4);
TextView t3 = (TextView) findViewById(R.id.textView3);
for (Translate cn : Translates)
{
t1.setText(Integer.toString(cn.getID()));
t2.setText(cn.getName());
t3.setText(cn.getUrduName());
}
}
Lassen Sie mich wissen, wo das problem liegt bitte.
- Es sieht nicht wie Sie die zu importierenden Werte zu sqlite. Wenn Sie eine vorkonfigurierte Datenbank in den asset-Ordner, Sie müssen kopieren in den internen Speicher und ersetzen Sie die Standard-Datenbank erstellt.
- ich kopierte die Datenbank habe ich gemacht und es in den "Data folder" kommt in die Ordneransicht-option in eclipse. jetzt möchte ich nur die Daten zu Lesen.. was soll ich tun?
- , In welchen Ordner Sie die Dateien? /data/data/<Your-Application-Package-Name>/Datenbanken/<dein-Datenbank-name> ist der Ort, den Sie brauchen, um Ihr db
- ja . in der gleichen location, die ich importiert die Datenbank. aber der code, den ich verwende , fand ich es über das internet, erstellt es die Datenbank und dann auch die Tabelle erstellt, möchte ich wissen, wie es wird nur eine Verbindung mit dem bereits aus der Datenbank in den Data-Ordner, und Lesen Sie einfach Dateien aus. ich hoffe, Sie bekommen, was ich versuche zu erklären
- Der beste Ansatz sein wird, um die Datenbank-Datei im asset-Ordner und kopieren Sie den Ordner Daten über code in der SQLiteOpenHelper Klasse. Bitte wenden Sie sich mit diesem. mobisys.in/blog/2012/01/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie den Import der Datenbank-warum sind Sie dann erweitern SQLliteopenhelper Klasse, die verwendet wird, um die Datenbank zu erstellen.
Die Nutzung der bestehenden Daten, die Sie verwenden müssen, um andere in der Klasse in android.. siehe folgenden link kann nützlich sein für Sie
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html