2016-04-23 2 views
0

У меня есть код, который импортирует данные с помощью sms! И теперь мне нужен один метод для экспорта этих данных из базы данных в переменную IncomingSMSReceiver (я, вероятно, сделаю один метод для каждого поля); Можно ли экспортировать значение одной ячейки в переменную?SQlite Метод для экспорта Строка значения одиночной ячейки для переменной

E.g Я попытался сделать это для столбца onoma, но я не знаю, какой метод базы данных я должен использовать, и какой sql и как его экспортировать.

DatabaseHelper.java

package toulios.ptixiakh.toulios; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DatabaseHelper extends SQLiteOpenHelper { 

public static final String DATABASE_NAME="Toulios.db"; 
public static final String TABLE_NAME="Foitites_table"; 
public static final String Col_AM="AM"; 
public static final String Col_ONOMA="ONOMA"; 
public static final String Col_EPITHETO="EPITHETO"; 
public static final String Col_EXAMINO="EXAMINO"; 

public DatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + TABLE_NAME+"(AM INTEGER PRIMARY KEY,ONOMA TEXT,EPITHETO TEXT, EXAMINO INTEGER)"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS"+TABLE_NAME); 
    onCreate(db); 
} 


public boolean eisagoghfititi(String am,String onoma,String epitheto,String examino) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(Col_AM,am); 
    contentValues.put(Col_ONOMA,onoma); 
    contentValues.put(Col_EPITHETO,epitheto); 
    contentValues.put(Col_EXAMINO,examino); 
    long result = db.insert(TABLE_NAME,null,contentValues); 
    if(result == -1) 
     return false; 
    else 
     return true; 
} 

    public String exagwgh_onoma(String am){ 
    String str=""; 
    final String SQL_SELECT_QUERY = "SELECT "+DatabaseHelper.Col_ONOMA+" FROM "+DatabaseHelper.TABLE_NAME+" WHERE "+DatabaseHelper.Col_AM+" = "+am; 

    DatabaseHelper queryDbHelperObj = new DatabaseHelper(this); 
    SQLiteDatabase sqLiteDatabase = queryDbHelperObj.getReadableDatabase(); 
    Cursor cursor = sqLiteDatabase.rawQuery(SQL_SELECT_QUERY,null); 
    if (cursor.moveToFirst()) { 
     str = cursor.getString(cursor.getColumnIndex("content")); 
    } 
    cursor.close(); 
return str; 
    } 
} 

IncomingSMSReceiver.java

public class IncomingSMSReceiver extends BroadcastReceiver{ 

private static final String SMS_RECEIVED ="android.provider.Telephony.SMS_RECEIVED"; 

@Override 
public void onReceive(Context _context, Intent _intent) { 

    if (_intent.getAction().equals(SMS_RECEIVED)) { 
     Bundle bundle = _intent.getExtras(); 
     if (bundle != null) { 

      Object[] pdus = (Object[]) bundle.get("pdus"); 

      SmsMessage[] messages = new SmsMessage[pdus.length]; 
      for (int i = 0; i < pdus.length; i++) 
       messages[i] = SmsMessage 
         .createFromPdu((byte[]) pdus[i]); 
      for (SmsMessage message : messages) 
      { 
       String strPhoneNo = message.getOriginatingAddress(); 
       String msg = message.getMessageBody(); 

       if (msg.startsWith("01")) 
       { 
        try { 
         final String[] temaxismeno_sms = msg.split(":"); 

         DatabaseHelper dbHelper = new DatabaseHelper(_context.getApplicationContext()); 
         dbHelper.eisagoghfititi(temaxismeno_sms[1],temaxismeno_sms[2],temaxismeno_sms[3],temaxismeno_sms[4]); 
         Toast.makeText(_context, "Egine eisagwgh fititi!!", Toast.LENGTH_LONG).show(); 
         String message1 = "H Eisagwgh egine sthn vash.";// minima pou tha stalthei 
         SmsManager sms = SmsManager.getDefault(); 
         sms.sendTextMessage(strPhoneNo, null, message1, null, null); 
         Toast.makeText(_context, "O fititis idopiithike", Toast.LENGTH_LONG).show(); 
         } 
        catch (Exception e) 
         { 
         Toast.makeText(_context, "SMS failed, please try again.", 
           Toast.LENGTH_LONG).show(); 
         e.printStackTrace(); 
         } 
       } 
       if (msg.startsWith("02")) 
       { 
        final String[] temaxismeno_sms = msg.split(":"); 
        String apotelesma; 
        DatabaseHelper dbHelper = new DatabaseHelper(_context.getApplicationContext()); 
        apotelesma = dbHelper.exagwgh_onoma(temaxismeno_sms[1]); 
        String message2 = "To onoma tou am pou epilexate einai "+apotelesma; 
        SmsManager sms = SmsManager.getDefault(); 
        sms.sendTextMessage(strPhoneNo, null, message2, null, null); 

       } 
      } 
     } 
    } 
} 
} 

ответ

0

Вы можете добиться того, что в приведенном ниже способом -

public static final String SQL_SELECT_QUERY = "SELECT COLUMN1 FROM "+AndroidOpenDbHelper.TEST_TABLE; 

AndroidOpenDbHelper queryDbHelperObj = new AndroidOpenDbHelper(this); 
SQLiteDatabase sqLiteDatabase = queryDbHelperObj.getReadableDatabase(); 
Cursor cursor = sqLiteDatabase.rawQuery(SQL_SELECT_QUERY,null); 

if(cursor != null) 
{ 
    if(cursor.moveToFirst()) 
    { 
     do 
     { 
      String ColumnVal = cursor.getString(cursor.getColumnIndex("Column1")); 

     }while(cursor.moveToNext()); 
    } 
} 

Редакцией:

"SELECT "+AndroidOpenDbHelper.ONOMA+" FROM "+AndroidOpenDbHelper.TEST_TABLE+" WHERE "+AndroidOpenDbHelper._ID+" = "+am; 

Надеюсь, это поможет!

+0

Если вы видите мой код, мне нужен метод, в котором есть один аргумент witch is am (например, id), и я хочу вернуть столбец onoma только для того, чтобы они дали одну строку в качестве возврата, чтобы получить ее в переменной – Fmetal

+0

@Fmetal - Итак, вы хотите получить столбец 'onoma', где ваш id будет' am', правильно? В этом случае просто измените инструкцию SQL соответственно. Пожалуйста, проверьте мой отредактированный ответ выше. –

+0

Я сделал это, как вы сказали, с некоторыми изменениями, чтобы соответствовать моему коду, но я получаю проблему (это); Я тоже редактировал код! – Fmetal

Смежные вопросы