2016-11-29 19 views
-1

私はSQLiteのデータベースにテーブルを作成するために、次のコードを使用しています:sqliteのすべてのデータのid自動増分を取得するには?

db =openOrCreateDatabase("MukilProgram", Context.MODE_PRIVATE,null); 
    db.execSQL("CREATE TABLE IF NOT EXISTS proname(ID INTEGER PRIMARY KEY AUTOINCREMENT,ImageID INTEGER,Title TEXT,FromTiming INTEGER,ToTiming INTEGER);"); 

    rowItems = new ArrayList<Program>(); 
    for (int i = 0; i < titles.length; i++) { 
     Program item = new Program(images[i], titles[i],fromtime[i],totime[i]); 
     rowItems.add(item); 
    } 

マイ挿入クエリは次のとおりです。

for (int i = 0; i < adapter.getCount(); i++) { 
     Program rowItem = (Program) adapter.getItem(i); 

     iImageId = rowItem.getImageId(); 
     sTitle = rowItem.getTitle(); 
     sFrom = rowItem.getFromtime(); 
     sTo = rowItem.getTotime(); 


     //sQuantity = rowItem.getQuantity(); 
     db.execSQL("INSERT INTO proname VALUES("+ iImageId + ",'" + sTitle + "','"+sFrom+"','"+sTo+"');"); 
     //Toast.makeText(MainActivity.this, "Added to the Table..", Toast.LENGTH_SHORT).show(); 

    } 

エラーが表示さ:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.apple.myapplication/com.example.apple.myapplication.MainActivity}: android.database.sqlite.SQLiteException: table proname has 5 columns but 4 values were supplied (code 1): , while compiling: INSERT INTO proname VALUES(2130837596,'Ippadikku Idhayam','10:30','12:30'); 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:136) 
                at android.app.ActivityThread.main(ActivityThread.java:5017) 
                at java.lang.reflect.Method.invokeNative(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:515) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                at dalvik.system.NativeStart.main(Native Method) 
                Caused by: android.database.sqlite.SQLiteException: table proname has 5 columns but 4 values were supplied (code 1): , while compiling: INSERT INTO proname VALUES(2130837596,'Ippadikku Idhayam','10:30','12:30'); 
                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:1672) 
                at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603) 
                at com.example.apple.myapplication.MainActivity.onCreate(MainActivity.java:142) 
                at android.app.Activity.performCreate(Activity.java:5231) 

私がすることができません私のデータのIDをデータベースに設定します。

+0

かなり明確 'テーブルpronameは5列を持っていますが、4つの値は、これらの4つの列があることが何であるかsupplied' speficyました挿入しようとしています。あなたがいる間に、文字列連結の代わりに準備文を使用する – e4c5

+0

[Android SQLite自動インクリメント](http://stackoverflow.com/questions/8434819/android-sqlite-auto-increment)の可能な複製 – Nithinlal

+1

INSERT INTO pronameを試してくださいImageID、タイトル、FromTiming、ToTiming)VALUES( "+ iImageId +"、 "+ sTitle +" '、+ sFrom + "'、+" + sTo + "') – Raghavendra

答えて

-1

私は質問を投稿する前に、最初に回答を探すことを提案します。ここで

は、あなたが探している答えのためのリンクです:

Example 1

Example 2

関連する問題