日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在C語言中正確關(guān)閉數(shù)據(jù)庫連接? (在c 中無法刪除數(shù)據(jù)庫中數(shù)據(jù)庫連接)

數(shù)據(jù)庫連接是許多C語言程序中不可或缺的組成部分,因為它允許程序與外部存儲連接并交換數(shù)據(jù)。正確關(guān)閉數(shù)據(jù)庫連接也同樣重要,否則,你可能會面臨一系列的問題,從內(nèi)存泄漏到安全問題,甚至可能導致出現(xiàn)重要數(shù)據(jù)的損失。在本篇文章中,我們將探討在C語言中正確關(guān)閉數(shù)據(jù)庫連接的方法。

創(chuàng)新互聯(lián)建站專注于蘇仙網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供蘇仙營銷型網(wǎng)站建設(shè),蘇仙網(wǎng)站制作、蘇仙網(wǎng)頁設(shè)計、蘇仙網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造蘇仙網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供蘇仙網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

之一步:為數(shù)據(jù)庫連接創(chuàng)建變量

在程序中創(chuàng)建一個用于數(shù)據(jù)庫連接的變量。在這個變量中,許多數(shù)據(jù)庫連接函數(shù)將使用它來處理與數(shù)據(jù)庫的交互。舉個例子,考慮MySQL的連接函數(shù)mysql_real_connect(),它需要使用一個名為”MYSQL”的數(shù)據(jù)類型變量。這個變量將在連接完成后被再次用于關(guān)閉連接。

第二步:使用函數(shù)關(guān)閉連接

一旦與數(shù)據(jù)庫建立連接,須對其進行操作并存儲數(shù)據(jù),最終需要關(guān)閉連接,這是確保內(nèi)存負載良好并且程序不會發(fā)生泄漏的關(guān)鍵。在程序的適當位置,應(yīng)該添加適當?shù)暮瘮?shù)來關(guān)閉與數(shù)據(jù)庫的連接。最常見的是mysql_close(),它將關(guān)閉連接并釋放與該連接相關(guān)聯(lián)的所有內(nèi)存。

第三步:考慮其他情況

在某些情況下,存在一些額外考慮因素。一個常見的情況是在程序代碼急劇失敗時(如崩潰),關(guān)閉連接可能無法進行。為了解決這種情況,它可能有必要設(shè)置一個信號捕獲函數(shù),當控制權(quán)過渡到它時,它可以關(guān)閉連接。

第四步:考慮安全問題

安全問題也值得注意。尤其是在要顯示重要信息的場景下,確保連接的安全性是至關(guān)重要的。這通常涉及到對連接進行驗證,并設(shè)置密碼以更大限度地減少不必要的攻擊風險。正確的關(guān)閉連接步驟是證明以及確保無人可以“接管”連接。我們應(yīng)該確認每一次插入和查詢都得到了正確處理和存儲,以防止數(shù)據(jù)丟失或泄漏。

在C語言中正確關(guān)閉數(shù)據(jù)庫連接非常重要,因為它有助于確保程序保持死鎖,并減少不必要的泄漏危險。當您創(chuàng)建變量并使用適當?shù)暮瘮?shù)來關(guān)閉連接時,這可以變得快而簡單。但您還應(yīng)該考慮其他情況,如區(qū)分不同的成員身份以及確保連接的安全性,以防止成為攻擊目標。讓你的程序更加健壯并保證它的完整性和安全性,可以讓你對你的程序更有信心,并且使它更容易被其他開發(fā)者廣泛使用。www.94lrn.com

相關(guān)問題拓展閱讀:

  • 10.在數(shù)據(jù)操縱語言(DML)的基本功能中,不包括的是(;;;;) 10.在數(shù)據(jù)操縱語言(DML)的基本功能中,不包括的
  • 用c語言怎么連接數(shù)據(jù)庫呢?
  • 想從事銀行方面的c語言開發(fā),他上面還要了解db數(shù)據(jù)庫的常用操作

10.在數(shù)據(jù)操縱語言(DML)的基本功能中,不包括的是(;;;;) 10.在數(shù)據(jù)操縱語言(DML)的基本功能中,不包括的

選C。

數(shù)據(jù)操縱語言

