c++源**:
#ifndef mooon_sys_******_db_h
#define mooon_sys_******_db_h
#include "sys/db_exception.h"
#include string
>
#include vector>
sys_namespace_begin
typedef std:
:vectorstd:
:string
> dbrow;
// 用來儲存一行所有欄位的值
typedef std:
:vectordbrow> dbtable;
// 用來儲存所有行/*
** 訪問db的介面,是乙個抽象介面,當前只支援mysql
** 使用示例:
dbconnection* db_connection = dbconnection:
:create_connection(
"mysql");
trycatch (cdbexception& db_error)
dbconnection:
:destroy_connection(db_connection);*
/class dbconnection/*
*** 設定需要連線的db的ip和服務埠號
* 注意,只有在open(
)或reopen(
)之前呼叫才生效*/
virtual void set_host(
const std:
:string
& db_ip, uint16_t db_port)
= 0;/*
*** 設定連線的資料庫名
* 注意,只有在open(
)或reopen(
)之前呼叫才生效*/
virtual void set_db_name(
const std:
:string
& db_name)
= 0;/*
*** 設定用來連線db的使用者名稱和密碼
* 注意,只有在open(
)或reopen(
)之前呼叫才生效*/
virtual void set_user(
const std:
:string
& db_user,
const std:
:string
& db_password)
= 0;/*
*** 設定訪問db的字符集
* 注意,只有在open(
)或reopen(
)之前呼叫才生效*/
virtual void set_charset(
const std:
:string
& charset)
= 0;/*
*** 設定為連線斷開後自動重連線,如果不主動設定,預設不自動重連線
* 注意,只有在open(
)或reopen(
)之前呼叫才生效*/
virtual void enable_auto_reconnect(
)= 0;/*
*** 設定用來連線的超時秒數,如果不主動設定,則使用預設的10秒
* 注意,只有在open(
)或reopen(
)之前呼叫才生效*/
virtual void set_timeout_seconds(
int timeout_seconds)
= 0;/*
*** 設定空值,欄位在db表中的值為null時,返回的內容
* 如果不主動設定,則預設空值時被設定為"$null$"。*/
virtual void set_null_value(
const std:
:string
& null_value)
= 0;/*
*** 建立乙個db連線
* 出錯丟擲異常cdbexception*/
virtual void open(
) throw (cdbexception)
= 0;/*
** 關閉乙個db連線
* 使用open(
)建立的連線,在使用完後,要使用close(
)關閉它*/
virtual void close(
) throw (
)= 0;/*
*** 重新建立db連線
* reopen(
)會先呼叫close(
)關閉連線,然後才重新建立連線,
* 因此呼叫reopen(
)之前,可不呼叫close(
),當然即使呼叫了close(
)也不會有問題*/
virtual void reopen(
) throw (cdbexception)
= 0;/*
*** 資料庫查詢類操作,包括:select, show, describe, explain和check table等,
* 如果某字段在db表中為null,則返回結果為"$null$",如果內容剛好為"$null$",則無法區分
* 出錯丟擲cdbexception異常*/
virtual void query(dbtable& db_table,
const char* format,..
.) throw (cdbexception) __attribute__(
(format(printf, 3, 4)))
= 0;/*
** 查詢,期望只返回一行記錄,
* 如果某字段在db表中為null,則返回結果為空字串,因此不能區分欄位無值還是值為空字串
* 如果查詢失敗,丟擲cdbexception異常,異常的錯誤碼為-1,
* 如果查詢實際返回超過一行記錄,丟擲cdbexception異常,異常的錯誤碼為db_error_too_many_rows*/
virtual void query(dbrow& db_row,
const char* format,..
.) throw (cdbexception) __attribute__(
(format(printf, 3, 4)))
= 0;/*
** 查詢,期望只返回單行單列,
* 如果某字段在db表中為null,則返回結果為空字串,因此不能區分欄位無值還是值為空字串
* 如果查詢失敗,丟擲cdbexception異常,異常的錯誤碼為-1,
* 如果查詢實際返回超過一行記錄,丟擲cdbexception異常,異常的錯誤碼為db_error_too_many_rows,
* 如果查詢實際返回只有一行,但超過一列,則丟擲cdbexception異常,異常的錯誤碼為db_error_too_many_cols*/
virtual std:
:string query(
const char* format,..
.) throw (cdbexception) __attribute__(
(format(printf, 2, 3)))
= 0;/*
*** 資料庫insert和update更新操作
* 成功返回受影響的記錄個數,出錯則丟擲cdbexception異常*/
virtual int update(
const char* format,..
.) throw (cdbexception) __attribute__(
(format(printf, 2, 3)))
= 0;/*
** 取得可讀的字串資訊*/
virtual std:
:string str(
) throw (
)= 0;};
sys_namespace_end
#endif /
/ mooon_sys_******_db_h
乙個支援上傳的簡單http server
現在,很多人都知道,python裡有個 httpserver,可以拿來方便地共享檔案。比如,你要傳送某個檔案給區域網裡的同學,你只要cd到所在路徑,然後執行這麼一行 python m httpserver人家就可以訪問 http 你的ip 8000 來訪問你要共享的檔案了。像我早已把這個命令做了al...
EPICS之乙個簡單的裝置支援程式
最近看epics的開發手冊,因為手冊中是分模組介紹的,所以看了一段時間還是寫不出程式來,昨天去讓師兄給我以具體的裝置支援的例子講述了下 因為我們室主要用到的還是裝置支援 下面是構建裝置支援程式的步驟,類似於乙個hello world程式,給同樣在入門道路上的朋友乙個參考。1.像ai bi等這些型別的...
利用php和mysql實現乙個簡單的登入註冊功能
登入介面,login.php doctype html en utf 8 title head 註冊介面,registration.php doctype html en utf 8 title head 提交表單,方便插入資料 註冊之後的要把資料傳入到資料庫,insert.php include ...