• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem z kodem android

0 głosów
387 wizyt
pytanie zadane 29 kwietnia 2018 w Java przez mikoh81 Obywatel (1,260 p.)

Witam, próbuje zrobić kod który będzie zapisywał lokalizacje do iSQL, I mam takie pytanie, w którym miejscu popełniłem błąd? Sam błąd uwidacznia się jak odpala się aplikację na telefonie.

kod błędu:

     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785)
                                                                            at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1524)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:163)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6239)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
                                                                         Caused by: android.database.sqlite.SQLiteException: near "tablemjejsca": syntax error (code 1): , while compiling: create tablemjejsca.db(ID INTEGER PRIMARY KEY AUTOINCREMENT,czasTEXT,XINTEGER,YINTEGER)
                                                                            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                                                                            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                                                                            at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                            at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                            at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                                            at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677)
                                                                            at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
                                                                            at com.example.mikoaj.a70.DatabaseHelper.onCreate(DatabaseHelper.java:27)
                                                                            at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
                                                                            at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
                                                                            at com.example.mikoaj.a70.DatabaseHelper.<init>(DatabaseHelper.java:22)
                                                                            at com.example.mikoaj.a70.MainActivity.onCreate(MainActivity.java:51)
                                                                            at android.app.Activity.performCreate(Activity.java:6864)
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) 
                                                                            at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1524) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:163) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6239) 
                                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 

oto kod kod główny:

public class MainActivity extends Activity implements LocationListener {

   
    TextView t1; 
    TextView t2;


    LocationManager lm; 
    Criteria kr; lokalizacji
    Location loc; 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        t1 = (TextView) findViewById(R.id.textView1); 
        t2 = (TextView) findViewById(R.id.textView2);

        kr = new Criteria(); //Konstruktor dla klasy Ctriteria
        lm = (LocationManager) getSystemService(LOCATION_SERVICE); //Pobieramy us³ugê lokalizacji
        najlepszyDostawca = lm.getBestProvider(kr, true);    //Chcemy najlepszego dostawcê
        loc = lm.getLastKnownLocation(najlepszyDostawca); 

    
        lm.requestLocationUpdates(najlepszyDostawca, 1000, 1, this); /

        String dane = loc.getLongitude()+"|"+loc.getLatitude();
t1.setText(dane);
        double X = loc.getLongitude();
        double Y = loc.getLatitude();
        String time = DateFormat.getDateTimeInstance().format(new Date());
t1.setText(dane);
        DatabaseHelper db = new DatabaseHelper(this);
        db.dodaj(time,X,Y);
    }
    @Override
    public void onLocationChanged(Location location) {
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
    @Override
    public void onProviderEnabled(String provider) {
    }
    @Override
    public void onProviderDisabled(String provider) {
    }
}

i kod odpowiadający za bazę danych:

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String Database_Name = "dane.db";
    public static final String Table_Name = "mjejsca.db";
    //public static final String Col1 = "ID";
    public static final String Col2 = "czas";
    public static final String Col3 = "X";
    public static final String Col4 = "Y";




    public DatabaseHelper(Context context) {
        super(context, Database_Name, null, 1);
        SQLiteDatabase db = this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table" + Table_Name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + Col2 + "TEXT," + Col3 + "INTEGER," + Col4 + "INTEGER)");
    }
    public void dodaj(String czas, double X, double Y){
        SQLiteDatabase db = getWritableDatabase();
        ContentValues wartosci = new ContentValues();
        wartosci.put("czas", czas);
        wartosci.put("X", X);
        wartosci.put("Y", Y);
        db.insertOrThrow("dane",null, wartosci);
    }
    public Cursor wyswietwszystkie(){
        String[] kolumny = {"ID","czas","X","Y"};
        SQLiteDatabase db = getWritableDatabase();
        Cursor kursor = db.query("dane",kolumny,null,null,null,null,null);
        return kursor;
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS"+Table_Name+"");
        onCreate(db);
    }
}


 

2 odpowiedzi

0 głosów
odpowiedź 29 kwietnia 2018 przez KubenQPL Maniak (62,840 p.)
wybrane 29 kwietnia 2018 przez mikoh81
 
Najlepsza
Linia 25 klasy DatabaseHelper: nazwa tabeli powinna być bez rozszerzenia (".db"), brakuje ci spacji i twoje zapytanie wygląda tak:

"create tablemjejsca.db(ID INTEGER PRIMARY KEY AUTOINCREMENT,czasTEXT,XINTEGER,YINTEGER)"

A powinno chyba tak:

"create table miejsca (ID INTEGER PRIMARY KEY AUTOINCREMENT, czas TEXT, X INTEGER, Y INTEGER)"

Pododawaj spacje w stringach przy konkatencji stringów w linii 25.

P.S. Do używania SQLite polecam używać biblioteki "Room" znacznie ułatwia robote.
0 głosów
odpowiedź 29 kwietnia 2018 przez ebo96rok Bywalec (2,980 p.)
Przyjrzyj się temu co masz w linii 25 w klasie bazy danych i temu co rzuca SQLiteException ;)

Podobne pytania

0 głosów
4 odpowiedzi 678 wizyt
pytanie zadane 19 listopada 2017 w Java przez Kubs Mądrala (5,190 p.)
0 głosów
1 odpowiedź 505 wizyt
0 głosów
0 odpowiedzi 239 wizyt
pytanie zadane 31 marca 2018 w Java przez Karaś13 Nowicjusz (170 p.)

93,695 zapytań

142,612 odpowiedzi

323,223 komentarzy

63,225 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...