android数据库查找一个字符,关于android:如何将我的字符串值更新到数据库
具有表名称为status并且列名称为column1的数据库。 我需要更新。我在Activity1中有一个字符串值String check ="value";我已经将此值传递到我的DBHelper中。dbhelper = new DBHelper(this);dbhelper.sample(check);我在DBHelpe r.here中得到了这个值。 像这样public void sample(S
具有表名称为status并且列名称为column1的数据库。 我需要更新。
我在Activity1中有一个字符串值
String check ="value";
我已经将此值传递到我的DBHelper中。
dbhelper = new DBHelper(this);
dbhelper.sample(check);
我在DBHelpe r.here中得到了这个值。 像这样
public void sample(String prms){
Log.d("sucess",prms);
}
现在我需要如何将String prms更新到我的数据库列名column1中
我已经尝试过这样
public void sample( String prms) {
Log.d("DBHELPER SUCCESS", prms);
try{
SQLiteDatabase db1 = this.getWritableDatabase();
db1.execSQL("update appstatus SET status = '"+prms+"' WHERE id = 1");
}catch(Exception e){
System.out.println("GET SAMPLE VALUE"+e);
}
}
我的语法有什么问题? 如何实现呢?
它显示为
02-28 12:09:45.604: I/System.out(4975): GET SAMPLE VALUEandroid.database.sqlite.SQLiteException: table report already exists (code 1): , while compiling: create table report(level TEXT, topic TEXT, start TEXT, end TEXT, date TEXT)
您忘记在查询中添加Table Name
状态是我的表名
您的任何查询都不适合我。 它显示类型不匹配:无法从void转换为Cursor
@MakeitSimple您是OP吗? 根据您的评论,您会表现得很像。 请仅使用一个帐户,这样您就不会因举报此类问题而被举报。
@laalto确实,所有用户都在这里提供正确答案和正确建议。
@laalto我尝试在应用程序关闭时将值传递给dbhelper中的该方法时尝试其不起作用。
@MD我尝试在应用程序关闭时将值传递给dbhelper中的该方法时尝试其不起作用。
那是一个单独的问题。 请从logcat发布异常stacktrace。
@BalamuruganRadhakrishnan这个问题不是关于查询LOL发布您的logcat以便更好地低估的
@laalto我在logcat中没有得到任何异常
@laalto我有空指针异常
您可以直接Execute如下查询:
db.execSQL("update status SET column1 = '"+prms+"'", null);
您应该替换您的代码
Cursor cursor = db.execSQL("update status SET column1 = '"+prms+"'", null);
用
db.execSQL("update status SET column1 = '"+prms+"'", null);
无效的execSQL(String sql)
执行一个不是SELECT的SQL语句或任何其他返回数据的SQL语句。
它无法返回任何数据(例如受影响的行数)。相反,建议您尽可能使用insert(String,String,ContentValues,update(String,ContentValues,String,String [])等。
它显示类型不匹配:无法从void转换为Cursor
rawQuery()实际上没有运行SQL。使用execSQL()代替:
db.execSQL("update status SET column1 = '"+prms+"'");
(请参阅使用查询字符串在Android SQLiteDatabase中执行插入/更新/删除的正确方法是什么,以了解rawQuery()和execSQL()的幕后工作方式。)
不起作用..显示..类型不匹配:无法从void转换为Cursor
execSQL()不返回Cursor,因此您不能将返回值分配给游标。
它显示类型不匹配:无法从void转换为Cursor
只需删除Cursor cursor =
我试过了,它没有更新,应用程序关闭了。
遵循此代码,它返回编号。更新时影响的行数。
SQLiteHelper helper;
public int updateName(String oldName,String newName)
{
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(this.NAME, newName);
String [] whereArgs={oldName};
int count = db.update(helper.TABLE_NAME, values, helper.NAME+" =?",whereArgs);
return count;
}
其中helper是扩展SQLiteOpenHelper的类的对象,如下面的代码。
static class SQLiteHelper extends SQLiteOpenHelper
{
....
private static final String DATABASE_NAME ="databaseName";
private static final String TABLE_NAME ="TABLENAME";
private static final int DATABASE_VERSION = 1;
private static final String UID ="_id";
private static final String NAME ="Name";
private static final String PASSWORD ="Password";
private static final String CREATE_TABLE ="CREATE TABLE"+ TABLE_NAME +"(" + UID +" INTEGER PRIMARY KEY AUTOINCREMENT," + NAME +" VARCHAR(255)," + PASSWORD +" VARCHAR(255));";
public SQLiteHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
Message.Message(context,"Constructor Called");
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
try {
Message.Message(context,"OnCreate Called");
db.execSQL(CREATE_TABLE);
} catch (SQLException e) {
// TODO Auto-generated catch block
Message.Message(context,"" + e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
try {
Message.Message(context,"onUpgrade Called");
db.execSQL(DROP_TABLE);
onCreate(db);
} catch (SQLException e) {
// TODO Auto-generated catch block
Message.Message(context,""+e);
}
}
}
无法获取您的代码。
香港专业教育学院更新了我的答案,现在您可以尝试一下。
更新您的以下行代码,
Cursor cursor = db.rawQuery("update status SET column1 = '"+prms+"'", null);
到这条线
db.execSQL("update status SET column1 = '"+prms+"'" );
因此您的方法将如下所示:
public void sample(String prms)
{
Log.d("sucess",prms);
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("update status SET column1 = '"+prms+"'WHERE id = '5'" ); // remove second param from here.
}
警告:此查询将更新Column1的所有行;您应该包含where子句
我试过它显示类型不匹配:无法从void转换为Cursor
@BalamuruganRadhakrishnan查看我的最新答案。
我已经尝试过该查询,..它没有更新。应用程序关闭,该值将传递给该方法。
@BalamuruganRadhakrishnan这行Log.d("sucess",prms);在DDMS上打印什么?
是的,它在日志猫中打印
您可以再次在示例中粘贴sample()方法的代码吗?
public void sample(String prms){Log.d(" sucess",prms); SQLiteDatabase db = this.getWritableDatabase(); db.execSQL("更新状态SET column1 =" + prms +" WHERE id = 5",空); }
@BalamuruganRadhakrishnan为什么要传递第二个参数null?看我的答案。
@BalamuruganRadhakrishnan查看我的最新答案
是的,我给了那样,它没有更新。在例外情况下抛出其他表名
您可以在这里发布错误吗?
看到我的编辑代码,@Kedarnath例外
@BalamuruganRadhakrishnan,这是一个新错误。我想这是来自其他方面。
是的,它来自其他地方。我不知道为什么它来。
那么如果没有代码,我怎么能看到它呢?
检查此pastebin.com/fLLwQmsY @kedarnath
@BalamuruganRadhakrishnan在此代码中没有问题。由于这是一个新问题,因此我建议您发布一个新问题。
好,谢谢老兄@Kedarnath
我没有得到解决方案@Kedarnath
好,我已经成功解决了您的更新查询。
db.execSQL("更新状态SET column1 ='" + prms +"'",null);
不起作用..显示..类型不匹配:无法从void转换为Cursor
更多推荐
所有评论(0)