Forum » Programiranje » Android SQLite pomoč
Android SQLite pomoč
comgen ::
Pozdravljeni,
Imam namen narediti aplikacijo z podatkovno bazo SQLite. Aplikacija bi morala omogočati, dodajanje nove relacije-tabele. Delal sem po nekem tutorialu in to je rezultat, kaj mi je uspelo narediti. Prosil bi za pomoč, kako naredim v glavnem programu več relacij-tabel. Hvala vnaprej za odgovore
Imam namen narediti aplikacijo z podatkovno bazo SQLite. Aplikacija bi morala omogočati, dodajanje nove relacije-tabele. Delal sem po nekem tutorialu in to je rezultat, kaj mi je uspelo narediti. Prosil bi za pomoč, kako naredim v glavnem programu več relacij-tabel. Hvala vnaprej za odgovore
import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class Database { public static final String KEY_ROWID = "_id"; public static final String KEY_TITLE = "title"; public static final String KEY_SNIPPET = "snippet"; public static final String KEY_LOCLAT = "loc_lat"; public static final String KEY_LOCLANG = "loc_lang"; private static final String DATABASE_NAME = "Locationsdb"; private static final String DATABASE_TABLE = "locationTable"; private static final int DATABASE_VERSION = 1; private DbHelper ourHelper; private final Context ourContext; private SQLiteDatabase ourDatabase; private static class DbHelper extends SQLiteOpenHelper { public DbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_TITLE + " TEXT NOT NULL, " + KEY_SNIPPET + " TEXT NOT NULL, " + KEY_LOCLAT + " TEXT NOT NULL, " + KEY_LOCLANG + " TEXT NOT NULL);" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE); onCreate(db); } } public Database(Context c) { // TODO Auto-generated constructor stub ourContext = c; } public Database open() throws SQLException { ourHelper = new DbHelper(ourContext); ourDatabase = ourHelper.getWritableDatabase(); return this; } public void close() { ourHelper.close(); } public void deleteDb(Context c) { c.deleteDatabase(DATABASE_NAME); } public void createEntry(String tNaziv, String tLokacija, String tLat, String tLang) { // TODO Auto-generated method stub ContentValues cv = new ContentValues(); cv.put(KEY_TITLE, tNaziv); cv.put(KEY_SNIPPET, tLokacija); cv.put(KEY_LOCLAT, tLat); cv.put(KEY_LOCLANG, tLang); ourDatabase.insert(DATABASE_TABLE, null, cv); } public void createEntry(String tNaziv, String tLokacija, Double tLat, Double tLang) { // TODO Auto-generated method stub ContentValues cv = new ContentValues(); cv.put(KEY_TITLE, tNaziv); cv.put(KEY_SNIPPET, tLokacija); cv.put(KEY_LOCLAT, tLat); cv.put(KEY_LOCLANG, tLang); ourDatabase.insert(DATABASE_TABLE, null, cv); } public String getData() { // TODO Auto-generated method stub String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_SNIPPET, KEY_LOCLAT, KEY_LOCLANG }; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); String result = ""; int iRow = c.getColumnIndex(KEY_ROWID); int iTitle = c.getColumnIndex(KEY_TITLE); int iSnippet = c.getColumnIndex(KEY_SNIPPET); int iLat = c.getColumnIndex(KEY_LOCLAT); int iLong = c.getColumnIndex(KEY_LOCLANG); for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { result = result + c.getString(iRow) + " " + c.getString(iTitle) + " " + c.getString(iSnippet) + " " + c.getString(iLat) + " " + c.getString(iLong) + "\n"; } return result; } public List<Lokacija> getAllList() { List<Lokacija> lok = new ArrayList<Lokacija>(); String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_SNIPPET, KEY_LOCLAT, KEY_LOCLANG }; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); int iTitle = c.getColumnIndex(KEY_TITLE); int iSnippet = c.getColumnIndex(KEY_SNIPPET); int iLat = c.getColumnIndex(KEY_LOCLAT); int iLong = c.getColumnIndex(KEY_LOCLANG); for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { Lokacija lokac = new Lokacija(); lokac.setNaziv(c.getString(iTitle)); lokac.setLokacija(c.getString(iSnippet)); lokac.setTLat(Double.valueOf(c.getString(iLat)).doubleValue()); lokac.setTLang(Double.valueOf(c.getString(iLong)).doubleValue()); lok.add(lokac); } return lok; } public void deleteEntry(long lRow1) throws SQLException { // TODO Auto-generated method stub ourDatabase.delete(DATABASE_TABLE, KEY_ROWID + "=" + lRow1, null); } public void deleteAll() throws SQLException { // TODO Auto-generated method stub ourDatabase.delete(DATABASE_TABLE, null, null); } public String getNaziv(long l) { // TODO Auto-generated method stub String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_SNIPPET, KEY_LOCLAT, KEY_LOCLANG }; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null); if (c != null) { c.moveToFirst(); String naziv = c.getString(1); return naziv; } return null; } public String getLoc(long l) { // TODO Auto-generated method stub String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_SNIPPET, KEY_LOCLAT, KEY_LOCLANG }; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null); if (c != null) { c.moveToFirst(); String loc = c.getString(2); return loc; } return null; } public String getTLat(long l) { // TODO Auto-generated method stub String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_SNIPPET, KEY_LOCLAT, KEY_LOCLANG }; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null); if (c != null) { c.moveToFirst(); String Tlat = c.getString(3); return Tlat; } return null; } public String getTLang(long l) { // TODO Auto-generated method stub String[] columns = new String[] { KEY_ROWID, KEY_TITLE, KEY_SNIPPET, KEY_LOCLAT, KEY_LOCLANG }; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null); if (c != null) { c.moveToFirst(); String Tlang = c.getString(4); return Tlang; } return null; } public void updateEntry(long lRow, String mNaziv, String mLokacija, String mLat, String mLang) { // TODO Auto-generated method stub ContentValues cvUpdate = new ContentValues(); cvUpdate.put(KEY_TITLE, mNaziv); cvUpdate.put(KEY_SNIPPET, mLokacija); cvUpdate.put(KEY_LOCLAT, mLat); cvUpdate.put(KEY_LOCLANG, mLang); ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_ROWID + "=" + lRow, null); }
Mavrik ::
Saj v tvoji kodi, ki si jo prilepil, že ustvarjaš tabele. Kaj točno ti dela težave?
The truth is rarely pure and never simple.
dolenc ::
Preprosto, v onCreate daš različne create table stavke, pa jih maš.
Če želiš, da se spremembe uveljavijo, dvigneš verzijo baze DATABASE_VERSION, tako bo android zagnal onUpgrade, kjer imaš drope obstoječih tabel(če so) pa ponovno zažene onCreate, ki ti spet postavi bazo.
LINK
Če želiš, da se spremembe uveljavijo, dvigneš verzijo baze DATABASE_VERSION, tako bo android zagnal onUpgrade, kjer imaš drope obstoječih tabel(če so) pa ponovno zažene onCreate, ki ti spet postavi bazo.
LINK
comgen ::
Se opravičujem, nisem se dovolj natančno izrazil. Tabelo naredim in urejam, to mi gre, jaz hočem narediti n tabel z enako zgradbo, pač koliko jih rabim, in potem te urejati. Problem je v tem, da urejam vedno enako(eno isto) tabelo. Rad bi npr. seznam tabel, ki jih želiš urediti, potem pa klikneš določeno in jo urediš oziroma uporabiš podatke za kaj drugega. Do sedaj sem to delal tako:
Kako bi npr naredil drugo tabelo, za urejanje oz. polnjenje?
public void napolniBazoTest() { for (int i = 0; i < n.length; i++) { Database entry = new Database(MainActivity.this); entry.open(); entry.createEntry(n[i], l[i], Lat1[i], Lang1[i]); entry.close(); } }
Kako bi npr naredil drugo tabelo, za urejanje oz. polnjenje?
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Android - ZačetnikOddelek: Programiranje | 1781 (1106) | hurlimannxt |
» | android črtaOddelek: Programiranje | 2398 (1669) | g333kk |
» | [android] vstavljanje slikeOddelek: Programiranje | 1239 (1136) | messi |
» | [android] crashOddelek: Programiranje | 1338 (1147) | messi |
⊘ | Pomoč pri Domači nalogiOddelek: Programiranje | 4546 (3394) | Gandalfar |