我想创建一个更新函数,该函数将根据行的INTEGER PRIMARY KEY更改数据库中各列(整个行)的条目-如果可能的话。
我有一个find函数,它将查找数据库的详细信息并将其加载到EditText字段中以进行编辑/更新。
查找按钮(调用查找处理程序)将内容加载到可以更改/编辑的EditText字段中,但是当按下按钮以更新编辑的条目时,整个数据库将被更改的EditText条目覆盖。
为了明确起见,我想更改数据库中包含端口,名称和IP地址的一行,更新该单个条目并将其放回数据库中,而不会覆盖我的所有数据库条目(目前正在发生这种情况)。
我无法使用原始的未编辑形式在data / data / {package name} ...文件夹中查看数据库,因为我使用的是旧的Samsung手机(其中不包含某些未知的database.db指出“用于以下原因运行:无法设置功能...”消息,用于调试/运行该应用程序,并且我使用的PC没有足够的RAM来支持虚拟设备。
任何帮助,建议或示例将不胜感激。我是Android应用程序开发和Java的新手,所以如果问题很明显或很简单,请原谅我。
这是创建表的方式:
public static final String TABLE_USER = "User";
public static final String COL_ID = "_id";
public static final String COLUMN_ID = "UserIP";
public static final String COLUMN_NAME = "UserName";
public static final String COLUMN_PORT = "UserPort";
public void onCreate(SQLiteDatabase db)
{
String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " +
TABLE_USER + "(" + COL_ID + " INTEGER PRIMARY KEY, " +
COLUMN_PORT + " INTEGER, " + COLUMN_NAME
+ " TEXT, " + COLUMN_ID + " TEXT " + ")";
try
{
db.execSQL(CREATE_USER_TABLE);
}catch (SQLException e)
{
e.printStackTrace();
}
}
该发现的功能如下:
public User findHandler(String username, String IP)
{
String query = "Select * FROM " + TABLE_USER + " WHERE " +
COLUMN_NAME + " = '" + username + "'" + " and " + COLUMN_ID + " =
'" + String.valueOf(IP) + "'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
User user = new User();
if (cursor.moveToFirst())
{
cursor.moveToFirst();
user.setUserPort(Integer.parseInt(cursor.getString(1)));
user.setUserName(cursor.getString(2));
user.setID(cursor.getString(3));
cursor.close();
//Log.d("Message1", msg);
}
else
{
user = null;
}
db.close();
return user;
}
相关分类