您的位置:首页 > 数据库

otl 操作 sqlite3 简单例子

2012-05-23 11:05 363 查看
我用sqlite3作为ODBC,在VC6.0下试了以下程序没有问题,可以用#define ODBCVER 0x0250).C/C++ code
#include <iostream> 
using namespace std; 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#define OTL_ODBC // Compile OTL 4.0/ODBC 
// #define OTL_ODBC_UNIX // 如果在Unix下使用UnixODBC,则需要这个宏 
#define ODBCVER 0x0250 
#include <otlv4.h> // include the OTL 4.0 header file 
otl_connect db; // connect object 
void insert() 
// insert rows into table 
{  
 // open a stream with no implicit committing 
 otl_stream 
    o(1, // stream buffer size should be set to 1 
      "insert into test_tab values(:f1<int>,:f2<char[31]>)",  
          // SQL statement 
      db  // connect object 
     ); 
 char tmp[32]; 
 for(int i=1;i<=100;++i){ 
  sprintf(tmp,"Name%d",i); 
  o<<i<<tmp; 
 } 
} 
void update(const int af1) 
// insert rows into table 
{ 
 otl_stream  
   o(1, // buffer size 
     "UPDATE test_tab " 
     "   SET f2=:f2<char[31]> " 
     " WHERE f1=:f1<int>",  
        // 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<int> " 
              "  and f1<=:f12<int>*2",  
                 // SELECT statement 
              db // connect object 
             );  
   // create select stream 
  
 int f1; 
 char f2[31]; 
 i<<af1<<af1; // Writing input values into the stream 
 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=scott;PWD=tiger;DSN=firebird"); // connect to ODBC 
 //或者使用下面的连接语句方式。  
//  db.rlogon("scott/tiger@firebird"); // connect to ODBC, alternative format 
                                    // of connect string  
  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))" 
    );  // 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 the database 
 return 0; 
}
转自http://topic.csdn.net/u/20101110/22/d0f05ebb-446b-47ef-8a00-cb8e17155206.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: