为什么我不能读成我的数据库? [英] why I cant read form my database?

查看:113
本文介绍了为什么我不能读成我的数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以将信息在我的数据库,但是当我想读他们后面插入它喜欢developer.android将接近这个错误不幸的是,应用程序已经停止。
这是我的code:

I can insert informations in my database but when I want to read them after insert it like developer.android it will be close with this error "unfortunately,app has stopped".
this is my code:

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getApplicationContext());
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues(); //for insert
Date now=new Date(); //for insert
values.put("ID", 1); //for insert
values.put("kalame", "good"); //for insert
values.put("mani", "salam"); //for insert
values.put("marhale", "1"); //for insert
values.put("taghir", String.valueOf(now.getTime())); //for insert

long newRowID=db.insert("english", "taghir" , values); //for insert

String[] meghdarha={"good"};
String[] sotoonha={"ID","kalame","mani","marhale","taghir"};
Cursor nowRead =db.query("english", sotoonha, "kalame = good", null, null, null, null);

nowRead.moveToFirst();
long newWord=nowRead.getLong(nowRead.getColumnIndexOrThrow("ID"));
TextView tv=    (TextView)findViewById(R.id.textView1);
tv.setText(String.valueOf(newWord));  

这是我FeedReaderDbHelper:

this is my FeedReaderDbHelper:

public class FeedReaderDbHelper extends SQLiteOpenHelper {

    // If you change the database schema, you must increment the database version.
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "FeedReader.db";
    public static final String sakht="CREATE TABLE english (ID INTEGER PRIMARY KEY,kalame TEXT,mani TEXT,marhale TEXT,taghir TEXT );";
    public static final String pak="DROP TABLE IF EXISTS english";

    public FeedReaderDbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sakht);
    }

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // This database is only a cache for online data, so its upgrade policy is
        // to simply to discard the data and start over
        db.execSQL(pak);
        onCreate(db);
    }

    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }    
}

这是我的日志猫:

02-09 18:58:22.762: D/gralloc_goldfish(581): Emulator without GPU emulation detected.
02-09 18:59:51.202: E/SQLiteDatabase(581): Error inserting ID=1 mani=salam taghir=1391959791144 marhale=1 kalame=good
02-09 18:59:51.202: E/SQLiteDatabase(581): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.database.sqlite.SQLiteStatement.native_executeInsert(Native Method)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:113)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1718)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1591)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at ir.maghsoodi.leitnerbox.Insert.onCreate(Insert.java:31)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.Activity.performCreate(Activity.java:4465)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.os.Looper.loop(Looper.java:137)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at android.app.ActivityThread.main(ActivityThread.java:4340)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at java.lang.reflect.Method.invokeNative(Native Method)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at java.lang.reflect.Method.invoke(Method.java:511)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-09 18:59:51.202: E/SQLiteDatabase(581):  at dalvik.system.NativeStart.main(Native Method)
02-09 18:59:51.232: D/AndroidRuntime(581): Shutting down VM
02-09 18:59:51.242: W/dalvikvm(581): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
02-09 18:59:51.342: E/AndroidRuntime(581): FATAL EXCEPTION: main
02-09 18:59:51.342: E/AndroidRuntime(581): java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.maghsoodi.leitnerbox/ir.maghsoodi.leitnerbox.Insert}: android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException: bind or column index out of range: handle 0x1ee560
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.os.Looper.loop(Looper.java:137)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.ActivityThread.main(ActivityThread.java:4340)
02-09 18:59:51.342: E/AndroidRuntime(581):  at java.lang.reflect.Method.invokeNative(Native Method)
02-09 18:59:51.342: E/AndroidRuntime(581):  at java.lang.reflect.Method.invoke(Method.java:511)
02-09 18:59:51.342: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-09 18:59:51.342: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-09 18:59:51.342: E/AndroidRuntime(581):  at dalvik.system.NativeStart.main(Native Method)
02-09 18:59:51.342: E/AndroidRuntime(581): Caused by: android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException: bind or column index out of range: handle 0x1ee560
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteProgram.native_bind_string(Native Method)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:247)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:299)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:401)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:55)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1405)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1485)
02-09 18:59:51.342: E/AndroidRuntime(581):  at ir.maghsoodi.leitnerbox.Insert.onCreate(Insert.java:38)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.Activity.performCreate(Activity.java:4465)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-09 18:59:51.342: E/AndroidRuntime(581):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
02-09 18:59:51.342: E/AndroidRuntime(581):  ... 11 more
02-09 19:04:51.563: I/Process(581): Sending signal. PID: 581 SIG: 9

我该如何解决?
请帮助我

how can I fix it?
help me please

推荐答案

不知道这是否是问题,但在创建表的查询缺少);

Not sure if this is the problem but you create Table query is missing the ");"

public static final String sakht="CREATE TABLE english (ID INTEGER PRIMARY KEY,kalame TEXT,mani TEXT,marhale TEXT,taghir TEXT";

,但它应

public static final String sakht="CREATE TABLE english (ID INTEGER PRIMARY KEY,kalame TEXT,mani TEXT,marhale TEXT,taghir TEXT);";

此外,您的查询是错误的。你可以这样做

Also your query is wrong. You can either do

Cursor nowRead =db.query("english", sotoonha, "kalame = good", null, null, null, null);

或更动态的

Cursor nowRead =db.query("english", sotoonha, "kalame = ?", meghdarha, null, null, null);

请查看以下职位的详细信息 <一href="http://stackoverflow.com/questions/4757263/how-to-pass-two-or-more-selection-argument-in-query-method">How通过两项或&QUOT更多的选择参数;查询&QUOT;方法

check out the following post for details How to pass two or more selection argument in "query" method

这篇关于为什么我不能读成我的数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