目前我正在开发一个Android应用程序,它存储用户的重要数据,例如密码,卡号,网站用户名和密码等。我决定使用SQLITE DB,以便用户的数据可以驻留在他们自己的手机中,并且我计划实施 AES-256 算法 (SQLCiper),以便使用密钥对数据进行加密。但我担心的是它能发挥多大作用,如果有人进行逆向工程或 root 会发生什么?
请帮助我弄清楚这一点。
提前致谢。
我有桌子:
CREATE TABLE Reports (
_id INTEGER NOT NULL PRIMARY KEY,member_id INTEGER,
is_conf BOOLEAN,
name TEXT,
started INTEGER,
finished INTEGER,
description TEXT,
obj_id INTEGER NOT NULL,
FOREIGN KEY (obj_id) REFERENCES Objects (_id));Run Code Online (Sandbox Code Playgroud)
我想把数据拿到哪里member_id = NULL.String sql = "SELECT _id, name FROM Reports WHERE member_id = NULL";
Cursor cursor = db.rawQuery(sql, null);Run Code Online (Sandbox Code Playgroud)
不起作用.
我是android新手..
我正在使用sqlite数据库.在我的图像数据库中,我有一行.我正在android中正确获取图像.但是数据库中没有图像,而且在我的drawable中,我在图像视图中得到了空白区域.怎么解决这个?任何人帮助我..我的代码中也没有错误.
提前致谢...
嗨,我有一个与数据库有关的问题
在我的项目中,我需要在特定的文件夹中建立数据库,所以任何伙伴都可以告诉我哪里错了
此类在以下位置创建数据库 /data/data/package_folder/database_name
我想将其更改为 sdcard/database_folder/database_name
请检查我下面的代码
package com.example.qrcode.data;
public class LocalDatabase extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
// database name
public static final String DATABASE_NAME = "qrcode_database";
// table name
public static final String TABLE_NAME = "scan_result";
// table field name
public static final String COLUMN_ID = "id";
public static final String COLUMN_NAME = "scan_url";
public static final String SAVE_TABLE_NAME = "DEVICE";
public static final String SAVE_COLUMN_ID = "ID";
public static final String SAVE_COLUMN_NAME = …Run Code Online (Sandbox Code Playgroud) 我用sqlite和使用内容提供程序实现了android数据库.
但我的数据库中的数据未加密.
有没有最好的实践来实现Android设备的安全数据库?
我的意思不仅仅是加密,还包括可以提高我的应用程序安全性的任何技术.
我有一个关于在android中的SQLite数据库表中插入默认值的问题.我有一个DBHandler(显然)负责创建db,表和执行CRUD查询.
但我似乎无法弄清楚的是,如何在表中插入默认值.首先,我尝试使用以下方法在我的DBHandler中插入默认值:
// Write settings to db
public void addSetting(String key, String value) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(SETTING_KEY, key);
values.put(SETTING_VALUE, value);
db.insert(TABLE_APP_SETTINGS, null, values);
db.close();
}
Run Code Online (Sandbox Code Playgroud)
使用onCreate()方法调用的方法如下:
@Override
public void onCreate(SQLiteDatabase db) {
// creating tables
db.execSQL(DATABASE_CREATE);
db.execSQL(CREATE_TABLE_SETTINGS);
// insert default values
this.addSetting("access_admin_fingers", "2");
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这导致应用程序崩溃,给我以下LogCat消息:
02-18 09:43:52.050: W/dalvikvm(14297): threadid=1: thread exiting with uncaught exception (group=0x41f3d930)
02-18 09:43:52.060: E/AndroidRuntime(14297): FATAL EXCEPTION: main
02-18 09:43:52.060: E/AndroidRuntime(14297): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.customerratingsystem/com.customerratingsystem.AdminActivity}: java.lang.IllegalStateException: getDatabase called …Run Code Online (Sandbox Code Playgroud) 我想将SQLite数据库中的数据显示到我的自定义列表视图中
我的活动:
public class Main_activity extends Activity implements OnItemClickListener{
public static final String[] titles = new String[] { "Strawberry",
"Banana", "Orange" };
public static final String[] descriptions = new String[] {
"It is an aggregate accessory fruit",
"It is the largest herbaceous flowering plant", "Citrus Fruit"
};
ListView listView;
List<RowItem> rowItems;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
rowItems = new ArrayList<RowItem>();
for (int i = 0; i < titles.length; …Run Code Online (Sandbox Code Playgroud) 我在一个类(非活动)中有这个方法 -
public boolean usernameChk(String usrname) {
String usrnmQuery = "SELECT * FROM " + TABLE_ACCOUNTS + " WHERE username = '" + usrname + "'";
SQLiteDatabase db = this.getReadableDatabase();
//NullPointerException on line above
Cursor cursor = db.rawQuery(usrnmQuery, null);
cursor.close();
if (cursor.getCount() <= 0) {
return false;
} else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
但是SQLiteDatabase db = this.getReadableDatabase();当我从其他活动中调用此方法时,我在线获取NullPointerException -
private Context context;
this.context = context;
new DatabaseHandler(this);
DatabaseHandler dbz = new DatabaseHandler(context);
boolean z = dbz.usernameChk(username.getText().toString());
Run Code Online (Sandbox Code Playgroud)
这是我的LogCat - …
我在android中创建sqlite db时遇到错误.
我的代码是:
public static final String TABLE_NAME = "user";
public static final String COL1_USER_ID = "USER_ID";
public static final String COL2_USER_NAME = "USER_NAME";
public static final String COL3_IMEI_CODE = "IMEI_CODE";
public static final String COL4_REGISTRATION_ID = "REGISTRATION_ID";
public static final String COL5_MOBILE_NUMBER = "MOBILE_NUMBER";
public static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + _ID + " INTEGER PRIMARY KEY,"+ COL1_USER_ID + TEXT_TYPE + COMMA_SEP + COL2_USER_NAME + TEXT_TYPE
+ COMMA_SEP + COL3_IMEI_CODE + TEXT_TYPE …Run Code Online (Sandbox Code Playgroud) 我找到了问题的原因,见下文!
简而言之,由于备份功能恢复了具有相同版本号的旧数据库方案,因此在我的SQLiteHelperClass中都没有调用onUpdate()或onCreate().
我遇到了一个我无法解决的奇怪问题.当我在模拟器中运行我的应用程序时,一切正常.当我在手机上将其作为apk-debug.apk运行时,一切正常,但当我尝试在手机上将其作为已签名的应用程序运行时,我收到此错误:
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such column: listId (code 1): , while compiling: SELECT * FROM mytable WHERE listId=100 ORDER BY id,name,conc ASC)
Run Code Online (Sandbox Code Playgroud)
如果我删除设置中的所有应用程序数据并重新运行应用程序,一切都在签名的应用程序版本中工作,尽管它最初是首次安装在手机上!
mytable是通过运行db.execSQL(DATABASE_CREATE_MY_TABLE)创建的:(列名是在其他地方设置的常量)
private static final String DATABASE_CREATE_MY_TABLE = "CREATE TABLE "
+ MY_TABLE + "("
+ ID + " INTEGER, "
+ LIST_ID + " INTEGER, "
+ NAME + " STRING, "
+ CONC + " REAL, "
+ "PRIMARY KEY (" + ID …Run Code Online (Sandbox Code Playgroud)