VC++操作SQLite简单实例

发布时间:2018-12-19  栏目:sqlite  评论:0 Comments

对此广大程序员来说,SQLite并无陌生。SQLite
是一模一样缓缓首要用来嵌入式的开源数据库,可并在友好的桌面程序中,也可替代Access作为后台数据库。SQLite
匡助多数SQL92正规,例如:索引、限制、触发和查襄助,帮忙NULL、INTEGER、REAL、TEXT 和 BLOB
数据类型,匡助工作。以下是一些SQLite的概括用。

VC++ CArchive及简便的文本操作方法,

CArchive 方法用于存取文件

  我往你推荐的凡行使CArchive,它的下格局简便且力量卓殊精锐。首先仍旧用CFile讲明一个对象,然后据此这目标的指针做参数阐明一个CArchive对象,你尽管可很好地蕴藏各样繁复的数据类型了。它的施用办法展现下例。
  

//对文件进行写操作 
  CString strTemp; 
  CFile mFile; 
  mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); 
  CArchive ar(&mFile,CArchive::store); 
  ar<< strTemp; 

    ar.Close(); 
  mFile.Close(); 
  //对文件进行读操作 
  CFile mFile; 
  if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0) 
  return; 
  CArchive ar(&mFile,CArchive::load); 
  ar>>strTemp; 
   ar.Close(); 
  mFile.Close();

  CArchive的 << 和>>
操作符用于简单数据类型的读写,对于CObject派生类的靶子的存取要运ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可拓展类似的读写,如:
  

//存储CAboutDlg类 
  ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); 
  //读取CAboutDlg类 
  CRuntimeClass* mRunClass=ar.ReadClass(); 
  //使用CAboutDlg类 
  CObject* pObject=mRunClass->CreateObject(); 
  ((CDialog* )pObject)->DoModal();

  尽管VC提供的文档/视结构面临的文档也可是开展这个操作,可是不爱精晓、使用和保管,因而就算多VC入门的开及花大量篇幅叙述文档/视结构,但自己提议您无与伦比不要使它们的文档。关于如何开展文档/视的分开有为数不少开介绍,包括大著名的《Visual
C++ 技术内幕》。
  假诺你如举办的公文操作只是简短的读写整行的字符串,我提出乃接纳CStdioFile,用其来开展此类操作特别有利于,如下例。

CStdioFile mFile; 
  CFileException mExcept; 
  mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); 
  CString string="I am a string."; 
  mFile.WriteString(string); 
  mFile.Close();

 4.临时文件的动
  正规软件时选取临时文件,你通常可以会面看C:\Windows\Temp目录下爆发恢宏之扩展名也tmp的文件,这多少个虽是程序运行是起之临时文件。临时文件的以办法基本与正规文件一律,只是文件称当调用函数GetTempFileName()获得。它的首先单参数是创造此临时文件的路径,第二独参数是树立临时文件名的前缀,第多少个参数用于取确立的临时文件名。得到这临时文件名之后,你不怕可以据此其来建立并操作文件了,如:

char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH]; 
  GetTempPath(_MAX_PATH, szTempPath); 
  GetTempFileName(szTempPath,_T ("my_"),0,szTempfile); 
  CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite); 
  char m_char='a'; 
  m_tempFile.Write(&m_char,2); 
  m_tempFile.Close();

  5.文书的复制、删除等
  MFC中从不提供直接举行这些操作的效劳,因此要运用SDK。SDK中的文件有关函数常用之发CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它们的用法很简短,可参考MSDN。
1,判断文件是否有

_access(filename,mode);

2,对于不同用途又不同的文本操作,其中API函数CreateFile()也是于有由此处理模式,对于大型文件特别适合的任何的楼上的几近说了,不又了.
[1]呈现对话框,取得文件名

CString FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为S***E AS对话框
if (dlg.DoModal() == IDOK)
FilePathName=dlg.GetPathName();

系信息:CFileDialog 用于取文件称之几单成员函数:
假定采取的文本是C:\WINDOWS\TEST.EXE
尽管(1)GetPathName();取文件称全,包括总体路径。取回C:\WINDOWS\TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取扩张名EXE
[2]打开文件
CFile file(“C:\HELLO.TXT”,CFile::modeRead);//只念模式打开
//CFile::modeRead可改为 CFile::modeWrite(只写),
//CFile::modeReadWrite(读写),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open(“C:\HELLO.TXT”,CFile::modeCreate|Cfile::modeWrite);
.
.
.
}
[3]运动文件指针
file.Seek(100,CFile::begin);///从文件头开头通往下活动100字节
file.Seek(-50,CFile::end);///从文件末尾往上走50字节
file.Seek(-30,CFile::current);///从当前职为上运动30字节
file.SeekToBegin();///移到文件头
file.SeekToEnd();///移到文件尾
[4]诵读写文件
读文件:
char buffer[1000];
file.Read(buffer,1000);
写文件:
CString string(“自强不息”);
file.Write(string,8);
[5]关闭文件
file.Close();

http://www.bkjia.com/cjjc/1071509.htmlwww.bkjia.comtruehttp://www.bkjia.com/cjjc/1071509.htmlTechArticleVC++ CArchive同简便的公文操作方法, CArchive
方法用于存取文件
我向你推荐的是运用CArchive,它的利用模式大概且效果十分雄。首先要用…

//建立数据库
C:\sqlite-3_6_11> sqlite3.exe dbname.db

立数据库的上sqlite3.exe前边和数据库文件称

//创建数据表
sqlite> create table users(userid varchar(20) PRIMARY KEY,
...> age int,
...> birthday datetime);
//添加记录
insert into users values('wang',20,'1989-5-4');
insert into users values('li',22,'1987-11-16');
//查询记录
select * from users order by birthday;
//删除记录
delete from users where userid='wang';
//退出
sqlitesqlite> .exit

SQLite数据库的数据结构是存贮在 “sqlite_master”
表中,具体命令可以输入.help查看或参考SQLite帮衬文档。
在VC下拔取SQLite的简短例子:

#include "../sqlite3_lib/sqlite3.h" //请以你的地址为准
#pragma comment(lib, "../sqlite3_lib/sqlite3.lib")//请以你的地址为准
static int _sql_callback(void * notused, int argc, char ** argv, char ** szColName)
{
int i;
for ( i=0; i < argc; i++ )
{
printf( "%s = %s\n", szColName[i], argv[i] == 0 ? "NUL" : argv[i] );
}
return 0;
}
int main(int argc, char * argv[])
{
const char * sSQL1 = "create table users(userid varchar(20) PRIMARY KEY, age int, birthday datetime);";
const char * sSQL2 = "insert into users values('wang',20,'1989-5-4');";
const char * sSQL3 = "select * from users;";
sqlite3 * db = 0;
char * pErrMsg = 0;
int ret = 0;
//连接数据库
ret = sqlite3_open("./test.db", &db);
if ( ret != SQLITE_OK )
{
fprintf(stderr, "不能打开数据库: %s", sqlite3_errmsg(db));
return(1);
}
printf("数据库连接成功!\n");
//执行SQL建立数据库
sqlite3_exec( db, sSQL1, 0, 0, &pErrMsg );
if ( ret != SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", pErrMsg);
sqlite3_free(pErrMsg);
}
//插入记录
sqlite3_exec( db, sSQL2, 0, 0, &pErrMsg);
//查询数据表
sqlite3_exec( db, sSQL3, _sql_callback, 0, &pErrMsg);
//关闭数据库
sqlite3_close(db);
db = 0;
return 0;
}

卿或许感兴趣的著作:

留下评论

网站地图xml地图