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);
}
}