DML(Data Manipulation Language),用戶通過它可以實現(xiàn)對數(shù)據(jù)庫的基本操作。例如,對表中數(shù)據(jù)的查詢、插入、刪除和修改。在DML中,

應(yīng)用程序

可蠢模以對數(shù)據(jù)庫作插,刪,改,排,檢等五種操作:

(1)插操作:攔世把數(shù)據(jù)插入到數(shù)據(jù)庫中指定的位置上去,如Append是在數(shù)據(jù)庫文件的末尾添加記錄,而INSERT是在指定記錄前添加記錄。

(2)刪操作:刪除數(shù)帶衡緩據(jù)庫中不必再繼續(xù)保留的一組記錄,如DELETE 對數(shù)據(jù)庫中記錄作刪除標志。PACK是將標有刪除標志的記錄徹底清除掉。ZAP 是去掉數(shù)據(jù)庫文件的所有記錄。

簡介

數(shù)據(jù)操縱語言(Data Manipulation Language, DML)是用于數(shù)據(jù)庫操作,對數(shù)據(jù)庫其中的對象和數(shù)據(jù)運行訪問工作的編程語句,通常是數(shù)據(jù)庫專用

編程語言

之中的一個子集,例如在信息軟件產(chǎn)業(yè)通行標準的SQL語言中,以INSERT、UPDATE、DELETE三種指令為核心,分別代表插入(意指新增或創(chuàng)建)、更新(修改)與刪除(銷毀)。

c

BC

用c語言怎么連接數(shù)據(jù)庫呢?

1、配置ODBC數(shù)據(jù)源。

2、使用SQL函數(shù)進行連接。

對于1、配置數(shù)據(jù)源,配置完以后就可以編程操作數(shù)據(jù)庫了。

對于2、使用SQL函數(shù)進行連接,參考代碼如下:

#include

#include

#include

void main()

{

HENV henv; //環(huán)境句柄

HDBC hdbc; //數(shù)據(jù)源句柄

HSTMT hstmt; //執(zhí)行語句句柄

unsigned char datasource=”數(shù)據(jù)源名稱”; //即源中設(shè)置的源名稱

unsigned char user= “用戶名”; //數(shù)據(jù)庫的帳戶名

unsigned char pwd= “密碼”; //數(shù)據(jù)庫的密碼

unsigned char search=”select xm from stu where xh=0″;

SQLRETURN retcode; //記錄各SQL函數(shù)的返回情況

// 分配環(huán)境句柄

retcode= SQLAllocEnv(&henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL

, &henv);

// 設(shè)置ODBC環(huán)境版本號為3.0

retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

// 分配連接句柄

retcode= SQLAllocConnect(henv,&hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//設(shè)置連接屬性,登錄超時為*rgbValue秒(可以沒有)

// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);

//直接連接數(shù)據(jù)源

// 如果是windows身份驗證,第二、三參數(shù)可以是

,也可以是任何字串

//SQL_NTS 即 “

retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );

//分配語句句柄

retcode= SQLAllocStmt(hdbc,&hstmt); // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

//直接執(zhí)行查詢語句

retcode=SQLExecDirect(hstmt,search,SQL_NTS);

//將數(shù)據(jù)緩沖區(qū)綁定數(shù)據(jù)庫中的相應(yīng)字段(i是查詢結(jié)果集列號,queryData是綁定緩沖區(qū),BUFF_LENGTH是緩沖區(qū)長度)

SQLBindCol(hstmt, i, SQL_C_CHAR, queryData, BUFF_LENGTH, 0);

//遍歷結(jié)果集到相應(yīng)緩沖區(qū) queryData

SQLFetch(hstmt);

/*

*對遍歷結(jié)果的相關(guān)操作,如顯示等

*/

//注意釋放順序,否則會造成未知錯誤!

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

}

25.2.2. C API函數(shù)概述

這里歸納了C API可使用的函數(shù),并在下一節(jié)詳細介紹了它們。請參見25.2.3節(jié),“C API函數(shù)描述”。

函數(shù)

描述

mysql_affected_rows()

返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數(shù)。

mysql_autocommit()

切換 autocommit模式,ON/OFF

mysql_change_user()

