当前位置: 首页 > news >正文

动效网站建设网站界面设计案例

动效网站建设,网站界面设计案例,常州建设银行网站首页,整站优化系统遇到有LONG数据类型的表#xff0c;要插入一条数据量很大的行#xff0c;一次插入的缓冲区会不够大#xff0c;这时需要一部分一部分的插入LONG数据#xff0c;这就用到了在执行语句时动态提供数据的机制。在ODBC中要动态提供数据需要几个步骤。 1. 在绑定输入参数时…遇到有LONG数据类型的表要插入一条数据量很大的行一次插入的缓冲区会不够大这时需要一部分一部分的插入LONG数据这就用到了在执行语句时动态提供数据的机制。在ODBC中要动态提供数据需要几个步骤。 1. 在绑定输入参数时要在SQLBindParameter()函数中指定数据长度时使用SQL_LEN_DATA_AT_EXEC()宏得到数据长度告诉应用程序数据在执行语句时才提供使用的数据类型要用SQL_LONGVARCHAR或SQL_LONGBINARY。同时数据指针要提供一个数值标记这个字段为了区分多个动态插入的字段这个数值在后面调用SQLParamData()函数时会返回这样应用程序就知道现在是哪个字段需要提供数据。 2. 执行SQLExecute()或SQLExecDirect()函数因为语句中有动态字段所以函数会返回SQL_NEED_DATA的返回值。 3. 调用SQLParamData()函数返回标识字段的数值这时就知道是为哪个字段插入数据。函数返回SQL_NEED_DATA这时需要提供数据。 4. 循环调用SQLPutData()函数为字段提供动态数据直到插入的数据完毕。 5. 再次调用SQLParamData()函数看看是否还有下一个动态插入的字段需要操作函数返回SQL_NEED_DATA说明需要为新字段提供数据重复步骤4的操作。如果返回SQL_SUCCESS说明没有要提供数据的字段了把上一个动态插入数据的系列操作结束。 举一个例子在test_long1表中插入LONG数据字段叫summary插入10000个字符。SQLBindParameter()函数的StrLen_or_IndPtr参数设置为SQL_LEN_DATA_AT_EXEC(10000)ParameterType设置为SQL_LONGVARCHARParameterValuePtr设置为参数的编号比如编号为3那么函数设置如下。 len_ind3 SQL_LEN_DATA_AT_EXEC(10000); SQLBindParameter(stmth, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 10000, 0, (void *)3, 0, len_ind3); 下面我们看一个实际的例子在test_long1表中插入一条数据绑定三个参数后面两个参数都使用动态提供数据主要看看SQLParamData()函数和SQLPutData()函数的用法以及如何动态提供数据。代码如下。 #include stdio.h #include stdlib.h #include string.h #include sql.h #include sqlext.h #include sqltypes.hSQLHANDLE envh; /* env handle */ SQLHANDLE dbch; /* connect handle */ SQLHANDLE stmth; /* statement handle */int main(int argc, char *argv[]) {int conn 0;SQLRETURN rc;SQLLEN len_ind1;SQLLEN len_ind2;SQLLEN len_ind3;SQLLEN total_amt;SQLLEN once_amt;SQLINTEGER id;SQLPOINTER param_id;char dsn_str[32];char usrname[32];char passwd[32];char sqltxt[512];char data[4096];if (argc 3) {fprintf(stderr, usage: %s dsn username password\n, argv[0]);return (-1);}strncpy(dsn_str, argv[1], 32);dsn_str[31] \0;strncpy(usrname, argv[2], 32);usrname[31] \0;strncpy(passwd, argv[3], 32);passwd[31] \0;rc SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, envh);if (rc ! SQL_SUCCESS) {fprintf(stderr, Allocate environment handle error.\n);return (-1);}rc SQLSetEnvAttr(envh, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);if (rc ! SQL_SUCCESS) {fprintf(stderr, Set ODBC version error.\n);goto free_exit;}rc SQLAllocHandle(SQL_HANDLE_DBC, envh, dbch);if (rc ! SQL_SUCCESS) {fprintf(stderr, Allocate DB connection handle error.\n);goto free_exit;}rc SQLSetConnectAttr(dbch, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER)10, 0);if (rc ! SQL_SUCCESS) {fprintf(stderr, Set connection timeout value error.\n);goto free_exit;}rc SQLConnect(dbch, (SQLCHAR *)dsn_str, SQL_NTS, (SQLCHAR *)usrname, SQL_NTS,(SQLCHAR *)passwd, SQL_NTS);if (rc ! SQL_SUCCESS) {fprintf(stderr, Connect to DB error.\n);goto free_exit;}conn 1;fprintf(stdout, connect DB ok ......\n);rc SQLAllocHandle(SQL_HANDLE_STMT, dbch, stmth);if (rc ! SQL_SUCCESS) {fprintf(stderr, Allocate statment handle error.\n);goto free_exit;}/* 插入一条数据输入三个参数note和summary动态提供数据 */sprintf(sqltxt, insert into test_long1 (id, name, addr, note, summary) values (?, AAAAAAAA, BBBBBBBBBB, ?, ?));rc SQLPrepare(stmth, (SQLCHAR *)sqltxt, SQL_NTS);if (rc ! SQL_SUCCESS) {fprintf(stderr, Prepare statment error.\n);goto free_exit;}/* ID字段的插入值为10 */id 10;/* ID正常插入在绑定时提供数值* NOTE在执行时动态提供数据长度为40数据为40个C字符一次提供完毕* SUMMARY在执行是动态提供数据长度为10000数据为10000个D字符分多次提供* NOTE和SUMMARY字段使用SQL_LEN_DATA_AT_EXEC()宏计算长度*/len_ind1 0;len_ind2 SQL_LEN_DATA_AT_EXEC(40);len_ind3 SQL_LEN_DATA_AT_EXEC(10000);/* 绑定变量id */rc SQLBindParameter(stmth, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER,0, 0, id, 0, len_ind1);if (rc ! SQL_SUCCESS) {fprintf(stderr, Bind column 1 error.\n);goto free_exit;}/* 参数类型为SQL_LONGVARCHAR数据指针指向参数编号2 */rc SQLBindParameter(stmth, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR,2000, 0, (void *)2, 0, len_ind2);if (rc ! SQL_SUCCESS) {fprintf(stderr, Bind column 2 error.\n);goto free_exit;}/* 参数类型为SQL_LONGVARCHAR数据指针指向参数编号3 */rc SQLBindParameter(stmth, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR,10000, 0, (void *)3, 0, len_ind3);if (rc ! SQL_SUCCESS) {fprintf(stderr, Bind column 3 error.\n);goto free_exit;}/* 执行插入语句这时函数返回SQL_NEED_DATA */rc SQLExecute(stmth);if ((rc ! SQL_SUCCESS) (rc ! SQL_NEED_DATA)) {fprintf(stderr, Execute statment error.\n);goto free_exit;}/* 循环检查动态提供数据的字段 */while (1) {/* 调用SQLParamData()函数parma_id返回绑定时指定的参数编号 */rc SQLParamData(stmth, param_id);if ((rc SQL_SUCCESS) || (rc SQL_SUCCESS_WITH_INFO))/* 返回SQL_SUCCESS说明所有动态提供数据的字段都操作完成了退出循环 */break;if (rc ! SQL_NEED_DATA) {/* 这里如果返回值不为SQL_NEED_DATA说明函数调用出错了 */fprintf(stderr, Call SQLParamData() error.\n);goto free_exit;}if (param_id (SQLPOINTER)2) {/* param_id等于2说明要为第二个参数提供数据提供40个C字符 */memset(data, C, 40);data[40] \0;len_ind2 40;/* 调用SQLPutData()函数为参数2提供数据 */rc SQLPutData(stmth, (SQLPOINTER)data, len_ind2);if ((rc ! SQL_SUCCESS) (rc ! SQL_SUCCESS_WITH_INFO)) {fprintf(stderr, Call SQLPutData() error.\n);goto free_exit;}} else if (param_id (SQLPOINTER)3) {/* param_id等于3说明要为第三个参数提供数据提供10000个D字符* 每次提供4000字符分三次提供完毕*/once_amt 4000;total_amt 10000;memset(data, D, 4000);data[4000] \0;while (total_amt once_amt) {/* 每次提供4000字符 */rc SQLPutData(stmth, (SQLPOINTER)data, once_amt);if ((rc ! SQL_SUCCESS) (rc ! SQL_SUCCESS_WITH_INFO)) {fprintf(stderr, Call SQLPutData() error.\n);goto free_exit;}total_amt - once_amt;}if (total_amt 0) {/* 提供最后的2000字符 */rc SQLPutData(stmth, (SQLPOINTER)data, total_amt);if ((rc ! SQL_SUCCESS) (rc ! SQL_SUCCESS_WITH_INFO)) {fprintf(stderr, Call SQLPutData() error.\n);goto free_exit;}}} else {fprintf(stderr, Invalid parameter number.\n);goto free_exit;}}/* 提交改变的数据 */rc SQLEndTran(SQL_HANDLE_DBC, dbch, SQL_COMMIT);if (rc ! SQL_SUCCESS) {fprintf(stderr, End Transaction error.\n);goto free_exit;}fprintf(stdout, Insert data successed ......\n);SQLFreeHandle(SQL_HANDLE_STMT, stmth);SQLDisconnect(dbch);SQLFreeHandle(SQL_HANDLE_DBC, dbch);SQLFreeHandle(SQL_HANDLE_ENV, envh);return (0);free_exit:if (stmth ! NULL) {SQLFreeHandle(SQL_HANDLE_STMT, stmth);}if (conn) {SQLDisconnect(dbch);}if (dbch ! NULL) {SQLFreeHandle(SQL_HANDLE_DBC, dbch);}if (envh ! NULL) {SQLFreeHandle(SQL_HANDLE_ENV, envh);}return (-1); } 访问www.tomcoding.com网站学习Oracle内部数据结构详细文档说明下载Oracle的exp/impDULlogminerASM工具的源代码学习高技术含量的内容。
http://www.hkea.cn/news/14532894/

