Android }否则{ db.insert(表名称,空,值); Log.d(“插入成功”,表名称); } //关闭数据库连接 } 试一试{ db.close(); }捕获(例外e){ e、 printStackTrace(); } }捕获(例外e){ e、 printStackTrace(); } }

Android }否则{ db.insert(表名称,空,值); Log.d(“插入成功”,表名称); } //关闭数据库连接 } 试一试{ db.close(); }捕获(例外e){ e、 printStackTrace(); } }捕获(例外e){ e、 printStackTrace(); } },android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,//更新单个联系人的代码。联系人是设置数据的getter setter public int updateContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); values.put(K

//更新单个联系人的代码。联系人是设置数据的getter setter

public int updateContact(Contact contact) {  
    SQLiteDatabase db = this.getWritableDatabase();  

    ContentValues values = new ContentValues();  
    values.put(KEY_NAME, contact.getName());  
    values.put(KEY_PH_NO, contact.getPhoneNumber());  

    // updating row  
    return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",  
            new String[] { String.valueOf(contact.getID()) });  
}  

问题在于更新查询的语法

您的版本:

db.update(TABLE_NAME,cv,"username = "+r.getUname(),null);
像这样更新它

db.update(TABLE_NAME,cv,"username = ?",new String[]{r.getUname()});

这将解决问题。

如果您可以发布日志猫?为什么被否决?有人能告诉我原因吗?我从给出的日志中读到,您的应用程序试图写入一个表,声明数据库假设不存在的列h。@Delettant it present,我正在更新用户值为h的列,该列已经存在于数据库中。。我在编写更新查询时犯了一个错误,现在我纠正了这个错误,并且工作正常now@NidhinA帮我。。你能告诉我我的问题被否决了吗。。如果我得到ans,我会犯什么错误,从下一次开始,我会记在心里,并在这里问:它起作用了,谢谢:)
07-19 18:21:20.246 15581-15581/com.example.yadapras.mobiltyemp D/##username from db: h
07-19 18:21:20.256 15581-15581/com.example.yadapras.mobiltyemp D/###Column_IMEI_NO: 356619054923013
07-19 18:21:20.257 15581-15581/com.example.yadapras.mobiltyemp E/SQLiteLog: (1) no such column: h
07-19 18:21:20.259 15581-15581/com.example.yadapras.mobiltyemp D/AndroidRuntime: Shutting down VM
07-19 18:21:20.260 15581-15581/com.example.yadapras.mobiltyemp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                 Process: com.example.yadapras.mobiltyemp, PID: 15581
                                                                                 java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                     at android.view.View.performClick(View.java:4780)
                                                                                     at android.view.View$PerformClick.run(View.java:19866)
                                                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                                  Caused by: java.lang.reflect.InvocationTargetException
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                     at android.view.View.performClick(View.java:4780) 
                                                                                     at android.view.View$PerformClick.run(View.java:19866) 
                                                                                     at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                     at android.os.Looper.loop(Looper.java:135) 
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                  Caused by: android.database.sqlite.SQLiteException: no such column: h (code 1): , while compiling: UPDATE registrations SET imei_no=?,os_version=?,dev_model=? WHERE username = h
                                                                                     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.updateWithOnConflict(SQLiteDatabase.java:1574)
                                                                                     at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1522)
                                                                                     at com.example.yadapras.mobiltyemp.DatabaseHelper.updateTable(DatabaseHelper.java:146)
                                                                                     at com.example.yadapras.mobiltyemp.MainActivity.onButtonClick(MainActivity.java:72)
                                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                                     at android.view.View.performClick(View.java:4780) 
                                                                                     at android.view.View$PerformClick.run(View.java:19866) 
                                                                                     at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                     at android.os.Looper.loop(Looper.java:135) 
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
07-19 18:25:45.117 15581-15591/com.example.yadapras.mobiltyemp W/art: Suspending all threads took: 10.528ms
07-19 18:26:20.304 15581-15581/com.example.yadapras.mobiltyemp I/Process: Sending signal. PID: 15581 SIG: 9
public void updateTable(Register r) {
    SQLiteDatabase db = getWritableDatabase();

    ContentValues cv = new ContentValues();

    cv.put(COLUMN_IMEI_NO,r.getImei_no());
    Log.d("###Column_IMEI_NO",r.getImei_no());
    cv.put(COLUMN_DEV_MODEL,r.getDev_model());
    cv.put(COLUMN_OS_VERSION,r.getOs_version());
    String updateQuery = "Update registrations set " + COLUMN_IMEI_NO + " = '"+ r.getImei_no() +"' where " + COLUMN_USERNAME + "="+"'"+ r.getUname() +"'";
    database.execSQL(updateQuery);
    database.close();

}
   Try Like This (this works for me)


          public boolean rowIdExists(String StrId) {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("select id from " + TABLE_Name
            + " where id=?", new String[]{StrId});
    boolean exists = (cursor.getCount() > 0);
    /*cursor.close();
    db.close();*/
    return exists;
}

public void insertuserrate(String Str[], Context cxt) {

    // TODO Auto-generated method stub
/*
    Cursor c = null;
*/
    String strId = "";
    //ArrayList<String> userRatepoit= new ArrayList<String>();
    try {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        {
            values.put(KEY_RID, Str[0]);
            values.put(ALL_name, Str[1]);
            values.put(ALL_isbn, Str[2]);
            values.put(ALL_catid, Str[3]);

            if (rowIdExists(Str[0])) {
                db.update(TABLE_Name, values, "id " + "=" + Str[0], null);
                Log.d("update success", TABLE_Name);
            } else {
                db.insert(TABLE_Name, null, values);
                Log.d("inserted success", TABLE_Name);
            }
            // Closing database connection
        }
        try {
            db.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}
public int updateContact(Contact contact) {  
    SQLiteDatabase db = this.getWritableDatabase();  

    ContentValues values = new ContentValues();  
    values.put(KEY_NAME, contact.getName());  
    values.put(KEY_PH_NO, contact.getPhoneNumber());  

    // updating row  
    return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",  
            new String[] { String.valueOf(contact.getID()) });  
}  
db.update(TABLE_NAME,cv,"username = "+r.getUname(),null);
db.update(TABLE_NAME,cv,"username = ?",new String[]{r.getUname()});