2022年C操作数据库 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年C操作数据库 .pdf》由会员分享,可在线阅读,更多相关《2022年C操作数据库 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如果一个 ODBC API函数执行成功, 则返回 SQL_SUCCESS或 SQL_SUCCESS_WITH_INFO,SQL_SUCCESS指示可通过诊断记录获取有关操作的详细信息,SQL_SUCCESS_WITH_INFO指示应用程序执行结果带有警告信息,可通过诊断记录获取详细信息。如果函数调用失败,返回码为 SQL_ERROR。1. SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv); 1. 初始化环境变量在 CLI 中有三个句柄,分别是环境句柄、连接句柄、语句句柄。在初始化过程中首先要对前两个句柄逐一进行获取,获取成功后可连接数据库
2、并获取第三个句柄。SQLRETURN ret; SQLHENV henv; / 环境句柄SQLHDBC hdbc; / 连接句柄SQLHSTMT hstmt; / 语句句柄SQLCHAR DBNAME=SAMPLE; /数据库名SQLCHAR USERNAME=db2admin; / 用户名SQLCHAR PSW=ibmdb2; / 口令ret=SQLAllocEnv(&henv) /分配环境句柄ret=SQLAllocConnect(henv,&hdbc) /分配连接句柄ret=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_OF
3、F) /设置连接属性ret=SQLConnect(hdbc,DBNAME,SQL_NTS,USERNAME,SQL_NTS,PSW,SQL_NTS) /连接数据库ret=SQLAllocStmt(hdbc,&hstmt) /分配语句句柄上面的每个函数都有返回值,如果函数成功,ret 值为 SQL_SUCCESS,否则将返回错误代码。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 2. 语句的执行语句的执行分四个阶段:首先准备数据
4、接收的缓冲区,然后执行准备好的SQL 语句,第三步是将语句句柄和数据缓冲区进行绑定,最后获取数据。程序如下:char RowBuffer100200; /数据缓冲区,其大小可自定义typedef struct sqldat SQLCHAR ColumnName50; SQLSMALLINT BufferLength; SQLSMALLINT NameLength; SQLSMALLINT DataType; SQLUINTEGER ColumnSize; SQLSMALLINT FAR DecimalDigitsPtr; SQLSMALLINT FAR NullablePtr; sqldata
5、; / 为第三步的绑定准备一个数据结构sqldata RowDesc100; /用于绑定的变量,维数与缓冲区对应memset(RowBuffer,64,100 200); /给缓冲区赋初始值,可以用于最后判断是否真正从数据库中获取了数据,这一步也可以省略char tempsql100; sprintf(tempsql,select NAME from db2admin.STAFF where ID= %s ,Condition); / Condition为变量值,可由用户输入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
6、心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - sql=(SQLCHAR ) tempsql; ret=SQLPrepare(hstmt,sql,SQL_NTS) / 执行准备ret=SQLExecute(hstmt) / 执行执行成功后可进行绑定过程SQLINTEGER nullindicator; SQLINTEGER displaysizeMAX_COLUMN; SQLSMALLINT i; SQLSMALLINT num_columns; SQLNumResultCols(hstmt,&num_columns); /准备绑定用的相关变量f
7、or(i=1;i =num_columns;i+) RowDesci-1.BufferLength=200; SQLDescribeCol(hstmt,i, RowDesci-1.ColumnName,RowDesci-1.BufferLength,&(RowDesci-1.NameLength),&(RowDesci-1.DataType),&(RowDesci-1.ColumnSize),RowDesci-1.DecimalDigitsPtr,RowDesci-1.NullablePtr); SQLColAttribute(hstmt,(SQLSMALLINT)(i),SQL_DESC_D
8、ISPLAY_SIZE,NULL,0,NULL,&displaysizei-1); RowDesci-1.ColumnSize=max(displaysizei-1,strlen(char )RowDesci-1.ColumnName)+1; SQLBindCol( hstmt, (SQLSMALLINT)i, SQL_C_CHAR,(SQLPOINTER)(RowBufferi-1),RowDesci-1.ColumnSize, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3
9、页,共 9 页 - - - - - - - - - &nullindicator); /循环绑定/绑定完成后,可以将数据读至缓冲区while(SQLFetch(hstmt)!=SQL_NO_DATA) / SQLFetch函数将已经获取的数据存入缓冲区/此处的操作方式与ESQL 中的游标类似,支持对结果集的操作/每执行一次SQLFetch函数会把当前获取的一行数据读到缓冲区中/RowBufferi中将存放该行的第i 列数据值/本例中只有一行数据 char m_name10;memcpy(m_name,RowBuffer0,10); /从缓冲区中将结果读到用户变量中3. 释放环境变量在数据获取完
10、成后,可以将环境变量释放掉,但要注意释放的先后顺序。SQLFreeStmt(hstmt,SQL_DROP); / 释放语句句柄SQLDisconnect(hdbc);/与数据库断开SQLFreeConnect(hdbc);/释放连接句柄SQLFreeEnv(henv);/释放环境句柄经过上面的步骤,就完成了对数据库的读取过程。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 我的源码测试成功了 : #include #includ
11、e #include #include #include #include #include int main() SQLRETURN ret; SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLCHAR * dsn,* username,* password,* sql; SQLSMALLINT dsn_len,username_len,password_len; SQLCHAR id4,name50; SQLINTEGER len; /* SQLSMALLINT * len; SQLCHAR * output; */ ret=SQLAllocEn
12、v(&henv); if(ret=SQL_SUCCESS) printf( 环境分配成功!n 开始分配连接。n); ret=SQLAllocConnect(henv,&hdbc); if(ret=SQL_SUCCESS) printf( 连接分配成功!n); ret=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_OFF); if(ret=SQL_SUCCESS) printf( 设置连接属性成功!n 开始连接数据库。n); dsn=sql2000; username=admin; password=123456; dsn_len=
13、strlen(dsn); username_len=strlen(username); password_len=strlen(password); ret=SQLConnect(hdbc,dsn,dsn_len,username,username_len,password,password_len); /* dsn=DRIVER=SQL Server;UID=admin;PWD=123456;DATABASE=tmsj008;SERVER=(local); dsn=DRIVER=MySQL ODBC 5.0.22 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C操作数据库 2022 操作 数据库
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内