注:以下代码来自OTL示例,略有改动
#include using namespace std; #include #include #include #define OTL_ODBC // Compile OTL 4.0/ODBC // The following #define is required with MyODBC 3.51.11 and higher #define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE #define OTL_ODBC_UNIX // uncomment this line if UnixODBC is used #include // include the OTL 4.0 header file otl_connect db; // connect object void insert() // insert rows into table { otl_stream o(1, // buffer size should be == 1 always on INSERT "insert into test_tab values " " (:f1,:f2), " " (:f12,:f22), " " (:f13,:f23), " " (:f14,:f24), " " (:f15,:f25) ", // INSERT statement. Multiple sets of values can be used // to work around the lack of the bulk interface db // connect object ); // If the number of rows to be inserted is not known in advance, // another stream with the same INSERT can be opened otl_stream o2(1, // buffer size should be == 1 always on INSERT "insert into test_tab values " " (:f1,:f2)", db // connect object ); char tmp[32]; int i; for (i = 1; i <= 100; ++i) { sprintf(tmp, "Name%d", i); o << i << tmp; } for (i = 101; i <= 103; ++i) { sprintf(tmp, "Name%d", i); o2 << i << tmp; } } void update(const int af1) // insert rows into table { otl_stream o(1, // buffer size should be == 1 always on UPDATE "UPDATE test_tab " " SET f2=:f2 " " WHERE f1=:f1", // UPDATE statement db // connect object ); o << "Name changed" << af1; o << otl_null() << af1 + 1; // set f2 to NULL } void select(const int af1) { otl_stream i(50, // buffer size may be > 1 "select * from test_tab " "where f1>=:f11 " " and f1<=:f12*2", // SELECT statement db // connect object ); // create select stream int f1; char f2[31]; i << af1 << af1; // :f11 = af1, :f12 = af1 while (!i.eof()) { // while not end-of-data i >> f1; cout << "f1=" << f1 << ", f2="; i >> f2; if (i.is_null()) cout << "NULL"; else cout << f2; cout << endl; } } int main() { otl_connect::otl_initialize(); // initialize ODBC environment try { // db.rlogon("UID=xuanyuan;PWD=xuanyuan;DSN=examples"); // connect to ODBC db.rlogon("xuanyuan/xuanyuan@examples"); // connect to ODBC, alternative format of connect string otl_cursor::direct_exec(db, "use examples"); // 此行在原示例代码中没有,必须使用use xxx切换数据库 otl_cursor::direct_exec(db, "drop table test_tab", otl_exception::disabled // disable OTL exceptions ); // drop table otl_cursor::direct_exec(db, "create table test_tab(f1 int, f2 varchar(30)) type=innoDB"); // create table insert(); // insert records into the table update(10); // update records in the table select(8); // select records from the table } catch (otl_exception& p) { // intercept OTL exceptions cerr << p.msg << endl; // print out error message cerr << p.stm_text << endl; // print out SQL that caused the error cerr << p.sqlstate << endl; // print out SQLSTATE message cerr << p.var_info << endl; // print out the variable that caused the error } db.logoff(); // disconnect from ODBC return 0; }
g++ -o"otl_test2" otl_test2.cpp -lmyodbc3
$ ./otl_test2
结果如下:
f1=8, f2=Name8 f1=9, f2=Name9 f1=10, f2=Name changed f1=11, f2=NULL f1=12, f2=Name12 f1=13, f2=Name13 f1=14, f2=Name14 f1=15, f2=Name15 f1=16, f2=Name16
请访问OTL的主页:http://otl.sourceforge.net/
Linux下C/C++、ACE、Boost、高性能服务器端应用
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28949713/viewspace-774929/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28949713/viewspace-774929/
文章浏览阅读6.4k次,点赞3次,收藏6次。需求:有时候拖动/点击UI时,需要判断鼠标所在位置上,对重叠的UI进行分别的处理实现:利用PointerEventData() 一;判断当前鼠标上重叠的UI有多少个 private int IsPointerOverUIObject() { PointerEventData eventDataCurrentPosition = new Pointer..._ugui 实现鼠标一直在某个image中的不同位置 pointereventdata
文章浏览阅读2.6w次,点赞19次,收藏4次。chrome全屏模式书签栏/工具栏消失如何处理最上方的‘视图’--‘在全屏模式下始终显示工具栏'切换全屏模式快捷键:control+command+f 快捷键全屏模式下显示工具栏快捷键:shift+command+f 快捷键..._chrome 全屏没有tab
文章浏览阅读1.1w次,点赞7次,收藏31次。编译scratch3.0桌面程序1.首先操作系统是win10;2.安装好node.js,yarn,git;3.在github上下载scratch-gui和scratch-desktop的源代码,不需要用git clone的方式(下载全部源代码,太繁琐),直接下载zip压缩包即可;4.解压下载的文件5.首先cmd 进入scratch-gui-develop,依次运行如下命令npm ..._scratch编译
文章浏览阅读1.2k次。作者:林刚 文章来源:http://blogs.sun.com/lirincy 最近在网上看到一篇关于华容道的J2ME的开发实例,花了一天时间,在NetBeans上实现了,并且进行了改进和增强,现将经验共享出来,部分代码属原作者所有,在附录中。 1. 必须先安装 NetBeans IDE 4.0 和 NetBeans Mobility Pack 4.0,然后才能开始进行 J2ME MIDP 开发。_netbeans开发实例
文章浏览阅读1.3k次。一首先上 百度AI平台 申请账号,和开通语音识别模块。这个比较简单,不细说。你可以得到三个东西:AppIDAPI KeySecret Key并新建一个my_password.txt,按上述格式粘贴进去。(防止把密码明文直接写到代码中)二打开cmd命令行窗口,输入 pip install baidu-aip ,安装相关依赖。三新建ai.py,粘贴以下代码:将待转换音频复制到..._python greatxiang
文章浏览阅读1.4k次。 看到那些对VC不知从何下手而苦苦挣扎的朋友,希望我的学习之路能给他们一下借鉴。学VC并不是传说的那么难,可不下些功夫是学不成的。学编程急不得,没有编程的基础知识上来就学VC肯定碰一头灰,说VC难就难在这点上了。如果硬上,意志坚强的话还能挺过来,但最后还得回头来补习基础知识。意志不坚强的话,很有可能就此放弃,并留下一个VC难得不得了的印象。其实,只要踏踏实实一步一步来,学VC很简单。_vc爱好者
文章浏览阅读8.1k次,点赞10次,收藏120次。一、前言。频域,更利于分析信号的成分,如:基波、谐波。在示波器、频谱仪中,经常用到频谱图。DFT和FFT都是时域变换到频域的工具,DFT适用于任意点数,而FFT一般是偶数点(基2、基4、分裂基等)而且速度更快。二、方案。由于FFT是统一处理若干个点,也就是若干个数据,所以先把数据缓存起来,计算好再输出。这里使用了两块RAM做输入、输出缓存器。蝶型运算主要由复数乘法器和复数加/减法器构成,其中复数乘法器可以由3个实数乘法器实现。旋转因子可以先扩大再存入ROM中,计算完成后._fpga fft
文章浏览阅读1.9k次。KUDU引擎的HIVE数据库KUDU引擎的HIVE数据库到底什么是kudu引擎的hive数据库呢?kudu引擎的好处怎么使用IMPALA操作kudu引擎的数据库呢首先了解原理实操impala语句kudu中建立表TEST1kudu的TEST1映射到impala(hive)中KUDU引擎的HIVE数据库到底什么是kudu引擎的hive数据库呢?首先KUDU只是引擎,不是一个库,其实本质的数据还是hive数据库。原本的HIVE引擎是mr、tez、spark,那么现在改了,改成了kudu引擎。kudu引擎_通过impala 访问 kudu
文章浏览阅读3.5k次,点赞6次,收藏90次。本期我们通过分析某招聘网站发布的python相关工作招聘信息数据,进行以下几个方面的分析:全国哪些城市岗位数量比较多、哪些公司薪资待遇比较好、哪些岗位需求量比较大、普遍工资分布情况等等_仿照例子,分析positions.csv中的数据,画出最低薪资分布的柱状图,要求:在柱体上方
文章浏览阅读3.1w次。淡入淡出效果 #targetDiv { width: 150px; height:200px; text-align:center; padding-top:80px; background: #8a8a8a; color: #fff; positio_css3 visible 淡入淡出
文章浏览阅读3.3k次。Object.is() 严格比较两个值是否相等ES5 比较两个值是否相等,只有两个运算符:相等运算符()和严格相等运算符(=)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。Object.is就是部署这个算法的新方法。它用来比较两个值是否严格相等.不同:一是+0不等于-0,二是NaN等于自身。Obejct.assign() 对象合并Object..._es6往对象添加字段
文章浏览阅读1.2k次。回到opencv编译的位置,也就是build文件下执行下面指令! sudo make uninstall cd .. sudo rm -r build rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/open_ubuntu怎么opencv卸没卸载干净