在sqlite中插入行后执行操作

时间:2015-03-15 05:17:40

标签: android sqlite triggers row

我想在android中编写一个代码,当我在我的数据库中插入一行(触发器)时(sqlite) 我做了一个动作 我该怎么办?

PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
             this.connection.addPacketListener(new PacketListener() {
                 public void processPacket(Packet packet) {
                     String message2;
                     Message message = (Message) packet;
                     if (message.getBody() != null) {
                          message2=message.getBody();
                       String fromName = StringUtils.parseBareAddress(message
                      .getFrom());

////////////////////////////////////                         
                      SQLiteDatabase checkDB = null;
                         try{
       ContextWrapper cw =new ContextWrapper(thisact);
       String path =cw.getFilesDir().getAbsolutePath()+ "/electronic.db3";

       checkDB =  SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE) ; 


             String[] partsss = message.getBody().split("/"); 
       //if message from server is setting                  

             ContentValues values = new ContentValues();    

             values.put("message", message.getBody());
             values.put("do",0);
             checkDB.insert("Messages",null ,values);

}
  这是我的代码,它就像聊天代码,我希望当收到一条消息并插入数据库时​​,我会在另一个类中执行操作。 实际上我想要一个用于插入数据库的监听器。

2 个答案:

答案 0 :(得分:0)

假设这是您将学生记录插入SQLite数据库的代码:

public void insertRecord(HashMap<String, String> queryValues) {
       SQLiteDatabase database = this.getWritableDatabase();
       ContentValues values = new ContentValues(); 
        values.put("Name", queryValues.get("name"));   
        database.insert("student", null, values);

   Toast.makeText(getApplicationContext(), 
           "Record inserted", Toast.LENGTH_LONG).show(); //<-You can place it here
        database.close(); 
}

根据您关于应该做什么的其他问题,这一切都取决于您的应用程序的设计。例如,在我的学生应用程序中,在将记录插入数据库后,我可以显示插入了此新记录的学生列表

答案 1 :(得分:0)

只需将Toast消息的代码放在insert方法(您插入新数据的位置)中。

由于数据库处理程序未指向活动/上下文,因此您必须在创建DbHandler对象时传递父类的上下文。 如下所示:

Dbhandler dbHandler = new Dbhandler(getApplicationContext());

并在dbHandler类中创建如下构造函数:

public Dbhandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    c = context;
}

然后toast消息应声明为:

Toast.makeText(c,"data has been inserted! ",Toast.LENGTH_LONG).show();

这里是第一个参数&#34; c&#34;是我们传递给构造函数的上下文。