首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(1) | 引用(0) | 阅读2175次
CVSTRACMAIL DEV HISTORY开发记录

2005-01-31

     首先学习VC+SQLITE编程。已经上网找了很多资料,却总是想找更多更好的资料,其实最重要的是要自己开始作!

 工欲善其事,必先利其器。但是如果都在利器,那么事就无法善

资源:SQLITE源代码(VC编译静态库)从其官方网站。以前编译好的

          SQLITE3 在VC/MFC 中使用的一点体会http://www.xoeo.com  但是没有代码,也无来源说明

         搜索半天,在一个日本BLOG找到真正的来源 CODEPROJECT

        然后从CODEPROJECT下载了代码,他用的好像是STL,以及DLL,准备改为MFC、LIB

SQLITE3 在VC/MFC 中使用的一点体会
SQLITE简介:


This is an extension for the SQLite Embeddable SQL Database Engine. SQLite is a C library that implements an embeddable SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process.


SQLite is not a client library used to connect to a big database server. SQLite is the server. The SQLite library reads and writes directly to and from the database files on disk.


在 vc工程目录下 设置 Link  L/对象类模块 为 sqlite3.lib


                     c/c++   分类  precompiled  header  选择不使用预补偿页眉


首先将SQLITE3的七个文件放在和vc工程文件同一目录下


在工程中加入 CppSQLite3DB.cpp和CppSQLite3DB.h文件


# include "CppSQLite3.h"


extern CppSQLite3DB db;/////数据库对象


    remove("c:\\test.db");


    db.open("c:\\test.db");///打开数据库文件


   


建立表格:


db.execDML("create table Customer(CustomerName char(50), RoomNumber int, CustomerId int, ComeTime int,Money int);");


  db.execDML("create table Room(RoomNumber int, RoomPrice int, RoomState char[20]);");


  db.execDML("create table Manager(ManagerName char[20],PassWord int);");


插入数据:


 string szCmd;


 string szName = m_data1;


szCmd = "insert into Customer values(" ;


 szCmd +="'";


 szCmd +=szName;


szCmd +="'";


szCmd +=",";


sprintf(a,"%d",m_data2);


szCmd += a;


szCmd += ",";


sprintf(b,"%d",m_data3);


szCmd +=b;


szCmd +=",";


sprintf(c,"%d",m_data4);


szCmd += c;


szCmd += ",";


sprintf(d,"%d",m_data5);


szCmd += d;


szCmd += ");";


db.execDML(szCmd.c_str());/////////////插入SQL语句


MessageBox("提交成功,请继续!");


更新数据:


   char k[20];//提交后更新房间信息


                   string  szCkd;


                   szCkd="update Room  set  RoomState = 'notnull' where  RoomNumber=";


                      sprintf(k,"%d",m_data2);


                      szCkd +=k;


                      szCkd +=";";


              db.execDML(szCkd.c_str());  //////////插入SQL语句


查询数据:


CppSQLite3Query q = db.execQuery("select * from Customer;");


         while(!q.eof())&leftsign;


          UpdateData(true);


                if(m_data1==q.getIntField(1))


                &leftsign;


               


s.m_data1=q.getStringField(0);


                s.m_data2=q.getIntField(1);


                s.m_data3=q.getIntField(2);


                s.m_data4=q.getFloatField(3);


                s.m_data5=q.getIntField(4);


          s.DoModal();


                UpdateData(false);


                break;&rightsign;


                q.nextRow();


                if(q.eof()==true) 


                       MessageBox("本旅馆无该房间!");


         &rightsign;


删除数据:


char a[20];


  sprintf(a,"%d",m_data2);


  string szCmd;


  szCmd="delete from Room where RoomNumber =" ;


  szCmd+=a;


  szCmd+=";";


  int b=0;


  b=db.execDML(szCmd.c_str());


  if(b==0) 


  MessageBox("操作错误,没有该房间信息");


  else
  MessageBox("删除房间信息成功");

       C++でSQLite3
テーマ:データベース
http://www.codeproject.com/database/CppSQLite.asp

プロジェクトにsqlite3.h CppSQLite3.h CppSQLite3.cppを追加し
sqlite3.libをリンクしてコンパイル。実行パスにsqlite3.dllを配置する。
----------------------------------------------------------

#include "stdafx.h"
#include <string>
using namespace std;

#include <boost/format.hpp>
using namespace boost;

#include "CppSQLite3.h"

int _tmain(int argc, _TCHAR* argv[])
&leftsign;
 string dbPath = "E:sample01.dat";
 CppSQLite3DB db;

 try
 &leftsign;
  remove(dbPath.c_str()); // dbの削除
  db.open(dbPath.c_str()); // dbの新規オープン

  db.execDML("begin transaction;"); // トランザクション開始
  db.execDML("create table addressTable(id integer primary key, name char(20), category integer);");

  db.execDML("create table categoryTable(id integer, catName char(20));");
  db.execDML("insert into categoryTable values (0, 'others');");
  db.execDML("insert into categoryTable values (1, 'private1');");
  db.execDML("insert into categoryTable values (2, 'private2');");
  db.execDML("insert into categoryTable values (3, 'bussiness');");
  db.execDML("insert into categoryTable values (4, 'family');");

  string name = "";
  string query;

  name = "xxx";
  query = str( format("insert into addressTable values (null, '%s', %d);") % name % 4);
  db.execDML(query.c_str());

  name = "yyy";
  query = str( format("insert into addressTable values (null, '%s', %d);") % name % 2);
  db.execDML(query.c_str());

  db.execDML("commit transaction;"); // トランザクションコミット

  // すべてを取得
  CppSQLite3Query q = db.execQuery("select * from addressTable;");


  for (int fld = 0; fld < q.numFields(); fld++)
  &leftsign;
   cout << q.fieldName(fld) << "(" << q.fieldDeclType(fld) << ")&line;";
  &rightsign;
  cout << endl;

  while (!q.eof())
  &leftsign;
   for (int fld = 0; fld < q.numFields(); fld++)
   &leftsign;
    cout << q.fieldValue(fld) << endl;
   &rightsign;
   cout << endl;
   q.nextRow();
  &rightsign;

  // テーブルの結合
  q = db.execQuery("select addressTable.name, categoryTable.catName from addressTable, categoryTable where addressTable.category = categoryTable.id;");

  while (!q.eof())
  &leftsign;
   for (int fld = 0; fld < q.numFields(); fld++)
   &leftsign;
    cout << q.fieldValue(fld) << endl;
   &rightsign;
   cout << endl;
   q.nextRow();
  &rightsign;

 &rightsign;
 catch (CppSQLite3Exception& e)
 &leftsign;
  cerr << e.errorCode() << ":" << e.errorMessage() << endl;
 &rightsign;

 return 0;
&rightsign;


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/CVSTRACMAIL.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1107233929

2005年2月1日12:58星期二  [Dev开发] 追踪此文的RSS
sangwf在 2005年5月26日09:43星期四 评论:
找不到bc下用的.libEmotion
Yippee 回复于 2005年5月26日09:47
不明白你的意思。这是VC编译的。LIB/DLL和VC /BC有什么关系?

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 9||用户: 2562 [列表]
今日:2426||到访:2671925
Rss:838510||评论:1584

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8