更改打開連接上的用戶和數(shù)據(jù)庫。

mysql_charset_name()

返回用于連接的默認字符集的名稱。

mysql_close()

關(guān)閉服務(wù)器連接。

mysql_commit()

提交事務(wù)。

mysql_connect()

連接到MySQL服務(wù)器。該函數(shù)已不再被重視,使用mysql_real_connect()取代。

mysql_create_db()

創(chuàng)建數(shù)據(jù)庫。該函數(shù)已不再被重視,使用SQL語句CREATE DATABASE取而代之。

mysql_data_seek()

在查詢結(jié)果集中查找屬性行編號。

mysql_debug()

用給定的字符串執(zhí)行DBUG_PUSH。

mysql_drop_db()

撤銷數(shù)據(jù)庫。該函數(shù)已不再被重視,使用SQL語句DROP DATABASE取而代之。

mysql_dump_debug_info()

讓服務(wù)器將調(diào)試信息寫入日志。

mysql_eof()

確定是否讀取了結(jié)果集的最后一行。該函數(shù)已不再被重視,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()

返回上次調(diào)用的MySQL函數(shù)的錯誤編號。

mysql_error()

返回上次調(diào)用的MySQL函數(shù)的錯誤消息。

mysql_escape_string()

為了用在SQL語句中,對特殊字符進行轉(zhuǎn)義處理。

mysql_fetch_field()

返回下一個表字段的類型。

mysql_fetch_field_direct()

給定字段編號,返回表字段的類型。

mysql_fetch_fields()

返回所有字段結(jié)構(gòu)的數(shù)組。

mysql_fetch_lengths()

返回當前行中所有列的長度。

mysql_fetch_row()

從結(jié)果集中獲取下一行

mysql_field_seek()

將列光標置于指定的列。

mysql_field_count()

返回上次執(zhí)行語句的結(jié)果列的數(shù)目。

mysql_field_tell()

返回上次mysql_fetch_field()所使用字段光標的位置。

mysql_free_result()

釋放結(jié)果集使用的內(nèi)存。

mysql_get_client_info()

以字符串形式返回客戶端版本信息。

mysql_get_client_version()

以整數(shù)形式返回客戶端版本信息。

mysql_get_host_info()

返回描述連接的字符串。

mysql_get_server_version()

以整數(shù)形式返回服務(wù)器的版本號。

mysql_get_proto_info()

返回連接所使用的協(xié)議版本。

mysql_get_server_info()

返回服務(wù)器的版本號。

mysql_info()

返回關(guān)于最近所執(zhí)行查詢的信息。

mysql_init()

獲取或初始化MYSQL結(jié)構(gòu)。

mysql_insert_id()

返回上一個查詢?yōu)锳UTO_INCREMENT列生成的ID。

mysql_kill()

殺死給定的線程。

mysql_library_end()

最終確定MySQL C API庫。

mysql_library_init()

初始化MySQL C API庫。

mysql_list_dbs()

返回與簡單正則表達式匹配的數(shù)據(jù)庫名稱。

mysql_list_fields()

返回與簡單正則表達式匹配的字段名稱。

mysql_list_processes()

返回當前服務(wù)器線程的列表。

mysql_list_tables()

返回與簡單正則表達式匹配的表名。

mysql_more_results()

檢查是否還存在其他結(jié)果。

mysql_next_result()

在多語句執(zhí)行過程中返回/初始化下一個結(jié)果。

mysql_num_fields()

返回結(jié)果集中的列數(shù)。

mysql_num_rows()

返回結(jié)果集中的行數(shù)。

mysql_options()

為mysql_connect()設(shè)置連接選項。

mysql_ping()

檢查與服務(wù)器的連接是否工作,如有必要重新連接。

mysql_query()

執(zhí)行指定為“以Null終結(jié)的字符串”的SQL查詢。

mysql_real_connect()

連接到MySQL服務(wù)器。

mysql_real_escape_string()

考慮到連接的當前字符集,為了在SQL語句中使用,對字符串中的特殊字符進行轉(zhuǎn)義處理。

mysql_real_query()

執(zhí)行指定為計數(shù)字符串的SQL查詢。

mysql_refresh()

刷新或復位表和高速緩沖。

