2つのクラスがえらーメッセージに書いてあったので、コードをのせました。
"tableusers": syntax error (code 1): , while compiling: create tableusers(_idinteger primary key autoincrement,nametext,scoreinteger)
このように書いてあったので、tableをcreateするときの、文法や、名前を何度も確認したのですが、ミスは見当たりませんでした。
どこが間違えているのでしょうか?
アドバイスの方をどうかよろしくお願い致します。
MainActivity
java
package com.example.android.sample.myapplication; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //tableの定義 -contract class //users (name,score) //open helper //open db UserOpenHelper userOpenHelper=new UserOpenHelper(this); SQLiteDatabase db=userOpenHelper.getWritableDatabase(); //処理 select,insert,update,delete Cursor c=null; c=db.query( UserContract.Users.TABLE_NAME, null,//fields null,//where null,//where arg null,//groupBy null,//having null//order by ); Log.v("DB_TEST","Count:"+c.getCount()); while(c.moveToNext()){ int id=c.getInt(c.getColumnIndex(UserContract.Users._ID)); String name=c.getString(c.getColumnIndex(UserContract.Users.COL_NAME)); int score=c.getInt(c.getColumnIndex(UserContract.Users.COL_SCORE)); Log.v("DB_TEST","id"+id+"name:"+name+"score:"+score); } c.close(); //close db db.close(); } }
UserOpeenHelper.java
java
package com.example.android.sample.myapplication; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by endoutaichi on 2017/04/06. */ public class UserOpenHelper extends SQLiteOpenHelper { public static final String DB_NAME="myapp.db"; public static final int DB_VERSION=1; public static final String CREATE_TABLE= "create table"+UserContract.Users.TABLE_NAME+"("+ UserContract.Users._ID+"integer primary key autoincrement,"+ UserContract.Users.COL_NAME+"text,"+ UserContract.Users.COL_SCORE+"integer)"; /**"create table"+ UserContract.Users.TABLE_NAME+"("+ UserContract.Users._ID+"integer primary key autoincrement,"+ UserContract.Users.COL_NAME+"text,"+ UserContract.Users.COL_SCORE+"integer)"; **/ public static final String INIT_TABLE= "insert into users (name,score)values" + "('taguchi',42),"+ "('fkoji',82),"+ "('dotinstall',62)"; public static final String DROP_TABLE= "drop table if exists users"; public UserOpenHelper(Context c){ super(c,DB_NAME,null,DB_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //create table sqLiteDatabase.execSQL(CREATE_TABLE); //init table sqLiteDatabase.execSQL(INIT_TABLE); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //drop table sqLiteDatabase.execSQL(DROP_TABLE); //onCreate onCreate(sqLiteDatabase); } }
java
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.sample.myapplication/com.example.android.sample.myapplication.MainActivity}: android.database.sqlite.SQLiteException: near "tableusers": syntax error (code 1): , while compiling: create tableusers(_idinteger primary key autoincrement,nametext,scoreinteger) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2070) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2095) at android.app.ActivityThread.access$600(ActivityThread.java:137) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:213) at android.app.ActivityThread.main(ActivityThread.java:4786) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.SQLiteException: near "tableusers": syntax error (code 1): , while compiling: create tableusers(_idinteger primary key autoincrement,nametext,scoreinteger) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:504) 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:1673) at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1602) at com.example.android.sample.myapplication.UserOpenHelper.onCreate(UserOpenHelper.java:46) at
まだ回答がついていません
会員登録して回答してみよう