我在Android中创建了一个应用程序,当您点击发送邮件按钮时,需要向保存在数据库中的所有联系人发送电子邮件,向每个联系人发送电子邮件,分别为
这个想法是在数据库中滑动每个用户的夫妻(电子邮件,得分)并将其传递给发送电子邮件的特定方法
我实施了send方法,以便接收电子邮件地址和相关分数 我测试了发送电子邮件方法并正常工作,
唯一的问题是我无法定义适合的方式 通过点击按钮传递所有电子邮件地址和每个用户的相关分数。
我的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();
}
}
请帮帮我。
答案 0 :(得分:0)
创建在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;}
使用此方法发送电子邮件假设
sendMail(String mailTo,String score);
HashMap<String,String> scores = dbHelper.getScores();
for(Map.Entry entry : scores.entrySet())
{
sendMail(entry.getKey(),entry.getValue());
}
希望这有助于澄清它。