mysql_reload()

通知服務(wù)器再次加載授權(quán)表。

mysql_rollback()

回滾事務(wù)。

mysql_row_seek()

使用從mysql_row_tell()返回的值,查找結(jié)果集中的行偏移。

mysql_row_tell()

返回行光標位置。

mysql_select_db()

選擇數(shù)據(jù)庫。

mysql_server_end()

最終確定嵌入式服務(wù)器庫。

mysql_server_init()

初始化嵌入式服務(wù)器庫。

mysql_set_server_option()

為連接設(shè)置選項(如多語句)。

mysql_sqlstate()

返回關(guān)于上一個錯誤的SQLSTATE錯誤代碼。

mysql_shutdown()

關(guān)閉數(shù)據(jù)庫服務(wù)器。

mysql_stat()

以字符串形式返回服務(wù)器狀態(tài)。

mysql_store_result()

檢索完整的結(jié)果集至客戶端。

mysql_thread_id()

返回當前線程ID。

mysql_thread_safe()

如果客戶端已編譯為線程安全的,返回1。

mysql_use_result()

初始化逐行的結(jié)果集檢索。

mysql_warning_count()

返回上一個SQL語句的告警數(shù)。 詳見:

C語言連接mysql數(shù)據(jù)庫,需要相應(yīng)的頭文件和lib文件,如果你安裝Mysql數(shù)據(jù)庫,會在安裝目錄下找到這些庫文件,如果沒有安裝,也可以在網(wǎng)上找到

我這里也有一份網(wǎng)上找到的:/202305/other/C_link_mySql51.rar

C連接MySql5.1所需文件.rar

附帶一個不錯的例子:

#include

#include

#include

#include

#include /*注意要包含這個頭文件*/

#pragma comment(lib,”libmysql”)

/*定義了一些數(shù)據(jù)庫連接需要的宏*/

#define HOST “l(fā)ocalhost”

#define USERNAME “root”

#define PASSWORD “123456”

#define DATABASE “test”

/*這個函數(shù)用來執(zhí)行傳入的sql語句*/

void exe_sql(char* sql) {

MYSQL my_connection; /*這是一個數(shù)據(jù)庫連接*/

int res; /*執(zhí)行sql語句后的返回標志*/

/*初始化mysql連接my_connection*/

mysql_init(&my_connection);

/*這里就是用了mysql.h里的一個函數(shù),用我們之前定義的那些宏建立mysql連接,并

返回一個值,返回不為空證明連接是成功的*/

if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,

DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*連接成功*/

printf(“數(shù)據(jù)庫執(zhí)行exe_sql連接成功!n”);

/*這句話是設(shè)置查詢編碼為utf8,這樣支持中文*/

mysql_query(&my_connection, “set names utf8”);

/*下面這句話就是用mysql_query函數(shù)來執(zhí)行我們剛剛傳入的sql語句,

這會返回一個int值,如果為0,證明語句執(zhí)行成功*/

res = mysql_query(&my_connection, sql);

if (res) {/*現(xiàn)在就代表執(zhí)行失敗了*/

printf(“Error: mysql_query !\n”);

/*不要忘了關(guān)閉連接*/

mysql_close(&my_connection);

} else {/*現(xiàn)在就代表執(zhí)行成功了*/

/*mysql_affected_rows會返回執(zhí)行sql后影響的行數(shù)*/

printf(“%d 行受到影響!\n”,

mysql_affected_rows(&my_connection));

/*不要忘了關(guān)閉連接*/

mysql_close(&my_connection);

}

} else {

/*數(shù)據(jù)庫連接失敗*/

printf(“數(shù)據(jù)庫執(zhí)行exe_sql連接失??!\n”);

}

}

/*這個函數(shù)用來執(zhí)行傳入的sql語句,并打印出查詢結(jié)果*/

