資料庫通知
❶ android安卓資料庫的增刪改查和發送通知
java">{
privatestaticfinalStringname="zhouke.db";
privatestaticfinalintversion=1;
publicMyDbOpenHeler(Contextcontext){
super(context,name,null,version);
}
@Override
publicvoidonCreate(sqliteDatabasedb){
db.execSQL("createtableifnotexistsword(_,namevarchar(20),ageint)");
}
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
}
}
------------------------------------------------
{
ListViewlv;
MyDbOpenHelerheler;
SQLiteDatabasedb;
SimpleCursorAdapteradapter;
EditTextet1;
//通知
NotificationManagermanage;
//---
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
lv=(ListView)findViewById(R.id.lv);
//實例化資料庫幫助類
heler=newMyDbOpenHeler(this);
//獲取一個可讀寫的資料庫操作對象
db=heler.getWritableDatabase();
Cursorword=db.query("word",null,null,null,null,null,"_iddesc");
adapter=newSimpleCursorAdapter(this,R.layout.list_ltem,word,
newString[]{"_id","name","age"},newint[]{R.id.tv1,R.id.tv2,R.id.tv3},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
lv.setAdapter(adapter);
//if(word.isClosed()){
//word.close();
//}
registerForContextMenu(lv);
//通知的實例化
manage=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//---
et1=(EditText)findViewById(R.id.et1);
}
//創建選項菜單
@Override
(Menumenu){
menu.add(1,1,0,"增");
returnsuper.onCreateOptionsMenu(menu);
}
//選項菜單監聽事件
@Override
(MenuItemitem){
Viewinflate=View.inflate(this,R.layout.dialog,null);
finalEditTextet1=(EditText)inflate.findViewById(R.id.et1);
finalEditTextet2=(EditText)inflate.findViewById(R.id.et2);
newAlertDialog.Builder(this).setTitle("增加新學生信息").setView(inflate)
.setPositiveButton("確認",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
ContentValuescv=newContentValues();
cv.put("name",et1.getText().toString());
cv.put("age",et2.getText().toString());
longword=db.insert("word",null,cv);
if(word>0){
Toast.makeText(Main2Activity.this,"增加數據成功",Toast.LENGTH_SHORT).show();
Cursorword2=db.query("word",null,null,null,null,null,"_iddesc");
adapter.changeCursor(word2);
//通知---開始
NotificationCompat.Builderbuilder=newNotificationCompat.Builder(Main2Activity.this);
builder.setSmallIcon(R.drawable.aa)
.setContentText("年齡:"+et2.getText().toString())
.setContentTitle(et1.getText().toString())
.setAutoCancel(true);
manage.notify(1,builder.build());
//通知--結束
}
}
}).setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
}).show();
returnsuper.onOptionsItemSelected(item);
}
//創建上下文菜單
@Override
publicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenu.ContextMenuInfomenuInfo){
super.onCreateContextMenu(menu,v,menuInfo);
menu.add(1,2,0,"修改");
menu.add(1,3,0,"刪除");
}
//上下文菜單監聽事件
@Override
(MenuItemitem){
//獲取當前點擊項的索引
AdapterView.AdapterContextMenuInfoinfo=(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
intposition=info.position;
//根據索引獲取這一行數據,把它轉化為Cursor
Cursorcursor=(Cursor)adapter.getItem(position);
//從結果集中取出id
finalint_id=cursor.getInt(0);
switch(item.getItemId()){
case2:
Viewinflate=View.inflate(this,R.layout.dialog,null);
finalEditTextet1=(EditText)inflate.findViewById(R.id.et1);
finalEditTextet2=(EditText)inflate.findViewById(R.id.et2);
//獲取單詞名稱
Stringname=cursor.getString(1);
Stringage=cursor.getString(2);
et1.setText(name);
et2.setText(age);
newAlertDialog.Builder(this).setTitle("修改學生信息").setView(inflate)
.setPositiveButton("確認",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
ContentValuescv=newContentValues();
cv.put("name",et1.getText().toString());
cv.put("age",et2.getText().toString());
intword=db.update("word",cv,"_id=?",newString[]{String.valueOf(_id)});
if(word>0){
Toast.makeText(Main2Activity.this,"修改數據成功",Toast.LENGTH_SHORT).show();
Cursorword2=db.query("word",null,null,null,null,null,"_iddesc");
adapter.changeCursor(word2);
}
}
}).setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
}).show();
break;
case3:
intword=db.delete("word","_id=?",newString[]{String.valueOf(_id)});
if(word>0){
Toast.makeText(Main2Activity.this,"刪除數據成功",Toast.LENGTH_SHORT).show();
Cursorword2=db.query("word",null,null,null,null,null,"_iddesc");
adapter.changeCursor(word2);
}
break;
}
returnsuper.onContextItemSelected(item);
}
publicvoidclick1(Viewview){
//模糊查詢
Stringaa=et1.getText().toString();
Cursorword2=db.query("word",null,"namelike?",newString[]{"%"+aa+"%"},null,null,"_iddesc");
adapter.changeCursor(word2);
//正常查詢
//Cursorword2=db.query("word",null,"name=?",newString[]{aa},null,null,"_iddesc");
}
}
❷ Android 安卓資料庫操作和通知
public class DBHelper extends SQLiteOpenHelper { public static final String TB_NAME = "mydemo_user"; public static final String ID = "_id"; public static final String NAME = "username"; public static final String PASSWORD = "passname"; public static final String ISCHECK = "ischecked"; //當前版本 public static int version = 1; /** * 構造函數 * @param context Context類型,上下文對象。 * @param name String類型,資料庫的名稱 * @param factory CursorFactory類型 * @param version int類型,資料庫版本 */ public DBHelper(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version); this.getWritableDatabase(); } public void Close() { this.getWritableDatabase().close(); } /** * 創建資料庫 */ public void onCreate(SQLiteDatabase db) { db.beginTransaction(); try{ db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_NAME + " (" + ID + " INTEGER PRIMARY KEY," + NAME + " VARCHAR," + PASSWORD + " VARCHAR," + ISCHECK + " VARCHAR)"); db.setTransactionSuccessful(); }catch (Exception e) { } finally { db.endTransaction();//此時不能關閉資料庫,不然創建資料庫完成後,資料庫不能使用 } } /** * 刪除資料庫 */ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TB_NAME); onCreate(db); } /** * 添加新用戶 * @param name * @param number */ public void addUser(String username, String password,String isChecked) { ContentValues values = new ContentValues(); values.put(DBHelper.NAME, username); values.put(DBHelper.PASSWORD, password); values.put(DBHelper.ISCHECK, isChecked); this.getWritableDatabase().insert(DBHelper.TB_NAME, DBHelper.ID, values); } /** * 刪除單個用戶 * @param id */ public void delUser(int id) { this.getWritableDatabase().delete(DBHelper.TB_NAME, DBHelper.ID + " = " + id, null); } /** * 修改單個用戶 * @param id */ public void updateUser(int id,String username, String password,String isChecked) { ContentValues values = new ContentValues(); values.put(DBHelper.NAME, username); values.put(DBHelper.PASSWORD, password); values.put(DBHelper.ISCHECK, isChecked); String where = DBHelper.ID+"=?";//設置條件 String[] whereValue = {Integer.toString(id)};//設置條件中的參數 this.getWritableDatabase().update(DBHelper.TB_NAME, values, where, whereValue); } /** * 刪除多個用戶 */ public void delAllUser() { this.getWritableDatabase().delete(DBHelper.TB_NAME, null, null); } /** * 查詢 * @param username * @return */ public List<Users> queryUser(String username){ List<Users> data = new ArrayList<Users>(); String[] columns = { DBHelper.ID, DBHelper.NAME, DBHelper.PASSWORD,DBHelper.ISCHECK }; String[] parms = { username }; String where = DBHelper.NAME + "=?";// 設置條件 Cursor result=null; if(username!=null){ result = this.getWritableDatabase().query(DBHelper.TB_NAME,columns, where, parms, null, null, null); }else{ result = this.getWritableDatabase().query(DBHelper.TB_NAME,columns, null, null, null, null, null); } result.moveToFirst();//移動到第一行 while (!result.isAfterLast()) {//遍歷數據 Users user = new Users(result.getInt(0), result.getString(1),result.getString(2), result.getString(3)); data.add(user); result.moveToNext(); } result.close(); return data; } }
❸ 如果實現資料庫一改動或添加就通知我的程序
是資料庫中的數據改動,還是資料庫結構改動?
如果是數據改動可以通過觸發器實現
❹ gauss資料庫中數據改變,怎麼通知springboot項目
使用mysql_udf_http(根據mysql表自動觸發發送http請求通知後端。
後端使用websocket通知s前端進行數據更新。具體步驟
1.在資料庫中創建一個副表來標記是否為新的報修信息。
2.spring後端採用TaskScheler輪詢資料庫。
3.如有新的報修信息插入則通過websocket來通知web管理端(一個或多個都可以實時接收)
4.前端採用websocket來實時接收。
❺ mysql資料庫更改通知特性
資料庫知識存了一個URL的字元串,具體的邏輯還是要通過程序來執行的:
比如:對資料庫進行增刪改,程序就打開某個頁面,這個頁面的地址就是:資料庫中的URL字元串
❻ 如何使用SqlDependency監聽SqlServer2005資料庫變更通知
在 Microsoft SQL Server 2005 中以及 ADO.NET 2.0 的 System.Data.SqlClient 命名空間中引入的。查詢通知建立在 Service Broker 基礎結構的基礎上,使應用程序可以在數據更改時收到通知。
如果應用程序提供資料庫中信息的緩存(例如 Web 應用程序),需要在源數據更改時接收通知,此功能特別有用。
❼ 資料庫數據變化如何通知
一個mvc架構的程序,其中一個用戶在頁面上增刪改數據,如何做到這個用戶一操作,就在別的用戶的頁面上立刻實現實時刷新。
我知道使用ajax輪詢數據可以實現這個需求,但不太想用這種方法,感覺有點浪費性能,請問各位大神,有好點的解決方法嗎?
❽ oracle資料庫怎麼主動發出通知
oracle資料庫怎麼主動發出通知
可以用DBMS_PIPE包利用管道和外部程序通信的。
具體用法:
使用dbms_pipe.create_pipe('mypipe'); 建立一個管道。
在表上建立觸發器判斷如果是某一行發生變更,使用dbms_pipe.send_message('MyMessage');
向管道發送消息
java做輪詢使用dbms_pipe.receive_message('mypipe',15); 接收管道消息。如果有則顯示更新。
管道不用了,使用dbms_pipe.remove_pipe('mypipe');將管道刪除。
❾ 資料庫數據發生變化,如何通知客戶端呢
在頁面中添加一個隱藏的iframe不斷刷新或者使用ajax對某個頁面進行輪詢,目的就是不停的請求一個頁面,這個頁面可以只返回一個簡單的標識,用來返回數據是否已經改變(或者還可以加上新數據是什麼,推薦使用JSON)
這樣就可以「即時」獲取到伺服器端的數據變動了,時間可以比較頻繁,比如5秒甚至更頻繁,沒有辦法完全實時,因為伺服器端無法主動發消息給客戶端!