Android }否则{ db.insert(表名称,空,值); Log.d(“插入成功”,表名称); } //关闭数据库连接 } 试一试{ db.close(); }捕获(例外e){ e、 printStackTrace(); } }捕获(例外e){ e、 printStackTrace(); } }
//更新单个联系人的代码。联系人是设置数据的getter setterAndroid }否则{ 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
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()});