相关文章:

  • 网站建设设计公司哪家好上海网站的优化公司哪家好
  • 建站不用域名直接用ip可以吗wordpress讨论群
  • 深圳个性化网站建设公司电话wordpress修改配置
  • 网站域名推广企业开发网站建设
  • 微信手机网站流程网站搭建完手机访问
  • 聚美优品网站建设分析数字作品商城wordpress
  • 斐讯k2做网站影楼网站模板下载
  • 百货网站建设北京搬家公司费用
  • c2c网站价格百度指数的使用
  • 网站都有什么费用上海嘉定
  • 成都 广告公司网站建设wordpress插件小人
  • 如何为网站做面包屑导航优秀网站设计欣赏国内
  • 视频网站seo怎么做如何做公司培训网站
  • 哪个网站可以做分销sem是什么职业
  • 一个好的网站应该具有什么条件用jsp做一网站的流程图
  • 网站微信链接怎么做的邯郸住房和城乡建设局网站
  • 如皋建设网站wordpress添加广告位手机自适应
  • 做推广什么网站便宜请人做网站收费
  • 鞋帽箱包网站建设做气体检测仪的网站
  • 淄博网站建设公司推荐网站做服装那个平台好一点
  • 青岛网站开发设计网站优化的分析
  • 如何在百度上做公司做网站网站服务器 要求
  • 高端定制手机网站家居设计网站推荐
  • 广州企业建站公司模板网站新增备案两次都未通过网站也打不开
  • 佛山市建设官方网站网站建设合同 果动.l
  • wordpress门户主题下载什么是搜索引擎优化用一句话概括
  • 小说网站建设多少钱网站友链外链
  • 东莞网站推广渠道有哪些备案成功后怎么做网站
  • 网站构建建设移动网站建设指南
  • 贵阳网站建设网站制作在线玩传奇