заполнить счетчик из базы данных

1

привет  Я пытался заполнить счетчик из DB....

мой код:

  String MY_DATABASE_NAME = "testDB"; 
  String MY_DATABASE_TABLE = "testDBrecords"; 
  TextView resultsView; 
  Spinner spinner; 
  ArrayAdapter<String> adapterForSpinner; 

  /** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main); 
  spinner = (Spinner) findViewById(R.id.spinner); 
  resultsView = (TextView) findViewById(R.id.textview); 

  SQLiteDatabase myDB = null; 
  myDB = this.openOrCreateDatabase(MY_DATABASE_NAME, 1, null); 
  myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DATABASE_TABLE + " (LastName VARCHAR, FirstName VARCHAR, Country VARCHAR, Age INT (3));"); 
  myDB.execSQL("INSERT INTO " + MY_DATABASE_TABLE + " (LastName, FirstName, Country, Age) VALUES ('name1b', 'name1a', 'countrya', 34);"); 
  myDB.execSQL("INSERT INTO " + MY_DATABASE_TABLE + " (LastName,FirstName, Country, Age) VALUES ('name2b, 'name2a, 'countryb', 27);"); 
  Cursor c = myDB.query(MY_DATABASE_TABLE, null, null, null, null, null, null); 
  int firstnameColumnIndex = c.getColumnIndexOrThrow ("FirstName"); 
  int ageColumnIndex = c.getColumnIndexOrThrow("Age"); 
  adapterForSpinner = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item); 
          adapterForSpinner.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); 
          spinner.setAdapter(adapterForSpinner); 
  if (c.moveToFirst()) { 
          do { 
                  adapterForSpinner.add(c.getString(firstnameColumnIndex) + " aged " + c.getShort(ageColumnIndex)); 
          } 
          while (c.moveToNext()); 
          if (myDB != null) { 
          myDB.close(); 
      } 
 } 
else { 
  resultsView.setText("DB EMPTY!!"); 
} 
} 

Нет ошибки, но в то время как сила запуска закрыта.

Ошибка logCat:

03-24 03:09:31.501: INFO/Database(546): sqlite returned: error code = 1, msg = near "name2a": syntax error
03-24 03:09:31.501: ERROR/Database(546): Failure 1 (near "name2a": syntax error) on 0x1ec430 when preparing 'INSERT INTO testDBrecords (LastName,FirstName, Country, Age) VALUES ('name2b, 'name2a, 'countryb', 27);'.
03-24 03:09:31.743: DEBUG/AndroidRuntime(546): Shutting down VM
03-24 03:09:31.743: WARN/dalvikvm(546): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-24 03:09:31.981: ERROR/AndroidRuntime(546): FATAL EXCEPTION: main
03-24 03:09:31.981: ERROR/AndroidRuntime(546): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.acarin.project/com.acarin.project.Rough}: android.database.sqlite.SQLiteException: near "name2a": syntax error: INSERT INTO testDBrecords (LastName,FirstName, Country, Age) VALUES ('name2b, 'name2a, 'countryb', 27);
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.os.Looper.loop(Looper.java:123)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.ActivityThread.main(ActivityThread.java:3647)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at java.lang.reflect.Method.invokeNative(Native Method)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at java.lang.reflect.Method.invoke(Method.java:507)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at dalvik.system.NativeStart.main(Native Method)
03-24 03:09:31.981: ERROR/AndroidRuntime(546): Caused by: android.database.sqlite.SQLiteException: near "name2a": syntax error: INSERT INTO testDBrecords (LastName,FirstName, Country, Age) VALUES ('name2b, 'name2a, 'countryb', 27);
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1743)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at com.acarin.project.Rough.onCreate(Rough.java:32)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
03-24 03:09:31.981: ERROR/AndroidRuntime(546):     ... 11 more
03-24 03:09:32.178: WARN/ActivityManager(66):   Force finishing activity com.acarin.project/.Rough
03-24 03:09:32.767: WARN/ActivityManager(66): Activity pause timeout for HistoryRecord{406c9448 com.acarin.project/.Rough}
03-24 03:09:33.693: WARN/ActivityManager(66): Activity idle timeout for HistoryRecord{406c9448 com.acarin.project/.Rough}
03-24 03:09:37.055: DEBUG/dalvikvm(282): GC_EXPLICIT freed 19K, 55% free 2594K/5703K, external 716K/1038K, paused 15976ms
03-24 03:09:41.994: DEBUG/dalvikvm(299): GC_EXPLICIT freed 6K, 54% free 2536K/5511K, external 716K/1038K, paused 317ms
03-24 03:09:43.742: WARN/ActivityManager(66): Activity destroy timeout for HistoryRecord{406c9448 com.acarin.project/.Rough}

Любая помощь будет оценена.

  • 0
    пожалуйста, опубликуйте ошибки logcat.
  • 0
    @Chirag Chirag спасибо за ваш ответ .... да, я пишу сейчас ... пожалуйста, проверьте это
Теги:
database
spinner

1 ответ

1
Лучший ответ

myDB.execSQL( "INSERT INTO" + MY_DATABASE_TABLE + "(LastName, FirstName, Country, Age) VALUES ( 'name2b,' name2a, 'countryb', 27);" );

Вам не хватает двух кавычек! Измените его на:

myDB.execSQL( "INSERT INTO" + MY_DATABASE_TABLE + "(LastName, FirstName, Country, Age) VALUES ( 'name2b', 'name2a', 'countryb', 27);" );

  • 0
    @ Спасибо большое .... теперь он работает .... ты скажешь мне, как добавить больше элементов во время выполнения с использованием edittext ...
  • 1
    Пожалуйста, создайте новый вопрос для вашего последующего вопроса. Ответ на это здесь в комментарии не будет очень хорошим, потому что другие не увидят это здесь.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню