加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在Microsoft Visual C 2010 Express项目中创建本地数据库?

发布时间:2020-12-14 04:21:39 所属栏目:Windows 来源:网络整理
导读:如何在Microsoft Visual C 2010 Express项目中创建本地数据库? 对不起,我在网上找不到这个简单的答案.我找到的唯一答案是Visual Studio:使用项目添加新项目本地数据库.但是此选项在Visual c 2010 Express版中不可用. 我尝试安装“Microsoft SQL Server Com
如何在Microsoft Visual C 2010 Express项目中创建本地数据库?

对不起,我在网上找不到这个简单的答案.我找到的唯一答案是Visual Studio:使用项目>添加新项目>本地数据库.但是此选项在Visual c 2010 Express版中不可用.

我尝试安装“Microsoft SQL Server Compact 4”和“Microsoft SQL Server Denali”,并从“Windows Update”更新“Microsoft Visual C 2010 Express”.

好的,我终于得到了解决方案.遗憾的是,我必须回答我自己的问题……

我使用了SQLite库(http://www.sqlite.org/).这有点复杂,因为sqlite文档有点模糊,但我做了如下:

  • Download sqlitedll*.zip – extract .def and .dll files somewhere.
  • Generate the lib file with a command like “c:program
    filesmicros~1vc98binlib” /def:sqlite3.def”. Do that from a command
    prompt,in the directory with the .def file in,with the appropriate
    path to your lib.exe. You may need to run vcvars32.bat first,which is
    also in the bin directory. Copy the resulting .lib to an appropriate
    place,and set that as a library directory in VC++. (Or do it on a
    per-project basis.)
  • Download the sqlite-source*.zip file,and extract the sqlite3.h file
    from within to a suitable directory. Set that as an include directory
    in VC++. (Again,you could do it on a per-project basis.)
  • In your project,#include as required,add sqlite3.lib
    to your project,copy the sqlite3.dll to your executable’s directory
    or working directory,and you should be ready to go.

然后,很容易使用禁止查询,但是如果你想使用SQL“SELECT”,你可以使用这个代码:

std::string queries;
// A prepered statement for fetching tables
sqlite3_stmt *stmt;
// Create a handle for database connection,create a pointer to sqlite3
sqlite3 *handle;
// try to create the database. If it doesnt exist,it would be created
// pass a pointer to the pointer to sqlite3,in short sqlite3**
int retval = sqlite3_open("local.db",&handle);
// If connection failed,handle returns NULL
if(retval){
    System::Windows::Forms::MessageBox::Show("Database connection failed");
    return;
}       
// Create the SQL query for creating a table
char create_table[100] = "CREATE TABLE IF NOT EXISTS users (uname TEXT PRIMARY KEY,pass TEXT NOT NULL,activated INTEGER)";
// Execute the query for creating the table
retval = sqlite3_exec(handle,create_table,0);
// Insert first row and second row
queries = "INSERT INTO users VALUES('manish','manish',1)";
retval = sqlite3_exec(handle,queries.c_str(),0);
queries = "INSERT INTO users VALUES('mehul','pulsar',0)";
retval = sqlite3_exec(handle,0);
// select those rows from the table
queries = "SELECT * from users";
retval = sqlite3_prepare_v2(handle,-1,&stmt,0);
if(retval){
    System::Windows::Forms::MessageBox::Show("Selecting data from DB Failed");
    return ;
}
// Read the number of rows fetched
int cols = sqlite3_column_count(stmt);
while(1){
    // fetch a row’s status
    retval = sqlite3_step(stmt);
    if(retval == SQLITE_ROW){
    // SQLITE_ROW means fetched a row
    // sqlite3_column_text returns a const void*,typecast it to const char*
        for(int col=0 ; col<cols;col++){
            const char *val = (const char*)sqlite3_column_text(stmt,col);
            System::Windows::Forms::MessageBox::Show(stdstr2systemstr(sqlite3_column_name(stmt,col))+" = "+stdstr2systemstr(val));
        }
    }
    else
    if(retval == SQLITE_DONE){
            // All rows finished
            System::Windows::Forms::MessageBox::Show("All rows fetched");
            break;
        }
        else{
            // Some error encountered
            System::Windows::Forms::MessageBox::Show("Some error encountered");
            return ;
        }
    }
    // Close the handle to free memory
    sqlite3_close(handle);

我希望这些信息有用!

资料来源:

> http://www.gamedev.net/topic/332251-sqlite3-and-visual-c/page_p_3157685#entry3157685
> http://milky.manishsinha.net/2009/03/30/sqlite-with-c/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读