2016-05-01 14 views
0

Databasehelper.javaクラスを作成しました。このクラスインスタンスを呼び出すときと実行中に、そのクラスでSQLiteデータベースクラスを呼び出し、すべてのメソッドとメインクラスを実装しましたそれが表示されているアプリがandroidでSQLiteデータベースを作成する方法

これはコード

package com.example.android.viewpager1; 

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

/** 
* Created by Vikas on 5/1/2016. 
*/ 
public class Databasehelper extends SQLiteOpenHelper 
{ 
public static final String DATABASE_NAME="Answers.db"; 
    public static final String TABLE_NAME="answers_table"; 
    public static final String COL_1="QUESTION_NO"; 
    public static final String COL_2="QUESTION_ANS"; 



    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+"(QUESTION_NO INTEGER PRIMARY KEY AUTOINCREMENT,QUESTION_ANS VARCHAR);"); 
    } 

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

ある "残念ながら、あなたのアプリケーションが停止しました" と、これはここに

package com.example.android.viewpager1; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.View; 
import android.widget.RadioButton; 

import java.util.List; 
import java.util.Vector; 

public class MainActivity extends FragmentActivity 
{ 
    Databasehelper mydb; 

    private PagerAdapter mPagerAdapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.viewpager_layout); 
     initialisePaging(); 
     mydb=new Databasehelper(this);//here I am making DB 

    } 

mainactivity.java

です私はデータベースを作成していますが、それは実行されていません。また、メインスレッドまたはUIスレッドでは、AsynTaskクラスを使用する必要があるデータベースまたはネットワーキングオブジェクトを作成してはいけませんが、それを使用する方法や他の解決方法を教えてください。 logcat

05から02 01である:34:29.710 32328から32328/com.example.android.viewpager1 E/AndroidRuntime:致命的な例外:メイン java.lang.RuntimeException:活性ComponentInfoを開始できません{com.example .android.viewpager1/com.example.android.viewpager1.MainActivity}:android.database.sqlite.SQLiteException: "TABLEanswers_table"の近く:構文エラー(コード1):、コンパイル中に:CREATE TABLEanswers_table(QUESTION_NO INTEGER PRIMARY KEY AUTOINCREMENT、QUESTION_ANS VARCHAR); android.app.ActivityThread.access $ 700(ActivityThread.java:141)でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2166) でandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2141) で android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1221)android.os.Handler.dispatchMessage(Handler.java:99)の android.os.Looper.loop(Looper.java:137) android.app.ActivityThread.main(ActivityThread.java:5019) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.re com.android.internal.os.ZygoteInit.main(ZygoteInit。)。 java:574) at dalvik.system.NativeStart.main(ネイティブメソッド) 原因:android.database.sqlite.SQLiteException: "TABLEanswers_table"の近く:構文エラー(コード1):、コンパイル中に:CREATE TABLEanswers_table(QUESTION_NO INTEGER PRIMARY KEY AUTOINCREMENT、QUESTION_ANS VARCHAR); (SQLiteConnection.java:882) android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) ) android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)android.database.sqlite.SQLiteProgram。 (SQLiteProgram.java:58) android.database.sqlite.SQLiteStatement。(SQLiteStatement.java :31)android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663)の android.database.sqlite.SQLite (SQLiteOpenHelper.java:255) at android.database.sqlite.SQLiteOpenHelper。アンドロイドでgetWritableDatabase com.example.android.viewpager1.Databasehelperで(SQLiteOpenHelper.java:164) 。(Databasehelper.java:22)com.example.android.viewpager1.MainActivity.onCreate(MainActivity.java:24)で .app.Activity.performCreate(Activity.java:5056) android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2099) android.appにあります。 android.appでandroid.app.ActivityThread.access $ 700(ActivityThread.java:141) で.ActivityThread.handleLaunchActivity(ActivityThread.java:2166) 。 ActivityThread $ H.handleMessage(ActivityThread.java:1221) とandroid.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) android.appにあります。 ActivityThread.main(ActivityThread.java:5019) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal .os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:807) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:574) at dalvik.system.NativeStart.main(ネイティブメソッド)

+0

なぜあなたのアプリでDBを作成(追加スペースのためのノートでは後EXISTS)?事前に作成されたDBをあなたのアプリにデプロイします。 –

+0

私はSQLite DBのみを使用する必要があります –

+0

私はSqlite DBのみを使用しており、アンドロイドのみで提供されています –

答えて

1

私が指摘するが、それらは、アプリの作品を保証するものではありません固定されますあなたのコード内のいくつかの構文上の問題はありますが、あなたはまだ詳細についてはLogcatを読んでする必要があります。

の1- db.execSQL("create table " + TABLE_NAME+" ("+ COL_1 +" INTEGER PRIMARY KEY AUTOINCREMENT, "+COL_2+" VARCHAR);");

(「(」、「テーブル」の後と前に追加のスペースに注意し、また代わりにハードコードされた文字列のあなたの列定数を使用して)

2- db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);

+0

おかげで、それは本当に助けた人間のエラーをアップロードしました –

0

あなたは「TABLE_NAME」と「(」の間にスペースを与えることを忘れていました。更新されたコードを参照してください。質問があれば教えてください。

public void onCreate(SQLiteDatabase db) 
    { 
    db.execSQL("create table" + TABLE_NAME+" (_id INTEGER PRIMARY KEY AUTOINCREMENT,QUESTION_NO INTEGER AUTOINCREMENT,QUESTION_ANS VARCHAR);"); 
    } 
+0

に存在すると、テーブル名の間にスペースを与えられていない –

+0

はあなたが私のエラーログを表示することができます実行されていない問題を解決していませんONUPGRADE方法 –

+0

私は –

関連する問題