void query_sql(char* sql) {

MYSQL my_connection; /*這是一個數(shù)據(jù)庫連接*/

int res; /*執(zhí)行sql語句后的返回標志*/

MYSQL_RES *res_ptr; /*指向查詢結(jié)果的指針*/

MYSQL_FIELD *field; /*字段結(jié)構(gòu)指針*/

MYSQL_ROW result_row; /*按行返回的查詢信息*/

int row, column; /*查詢返回的行數(shù)和列數(shù)*/

int i, j; /*只是控制循環(huán)的兩個變量*/

/*初始化mysql連接my_connection*/

mysql_init(&my_connection);

/*這里就是用了mysql.h里的一個函數(shù),用我們之前定義的那些宏建立mysql連接,并

返回一個值,返回不為空證明連接是成功的*/

想從事銀行方面的c語言開發(fā),他上面還要了解db數(shù)據(jù)庫的常用操作

1、 打開命令行窗口

#db2cmd

2、 打開控制中心

# db2cmd db2cc

3、 打開命令編輯器

db2cmd db2ce

=====操作數(shù)據(jù)庫命令=====

4、 啟動數(shù)據(jù)庫實例

#db2start

5、 停止數(shù)據(jù)庫實例

#db2stop

如果你不能停止數(shù)據(jù)庫由于激活的連接,在運行db2stop前執(zhí)行db2 force application all就可以了 /db2stop force

6、 創(chuàng)建數(shù)據(jù)庫

#db2 create db

7、 連接到數(shù)據(jù)庫

#db2 connect to user using

8、 斷開數(shù)據(jù)庫連接

#db2 connect reset

9、 列出所有數(shù)據(jù)庫

#db2 list db directory

10、 列出所有激活的數(shù)據(jù)庫

#db2 list active databases

11、 列出所有數(shù)據(jù)庫配置

#db2 get db cfg

12、 刪除數(shù)據(jù)庫

#db2 drop database

(執(zhí)行此操作要小心)

如果不能刪除,斷開所有數(shù)據(jù)庫連接或者重啟db2

=========操作數(shù)據(jù)表命令==========

13、 列出所有用戶表

#db2 list tables

14、列出所有系統(tǒng)表

#db2 list tables for system

15、列出所有表

#db2 list tables for all

16、 列出系統(tǒng)表

#db2 list tables for system

17、列出用戶表

#db2 list tables for user

18、 列出特定用戶表

#db2 list tables for schema

19、 創(chuàng)建一個與數(shù)據(jù)庫中某個表(t2)結(jié)構(gòu)相同的新表(t1)

#db2 create table t1 like t2

20、 將一個表t1的數(shù)據(jù)導入到另一個表t2

#db2 “insert into t1 select * from t2”

21、 查詢表

#db2 “select * from table name where …”

22、 顯示表結(jié)構(gòu)

#db2 describe table tablename

23、 修改列

#db2 alter table alter column set data type varchar(24)

======腳本文件操作命令=======

24、 執(zhí)行腳本文件

#db2 -tvf scripts.sql

25、幫助命令

* 查看命令幫助

#db2 ? db2start

* 查看錯誤碼信息

#db2 ?

* memo: 詳細命令請使用”db2 ? “進行查看?!?/p>

=========================

26、備份數(shù)據(jù)庫

#db2 backup db

備注:執(zhí)行以上命令之前需要斷開數(shù)據(jù)庫連接

27、在線備份數(shù)據(jù)庫

#db2 -v “BACKUP DATABASE ONLINE TO WITH 2 BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING”

28、恢復數(shù)據(jù)庫

#db2 restore db

29、在線恢復數(shù)據(jù)庫

#db2 “RESTORE DB TO LOGTARGET WITHOUT PROMPTING”

#db2 “ROLLFORWARD DB TO END OF LOGS AND STOP” …

30、導出數(shù)據(jù)文件

#db2move export

31、導入數(shù)據(jù)文件

#db2move import

32、獲取db2數(shù)據(jù)庫管理配置環(huán)境信息

#db2 get dbm cfg

33、.獲取db2某個數(shù)據(jù)庫數(shù)據(jù)庫管理配置環(huán)境信息

#db2 get db cfg for

或者:連接至某個數(shù)據(jù)庫以后執(zhí)行db2 get db cfg

34、更改db2日志空間的大小

備注:以下命令為了防止db2數(shù)據(jù)庫過份使用硬盤空間而設(shè),僅用于開發(fā)者自己機器上的db2,如果是服務(wù)器,則參數(shù)需要修改。

#db2 UPDATE DB CFG FOR USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;

如果頁大小是4KB,則以上命令創(chuàng)建3個100M的日志文件,占用300MB硬盤空間。25600*4KB=102400KB。

35、創(chuàng)建臨時表空間

#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE ‘D:\DB2_TAB\STMASPACE.F1’ 10000)

EXTENTSIZE 256

36、獲取數(shù)據(jù)庫管理器的快照數(shù)據(jù)

#db2 –v get snapshot for dbm

37、顯示進行程號

#db2 list applications show detail

===================================================

一、加載數(shù)據(jù):

1、 以默認分隔符加載,默認為“,”號

db2 “import from btpoper.txt of del insert into btpoper”

2、 以指定分隔符“|”加載

db2 “import from btpoper.txt of del modified by coldel| insert into btpoper”

二、卸載數(shù)據(jù):

1、 卸載一個表中全部數(shù)據(jù)

db2 “export to btpoper.txt of del select * from btpoper”

db2 “export to btpoper.txt of del modified by coldel| select * from btpoper”

2、 帶條件卸載一個表中數(shù)據(jù)

db2 “export to btpoper.txt of del select * from btpoper where brhid=””

db2 “export to cmmcode.txt of del select * from cmmcode where codtp=’01′”

db2 “export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp=’01′”

三、查詢數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù):

