簡體   English   中英

從SQLite DB電子郵件中獲取用戶的分數和分數並將分數分別發送給每個用戶

[英]Get from SQLite DB email and score of a user and send the score to each user respectively

我在Android中創建了一個應用程序,該應用程序需要在您單擊SendMail按鈕時向所有保存在數據庫中的聯系人發送電子郵件,向具有相應分數的每個聯系人發送電子郵件,

想法是在數據庫中滑動每個用戶的對(電子郵件,分數),並將其傳遞給發送電子郵件的特定方法

我實現了send方法,以便接收電子郵件地址和與之相關的分數,我測試了send eMail方法並正常工作,

唯一的問題是,我無法定義一種適合通過單擊按鈕來傳遞每個用戶的所有電子郵件地址和相關分數的方法。

我的DatabaseHelper類如下:

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 {

static final String dbName="demoDB";
static final String PlayerTable="Players";
static final String colID="PlayerID";
static final String colName="PlayerName";
static final String colEmail="Email";
static final String colScore="Score";
static final String colDept="Dept";

static final String deptTable="Dept";
static final String colDeptID="DeptID";
static final String colDeptName="DeptName";

static final String viewEmps="ViewEmps";


public DatabaseHelper(Context context) {
    super(context, dbName, null,33);

    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

    db.execSQL("CREATE TABLE "+deptTable+" ("+colDeptID+ " INTEGER PRIMARY KEY , "+
            colDeptName+ " TEXT)");

    db.execSQL("CREATE TABLE "+PlayerTable+" ("+colID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
            colName+" TEXT, "+colEmail+" TEXT, "+colScore+" Integer, "+colDept+" INTEGER NOT NULL ,FOREIGN KEY ("+colDept+") REFERENCES "+deptTable+" ("+colDeptID+"));");


    db.execSQL("CREATE TRIGGER fk_empdept_deptid " +
            " BEFORE INSERT "+
            " ON "+PlayerTable+

            " FOR EACH ROW BEGIN"+
            " SELECT CASE WHEN ((SELECT "+colDeptID+" FROM "+deptTable+" WHERE "+colDeptID+"=new."+colDept+" ) IS NULL)"+
            " THEN RAISE (ABORT,'Foreign Key Violation') END;"+
            "  END;");

    db.execSQL("CREATE VIEW "+viewEmps+
            " AS SELECT "+PlayerTable+"."+colID+" AS _id,"+
            " "+PlayerTable+"."+colName+","+
            " "+PlayerTable+"."+colEmail+","+
            " "+PlayerTable+"."+colScore+","+
            " "+deptTable+"."+colDeptName+""+
            " FROM "+PlayerTable+" JOIN "+deptTable+
            " ON "+PlayerTable+"."+colDept+" ="+deptTable+"."+colDeptID
            );
    //Inserts pre-defined sections
    InsertDepts(db);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

    db.execSQL("DROP TABLE IF EXISTS "+PlayerTable);
    db.execSQL("DROP TABLE IF EXISTS "+deptTable);

    db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger");
    db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger22");
    db.execSQL("DROP TRIGGER IF EXISTS fk_empdept_deptid");
    db.execSQL("DROP VIEW IF EXISTS "+viewEmps);
    onCreate(db);
}

 void AddPlayer(Player emp)
{


     SQLiteDatabase db= this.getWritableDatabase();


    ContentValues cv=new ContentValues();

    cv.put(colName, emp.getName());
    cv.put(colName, emp.getEmail());
    cv.put(colScore, emp.getScore());
    cv.put(colDept, emp.getDept());
    //cv.put(colDept,2);

    db.insert(PlayerTable, colName, cv);
    db.close();


}

 int getPlayerCount()
 {
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor cur= db.rawQuery("Select * from "+PlayerTable, null);
    int x= cur.getCount();
    cur.close();
    return x;
 }

 Cursor getAllPlayers()
 {
     SQLiteDatabase db=this.getWritableDatabase();



     //Cursor cur= db.rawQuery("Select "+colID+" as _id , "+colName+", "+colEmail+","+colScore+" from "+PlayerTable, new String [] {});
     Cursor cur= db.rawQuery("SELECT * FROM "+viewEmps,null);
     return cur;

 }

 Cursor getAllDepts()
 {
     SQLiteDatabase db=this.getReadableDatabase();
     Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, "+colDeptName+" from "+deptTable,new String [] {});

     return cur;
 }

 void InsertDepts(SQLiteDatabase db)
 {
     ContentValues cv=new ContentValues();
        cv.put(colDeptID, 1);
        cv.put(colDeptName, "Sales");
        db.insert(deptTable, colDeptID, cv);
        cv.put(colDeptID, 2);
        cv.put(colDeptName, "IT");
        db.insert(deptTable, colDeptID, cv);
        cv.put(colDeptID, 3);
        cv.put(colDeptName, "HR");
        db.insert(deptTable, colDeptID, cv);
        db.insert(deptTable, colDeptID, cv);

 }

 public String GetDept(int ID)
 {
     SQLiteDatabase db=this.getReadableDatabase();

     String[] params=new String[]{String.valueOf(ID)};
     Cursor c=db.rawQuery("SELECT "+colDeptName+" FROM"+ deptTable+" WHERE "+colDeptID+"=?",params);
     c.moveToFirst();
     int index= c.getColumnIndex(colDeptName);
     return c.getString(index);
 }

 public Cursor getEmpByDept(String Dept)
 {
     SQLiteDatabase db=this.getReadableDatabase();
     String [] columns=new String[]{"_id",colName,colEmail,colScore,colDeptName};
     Cursor c=db.query(viewEmps, columns, colDeptName+"=?", new String[]{Dept}, null, null, null);
     return c;
 }

 public int GetDeptID(String Dept)
 {
     SQLiteDatabase db=this.getReadableDatabase();
     Cursor c=db.query(deptTable, new String[]{colDeptID+" as _id",colDeptName},colDeptName+"=?", new String[]{Dept}, null, null, null);
     //Cursor c=db.rawQuery("SELECT "+colDeptID+" as _id FROM "+deptTable+" WHERE "+colDeptName+"=?", new String []{Dept});
     c.moveToFirst();
     return c.getInt(c.getColumnIndex("_id"));

     }

 public int UpdateEmp(Player emp)
 {
     SQLiteDatabase db=this.getWritableDatabase();
     ContentValues cv=new ContentValues();
     cv.put(colName, emp.getName());
     cv.put(colScore, emp.getScore());
     cv.put(colDept, emp.getDept());
     return db.update(PlayerTable, cv, colID+"=?", new String []{String.valueOf(emp.getID())});

 }

 public void DeleteEmp(Player emp)
 {
     SQLiteDatabase db=this.getWritableDatabase();
     db.delete(PlayerTable,colID+"=?", new String [] {String.valueOf(emp.getID())});
     db.close();



 }

}

請幫幫我。

  1. 在dbHelper類中創建返回HashMap的getScores

     public HashMap<String,String> getScores() { HashMap<String,String> list = new HashMap<String,String>(); SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor = db.rawQuery("Select email,sum(score) from players group by Email",null); if (cursor.moveToFirst()) { do { list.put(cursor.getString(0),cursor.getString(1)); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); } return list;} 
  2. 使用此方法發送電子郵件,假設

sendMail(String mailTo,String score);


HashMap<String,String> scores = dbHelper.getScores();
for(Map.Entry entry : scores.entrySet())
{
     sendMail(entry.getKey(),entry.getValue());
}

希望這有助於澄清它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM