Android 根据Firstname从SQLite数据库检索数据
我能够存储数据并从数据库中检索数据,但在检索数据时 显示以前存储的所有数据,但应仅显示 我就插进去了。基本上,如果用户使用其用户名登录,则应仅显示该用户名 他的个人资料很详细,但它显示了数据库中的所有条目。我该怎么做 根据名字或任何特定条目(我相信是主键)将其分开。对不起 感谢你提出这样一个愚蠢的问题,但我对编程和数据库一无所知。任何Android 根据Firstname从SQLite数据库检索数据,android,database,sqlite,Android,Database,Sqlite,我能够存储数据并从数据库中检索数据,但在检索数据时 显示以前存储的所有数据,但应仅显示 我就插进去了。基本上,如果用户使用其用户名登录,则应仅显示该用户名 他的个人资料很详细,但它显示了数据库中的所有条目。我该怎么做 根据名字或任何特定条目(我相信是主键)将其分开。对不起 感谢你提出这样一个愚蠢的问题,但我对编程和数据库一无所知。任何 非常感谢您的帮助。快速建议将id作为主键列添加到用户表中。然后在插入新记录后获取该id,并将该id保存在SharedReferences中,然后在需要时可以使用W
非常感谢您的帮助。快速建议将id作为主键列添加到用户表中。然后在插入新记录后获取该id,并将该id保存在SharedReferences中,然后在需要时可以使用WHERE
id
=my\u id\u save从用户表中提取该记录。
下面是示例快速建议将id添加为用户表的主键列。然后在插入新记录后获取该id,并将该id保存在SharedReferences中,然后在需要时可以使用WHERE
id
=my\u id\u save从用户表中提取该记录。
以下是示例您正在检索在
列
数组中指定的三列的所有行,因为您在对查询()的调用中为WHERE
子句传递了null
您正在检索在列
数组中指定的三列的所有行,因为在调用query()
的过程中,为WHERE
子句传递了null
,然后可以过滤要检索的结果
我建议您看看,它将使您的代码更具可读性,并使整个数据库的使用更简单 使用WHERE子句,然后可以筛选要检索的结果
我建议您看看,它将使您的代码更具可读性,并使整个数据库的使用更简单 在Profile\u view.java中,您可以调用传递要匹配的字符串的方法:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
调整后的getName方法应该如下所示:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
最后,您正在调用的SQLiteDatabase类的查询方法定义如下:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
查询(字符串表、字符串[]列、字符串选择、字符串[]选择项、字符串分组依据、字符串拥有、字符串排序依据)
因此,将查询调用调整为如下所示:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
让事情变得更有活力:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
这样,您就可以调用query(),返回您想要的任何内容新的get方法可以是:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
在Profile\u view.java中,您可以调用传递要匹配的字符串的方法:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
调整后的getName方法应该如下所示:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
最后,您正在调用的SQLiteDatabase类的查询方法定义如下:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
查询(字符串表、字符串[]列、字符串选择、字符串[]选择项、字符串分组依据、字符串拥有、字符串排序依据)
因此,将查询调用调整为如下所示:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
让事情变得更有活力:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
这样,您就可以调用query(),返回您想要的任何内容新的get方法可以是:
**DBAdapter.java :**
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + DATABASE_TABLE + " (" + KEY_FIRSTNAME
+ " TEXT NOT NULL PRIMARY KEY, " + KEY_MIDDLENAME + " TEXT NOT NULL, "
+ KEY_LASTNAME + " TEXT NOT NULL, " + KEY_USERNAME + " TEXT NOT NULL, " + KEY_MAIL_ID + " TEXT NOT NULL, "
+ KEY_PASSWORD + " TEXT NOT NULL, " + KEY_CONFIRM
+ " TEXT NOT NULL, " + KEY_DATE_OF_BIRTH
+ " INTEGER NOT NULL "
+ ");");
}
public long insertRecord(String firstname, String middlename,
String lastname, String username, String mail_id, String pass_word,
String re_password, String d_o_b) {
ContentValues cv = new ContentValues();
cv.put(KEY_FIRSTNAME, firstname);
cv.put(KEY_MIDDLENAME, middlename);
cv.put(KEY_LASTNAME, lastname);
cv.put(KEY_USERNAME, username);
cv.put(KEY_MAIL_ID, mail_id);
cv.put(KEY_PASSWORD, pass_word);
cv.put(KEY_CONFIRM, re_password);
cv.put(KEY_DATE_OF_BIRTH, d_o_b);
//cv.put(KEY_COUNTRY, coun_try);
return mDB.insert(DATABASE_TABLE, null, cv);
}
public String getName() {
String column[] = new String[] { KEY_FIRSTNAME, KEY_MIDDLENAME,
KEY_LASTNAME };
Cursor c = mDB.query(DATABASE_TABLE, column, null, null, null, null,
null);
String name = "";
int iFirst = c.getColumnIndex(KEY_FIRSTNAME);
int iMiddle = c.getColumnIndex(KEY_MIDDLENAME);
int iLast = c.getColumnIndex(KEY_LASTNAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
name = name + c.getString(iFirst) + "\t" + c.getString(iMiddle)
+ "\t" + c.getString(iLast) + "\t";
}
c.close();
return name;
}
----------
**Profile_view.java :**
DBAdapter dbAdapter = new DBAdapter(Profile_view.this);
dbAdapter.open();
String name = dbAdapter.getName();
full_name.setText(name);
username_display.setText(dbAdapter.getUserName());
mail_display.setText(dbAdapter.getMail_id());
date_of_birth_display.setText(dbAdapter.get_date_of_birth());
----------
String name = dbAdapter.getName(currentUser);
public String getName(String currentUser);
Cursor c = mDB.query(DATABASE_TABLE, column, null, "where firstname = ?", new String[]{"" + currentUser + ""}, null, null);
String where = "where " + columnToMatch + " = ?";
Cursor c = mDB.query(DATABASE_TABLE, column, null, where, new String[]{"" + stringToMatch + ""}, null, null);
@博比·迪伦:谢谢你,朋友。我刚开始编程,这段代码对我小小的大脑来说似乎太难了,但无论如何,感谢你的努力。酷…@bobby.dhillon谢谢,朋友。因为我刚开始编程,这段代码对我小小的大脑来说似乎太难了,但无论如何,感谢你的努力。酷..那么你建议我在查询方法中替换null?是的,你应该替换
null
,这是WHERE
子句的参数。您应该检索其密码和用户名与用户输入的密码和用户名匹配的用户。因此,您建议我在查询方法中替换null?是的,您应该替换null
,这是WHERE
子句的参数。您应该检索其密码和用户名与用户输入的密码和用户名匹配的用户。但是Bennet先生,该方法只是我在类中实现的几种方法的一个示例。我还有getmailid()、getusername()、getdob()等等。谢谢B先生,我会试试看,然后再给你回复。非常感谢。这将返回与您定义的currentUser变量的任何匹配项(可能为空)。因此,在返回之前测试游标是否为null是明智的。我的游标希望重新排列参数,如游标c=mDB.query(DATABASE_TABLE,column,null,new String[]{”“+currentUser+”“},其中,null,null);可以吗?在这里查看SQLiteDatabase的类定义:-光标不应该想重新排列任何内容。它有结果,希望能有所帮助。但是Bennet先生,这个方法只是我在我的课堂上实现的几个方法中的一个例子。我还有getmailid()、getusername()、getdob()等等。谢谢B先生,我会试试看,然后再给你回复。非常感谢。这将返回与您定义的currentUser变量的任何匹配项(可能为空)。因此,在返回之前测试游标是否为null是明智的。我的游标希望重新排列参数,如游标c=mDB.query(DATABASE_TABLE,column,null,new String[]{”“+currentUser+”“},其中,null,null);可以吗?在这里查看SQLiteDatabase的类定义:-光标不应该想重新排列任何内容。它有结果,希望有帮助。