db2 “select * from btpoper”

db2 “select * from btpoper where brhid=” and oprid=’0001′”

db2 “select oprid,oprnm,brhid,passwd from btpoper”

四、刪除表中數(shù)據(jù):

db2 “delete from btpoper”

db2 “delete from btpoper where brhid=” or brhid=””

五、修改表中數(shù)據(jù):

db2 “update svmmst set prtlines=0 where brhid=” and jobtp=’02′”

db2 “update svmmst set prtlines=0 where jobtp=’02’ or jobtp=’03′”

六、聯(lián)接數(shù)據(jù)庫

db2 connect to btpdbs

七、清除數(shù)據(jù)庫聯(lián)接

db2 connect reset 斷開數(shù)據(jù)庫連接

db2 terminate 斷開數(shù)據(jù)庫連接

db2 force applications all 斷開所有數(shù)據(jù)庫連接

八、備份數(shù)據(jù)庫

1、 db2 backup db btpdbs

2、 db2move btpdbs export

db2look -d btpdbs -e -x -o crttbl.sql

九、恢復數(shù)據(jù)庫

1、 db2 restore db btpdbs without rolling forward

2、 db2 -tvf crtdb.sql

crtdb.sql文件內(nèi)容:create db btpdbs on /db2catalog

db2 -stvf crttbl.sql

db2move btpdbs import

十、DB2幫助命令:

db2 ?

db2 ? restroe

db2 ? sqlcode (例:db2 ? sql0803) 注:code必須為4位數(shù),不夠4位,前面補0

十一、bind命令:將應(yīng)用程序與數(shù)據(jù)庫作一捆綁,每次恢復數(shù)據(jù)庫后,建議都要做一次bind

(1) db2 bind br8200.bnd

(2) /btp/bin/bndall /btp/bnd

/btp/bin/bndall /btp/tran/bnd

十二、查看數(shù)據(jù)庫參數(shù):

db2 get dbm cfg

db2 get db cfg for btpdbs

十三、修改數(shù)據(jù)庫參數(shù):

db2 update db cfg for btpdbs using LOGBUFSZ 20

db2 update db cfg for btpdbs using LOGFILSIZ 5120

改完后,應(yīng)執(zhí)行以下命令使其生效:

db2 stop

db2 start

補充:

db2 set schema btp 修改當前模式為”btp”

db2 list tablespaces show detail 查看當前數(shù)據(jù)庫表空間分配狀況

db2 list tablespace containers for 2 show detail 查看tablespace id=2使用容器所在目錄

db2 list application

db2 list db directory 列出所有數(shù)據(jù)庫

db2 list active databases 列出所有活動的數(shù)據(jù)庫

db2 list tables for all 列出當前數(shù)據(jù)庫下所有的表

db2 list tables for schema btp 列出當前數(shù)據(jù)庫中schema為btp的表

db2 list tablespaces show detail 顯示數(shù)據(jù)庫空間使用情況

db2 list packages for all

db2 “import from tab76.ixf of ixf commitcount 5000 insert into achact”

db2 “create table achact_t like achact”

db2 “rename table achact_t to achact”

db2 “insert into achact_t select * from achact where txndt>=(select lstpgdt from

acmact where actno=achact.actno)”

db2 get snapshot for dynaimic sql on jining

刪除一個實例:

# cd /usr/lpp/db2_07_01/instance

# ./db2idrop InstName

列出所有DB2實例:

# cd /usr/lpp/db2_07_01/bin

# ./db2ilist

為數(shù)據(jù)庫建立編目

$ db2 catalog db btpdbs on /db2catalog

取消已編目的數(shù)據(jù)庫btpdbs

$ db2 uncatalog db btpdbs

查看版本

# db2level

顯示當前數(shù)據(jù)庫管理實例

$ db2 get instance

設(shè)置實例系統(tǒng)啟動時是否自動啟動。

$ db2iauto -on 自動啟動

$ db2iauto -off 不自動啟動

數(shù)據(jù)庫優(yōu)化命令:

reorg、runstats

當數(shù)據(jù)庫經(jīng)過一段時間使用,數(shù)據(jù)空間會變得越來越龐大。一些delete掉

的數(shù)據(jù)仍存放在數(shù)據(jù)庫中,占用數(shù)據(jù)空間,影響系統(tǒng)性能。因此需要定期

運行reorg、runstats命令,清除已delete的數(shù)據(jù),優(yōu)化數(shù)據(jù)結(jié)構(gòu)。

db2 reorg table 表名

db2 runstats on table 表名 with distribution and indexes all

因為要優(yōu)化的表比較多,所以在/btp/bin目錄下提供了一個sh程序runsall,

可在當天業(yè)務(wù)結(jié)束后,運行runsall,對數(shù)據(jù)庫進行優(yōu)化

在DB2的開發(fā)過程中,貫穿整個開發(fā)過程還有很重要的一部分工作就是數(shù)據(jù)庫的維護;對于維護一個龐大信息系統(tǒng)來說是非常必要的;留一份簡易的維護手冊,以備不時之需;以下收集到的部分維護命令,以饗我們的維護工程師和項目經(jīng)理。

=================================================================

38、更改db2日志空間的大小

備注:以下命令為了防止db2數(shù)據(jù)庫過份使用硬盤空間而設(shè),僅用于開發(fā)者自己機器上的db2,如果是服務(wù)器,則參數(shù)需要修改。

# db2 UPDATE DB CFG FOR USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;

如果頁大小是4KB,則以上命令創(chuàng)建3個100M的日志文件,占用300MB硬盤空間。25600*4KB=102400KB。

39、創(chuàng)建臨時表空間

#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE ‘D:\DB2_TAB\STMASPACE.F1’ 10000) EXTENTSIZE 256

40、創(chuàng)建表空間

rem 創(chuàng)建緩沖池空間 8K

#db2 connect to gather

#db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZEPAGESIZE 8K

rem 創(chuàng)建表空間:STMA

rem 必須確認路徑正確

rem D:\DB2Container\Stma

#db2 drop tablespace stma

#db2 CREATE REGULAR TABLESPACE STMA PAGESIZE 8 K MANAGED BY SYSTEM USING (‘D:\DB2Container\Stma’ ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL STMABMP DROPPED TABLE RECOVERY OFF

#db2 connect reset

41、將暫掛的數(shù)據(jù)恢復到前滾狀態(tài)

#db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE

42、備份表空間

#BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO “D:\temp” WITH 2 BUFFERS BUFFER 1024 PARALLELI 1 WITHOUT PROMPTING

43、創(chuàng)建db2工具數(shù)據(jù)庫

#db2 create tools catalog systools create new database toolsdb

44、如何進行增量/差量備份

增量:上一次完整備份至本次備份之間增加的數(shù)據(jù)部分;

差量(delta):上次備份以來(可能是完整備份、增量備份或者差量備份)至本次備份之間增加的數(shù)據(jù)部分;

45、更新所有表的統(tǒng)計信息

#db2 -v connect to DB_NAME

#db2 -v “select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes”

#db2 -v reorgchkupdate statistics on table all

