qt tcp/ip 資料儲存部分
(1)對於資料的儲存操作,首先得確保接收到了資料,接收客戶端需先監聽任何有可能向其傳送資料的傳送客戶端,使接受客戶端處於等待狀態,通過接受客戶端與傳送客戶端的互動確定是否已連線成功,若連線成功,即可進行從機向主機的資料傳送操作;
//listen
if(mtcpserver-
>
listen
(qhostaddress::any,1)
)//判斷監聽是否成功
else
//若不成功
(2)主機接收資料時同樣得注意資料格式問題,確保接受的資料不會出錯。同從機傳送的資料格式保持一致,首先接收rtu編號,接著是接收資料的起始時間以及結束時間,然後是接收100個資料;
in>>rtu_no;
//接收rtu編號
in>>timestartlabel;
//接收起始時間
in>>timeendlabel;
//接收結束時間
in>>temp;
//接收資料
netdata=temp;
//資料為通過網路接收到的資料
redata=temp.
split
(",");
//逗號區分資料
for(
int i=
0;i<
100;i++
) x[i]
=redata.
at(i)
.todouble()
;line-
>
curve
(x,100);
//將資料反映成圖線形式
(3)主機成功接收資料後將資料儲存在資料庫裡。對資料庫進行操作前首先得開啟資料庫,在資料庫裡新建表用以存放資料,表的內容包括rtu編號、開始時間、結束時間以及資料;
在資料庫裡建立乙個表
char sql_cmd[
500]
;sprintf
(sql_cmd,
"create table rtu(num integer primary key identity(1,1),"
"rtuname varchar(50) not null,"
"timelabelstart varchar(50) not null,"
"timelabelend varchar(50) not null,"
"data text not null)");
qsqlquery *sqlquery=
newqsqlquery
(db);if
(!sqlquery-
>
exec
(sql_cmd)
)sprintf
(sql_cmd,
"create clustered index rtu_idx on rtu (timelabelstart)");
if(!sqlquery-
>
exec
(sql_cmd)
)
將資料存放在資料庫的表中
//insert
qstring command =
qstring
("insert into rtu(rtuname,timelabelstart,timelabelend,data)"
" values('%1','%2','%3','%4')").
arg(rtu_no)
.arg
(timestartlabel)
.arg
(timeendlabel)
.arg
(netdata)
;//將資料的rtu編號、開始及結束時間、資料分別插入表中
qsqlquery *sqlquery=
newqsqlquery
(db)
;//判斷資料是否成功的存入資料庫的表中if(
!sqlquery-
>
exec
(command)
)else
資料儲存與運算子部分總結
大學學習計算機組成原理的時候這部分非常枯燥,程式設計就會發現這些基礎知識在實際中其實很有趣。計算機中用補碼來儲存資料,最大的正數為231 12 31 1,也就是 0x7fffffff 0111 0000 0000 0000 0000 0000 0000 0000 最小的數為 2 31 231 也就是...
資料結構 棧部分 棧的順序儲存
include using namespace std const int maxsize 100 templateclass stack stack datetype a,int num stack void push datetype a datetype pop datetype gettop...
Mysql部分儲存引擎介紹
mysql中建立的庫 資料夾 庫中建立的表 檔案 資料庫中的表也應該有不同的型別,表的型別不同,會對應mysql不同的訪問機制,表型別又稱為儲存引擎。儲存引擎說白了就是如何儲存資料 如何為儲存的資料建立索引和如何更新 查詢資料等技術的實現方法。因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲...