Я новичок в базе данных. У меня есть две таблицы в базе данных одна пользовательская
"Create Table user(username text , contact_number text primary key , password text , favourite_fruit text"
и ключевые слова
"Create Table keywords( contact_number text primary key , alarm text , location text )"
Я хочу получить данные о тревоге столбца из ключевых слов и установить для них значение Изменить текст в действии, но я не могу получить данные из столбца тревоги.
Пока я пробовал это:
public String getAlarm(String al){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor=db.query("keywords",new String[]{"alarm"},"contact_number=?",new String[]{al},null,null,null,null);
String a;
if (cursor.moveToFirst()) {
a = cursor.getString(cursor.getColumnIndex("alarm"));
} else {
a = " ";
}
return a;
}
и это:
public String getAlarm(String al){
SQLiteDatabase db = this.getReadableDatabase(); // to get database in readable format
// Cursor cursor = db.rawQuery("select alarm from keywords where contact_number=? ",new String[]{al});
String a; //storing the required value
if (cursor.moveToFirst())
{
do {
a = cursor.getString(0);// each item will be stored
return a; // returning the required value
}
while(cursor.moveToNext());
}
и это:
public String getAlarm(String al){
SQLiteDatabase db = this.getReadableDatabase(); // to get database in readable format
Cursor cursor = db.rawQuery("select alarm from keywords where contact_number=? ",new String[]{al});
if (cursor != null) {
cursor.moveToFirst();
}
while (cursor.isAfterLast() == false) {
cursor.getString(1); // will fetch you the data
cursor.moveToNext();
}
cursor.close();
return " ";
}
Файл моей базы данных выполняет каждый запрос пользовательской таблицы, но для таблицы ключевых слов он просто выполняет свою функцию insertkeys и никакой другой запрос относительно таблицы ключевых слов. Я не понимаю, связана ли проблема с моим запросом или с моей таблицей. мой файл базы данных тоже
public class DatabaseHelper extends SQLiteOpenHelper {
// constructor
public DatabaseHelper(Context context) {
super(context, "Offline Mobile Finder.db", null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("Create Table user(username text , contact_number text primary key , password text , favourite_fruit text)");
db.execSQL("Create Table keywords( contact_number text primary key , alarm text , location text )");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists user");
db.execSQL("drop table if exists keywords");
onCreate(db);
}
// data of user table
public boolean insert (String username,String contact_no ,String password ,String fav_fruit ){
SQLiteDatabase db = this.getWritableDatabase();
//ContentValues is a name value pair, used to insert or update values into database tables.
// ContentValues object will be passed to SQLiteDataBase objects insert() and update() functions.
// ContentValues contentValues = new ContentValues();
ContentValues contentValues = new ContentValues();
contentValues.put("username",username);
contentValues.put("contact_number",contact_no);
contentValues.put("password",password);
contentValues.put("favourite_fruit",fav_fruit);
long ins = db.insert("user",null,contentValues);
// db.close();
if(ins == -1)
return false;
else
return true;
}
// values insert in keywords table
public boolean insertkeys (String alarm ,String location ,String contact){
SQLiteDatabase db = this.getWritableDatabase();
//ContentValues is a name value pair, used to insert or update values into database tables.
// ContentValues object will be passed to SQLiteDataBase objects insert() and update() functions.
// ContentValues contentValues = new ContentValues();
ContentValues contentValues = new ContentValues();
contentValues.put("alarm",alarm);
contentValues.put("location",location);
contentValues.put("contact_number",contact);
long ins = db.insert("keywords",null,contentValues);
long upd = db.update("keywords",contentValues,"contact_number = ?",new String[]{contact});
// db.close();
if(ins == -1 && upd == -1)
return false;
else
return true;
}
public String getAlarm(String al) {
SQLiteDatabase db = this.getReadableDatabase(); // to get database in readable format
Cursor cursor = db.rawQuery("select alarm from keywords where contact_number=? ", new String[]{al});
String result = "";
if (cursor.moveToFirst()) {
result = cursor.getString(0);
}
cursor.close();
return result;
}
// checking if contact number exists in register activity
public boolean checkContactNo (String contact_no){
SQLiteDatabase db = this.getReadableDatabase();
//Cursors are what contain the result set of a query made against a database in Android.
// The Cursor class has an API that allows an app to read (in a type-safe manner) the columns
// that were returned from the query as well as iterate over the rows of the result set.
Cursor cursor = db.rawQuery("Select * from user where contact_number=?", new String[] {contact_no} );
if(cursor.getCount() > 0 )
return false;
else
return true;
}
public String getUsernameThroughContactNo(String contactNo){
SQLiteDatabase db = this.getReadableDatabase(); // to get database in readable format
Cursor cursor = db.rawQuery("select username from user where contact_number=?",new String[]{contactNo});
String a; //storing the required value
if (cursor.moveToFirst())
{
do {
a = cursor.getString(0);// each item will be stored
return a; // returning the required value
}
while(cursor.moveToNext());
}
return "";
}
}
Я пытаюсь показать значение getAlarm () в других действиях в toast, но при выполнении каждого запроса, который я пробовал, ничего не отображается в toast. Даже если я пытаюсь получить contact_number из этой таблицы, происходит сбой.
Искал так много, чтобы решить проблему, но не нашел решения. Я надеюсь, что здесь кто-то найдет проблему и даст решение. Заранее спасибо за помощь:)