#db2 -v “select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes”

#db2 -v terminate

46、對一張表運行統(tǒng)計信息

#db2 -v runstatson table TAB_NAMEand indexes all

47、查看是否對數(shù)據(jù)庫執(zhí)行了RUNSTATS

#db2 -v “select tbname, nleaf, nlevels,stats_timefrom sysibm.sysindexes”

48、更改緩沖池的大小

緩沖池中,當syscat.bufferpools的npages是-1時,由數(shù)據(jù)庫的配置參數(shù)bufferpage控制緩沖池的大小。

將npages的值更改為-1的命令:

#db2 -v connect to DB_NAME

#db2 -v select * from syscat.bufferpools

#db2 -v alter bufferpoolIBMDEFAULTBP size -1

#db2 -v connect reset

#db2 -v terminate

更改數(shù)據(jù)庫配置參數(shù)BufferPages的命令如下:

#db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value

#db2 -v terminate

49、看數(shù)據(jù)庫監(jiān)視內(nèi)容列表

#db2 -v get monitor switches

50、打開某個數(shù)據(jù)庫監(jiān)視內(nèi)容

#db2 -v update monitor switches using bufferpoolon

51、獲取數(shù)據(jù)庫快照

#db2 -v get snapshot for all databases > snap.out

#db2 -v get snapshot for dbm>> snap.out

#db2 -v get snapshot for all bufferpools>> snap.out

#db2 -v terminate

52、重置數(shù)據(jù)庫快照

#db2 -v reset monitor all

53、計算緩沖池命中率

理想情況下緩沖池命中率在95%以上,計算公式如下:

(1 -((buffer pool data physical reads + buffer pool index physical reads)

/(buffer pool data logical reads + pool index logical reads))) *100%

=========數(shù)據(jù)庫實例========================

54、創(chuàng)建db2實例

#db2icrt

55、刪除db2實例

#db2idrop

56、設(shè)置當前db2實例

#set db2intance=db2

57、顯示db2擁有的實例

#db2ilist

58、恢復離線增量備份數(shù)據(jù)庫的命令

#DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT5

59、創(chuàng)建樣本數(shù)據(jù)庫

在unix平臺,使用:

#sqllib/bin/db2sampl

在windows,os/2平臺,使用:db2sampl e,e是可選參數(shù),指定將創(chuàng)建數(shù)據(jù)庫的驅(qū)動器

60、設(shè)置聯(lián)合數(shù)據(jù)庫為可用(默認聯(lián)合數(shù)據(jù)庫不可用)

#db2 update dbm cfg using federated yes

61、列出數(shù)據(jù)庫中所有的表

#db2 list tables

62、數(shù)據(jù)遷移方法1

export腳本示例

#db2 connect to testdb user test password test

#db2 “export to aa1.ixf of ixf select * from table1”

#db2 “export to aa2.ixf of ixf select * from table2”

#db2 connect reset

import腳本示例

#db2 connect to testdb user test password test

#db2 “l(fā)oad from aa1.ixf of ixf replace into table1 COPY NO without prompting ”

#db2 “l(fā)oad from aa2.ixf of ixf replace into table2 COPY NO without prompting ”

在c 中無法刪除數(shù)據(jù)庫中數(shù)據(jù)庫連接的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于在c 中無法刪除數(shù)據(jù)庫中數(shù)據(jù)庫連接,如何在C語言中正確關(guān)閉數(shù)據(jù)庫連接?,10.在數(shù)據(jù)操縱語言(DML)的基本功能中,不包括的是(;;;;) 10.在數(shù)據(jù)操縱語言(DML)的基本功能中,不包括的,用c語言怎么連接數(shù)據(jù)庫呢?,想從事銀行方面的c語言開發(fā),他上面還要了解db數(shù)據(jù)庫的常用操作的信息別忘了在本站進行查找喔。

成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽、重慶、貴陽機房服務(wù)器托管租用。


當前標題:如何在C語言中正確關(guān)閉數(shù)據(jù)庫連接? (在c 中無法刪除數(shù)據(jù)庫中數(shù)據(jù)庫連接)
文章網(wǎng)址:http://www.dlmjj.cn/article/dhpisdj.html