2016-04-23 33 views
0

我有用短信導入數據的代碼!現在我需要一種方法將數據從數據庫導出到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

如果你看到我的代碼,我需要一個方法,有一個參數巫婆是我(如id),我想只返回onoma列他們給一個單一的字符串作爲返回到變量 – Fmetal

+0

@Fmetal - 所以你想獲取列'onoma',你的id將會是'am',對吧?在這種情況下,只需相應地更改SQL語句即可。請檢查我上面編輯的答案。 –

+0

我像你說的那樣做了一些修改以適應我的代碼,但是我在(this)上遇到問題;我也編輯了頂部的代碼! – Fmetal

相關問題