2010-10-18 49 views

Trả lời

8
+1

Cảm ơn. Tôi đã không nhận thấy rằng hướng dẫn QuickStart trong khi duyệt các trang web sqlite bản thân mình. Nhìn chính xác những gì tôi cần: Hướng dẫn đơn giản cách bắt đầu với SQLite và không phải bất kỳ thuật ngữ nâng cao nào được nêu ra :) – zaplec

+5

Chào mừng bạn đến với Stack Overflow! Thay vào đó, hãy bao gồm cả nguồn thực tế vào phần thân câu trả lời thay vì liên kết. – Jonny

+1

Xin vui lòng xem xét thêm một số chi tiết hơn cho câu trả lời này. – NathanOliver

8

Làm thế nào về 'An Introduction to Sqlite C/C++ Interface', và có một toàn bộ C++ ví dụ here on CodeProject.

Đây là bit của mẫu đầy đủ hơn,

#include "CppSQLite.h" 
#include <ctime> 
#include <iostream> 
using namespace std; 
const char* gszFile = "C:\\test.db"; 

int main(int argc, char** argv) 
{ 
    try 
    { 
     int i, fld; 
     time_t tmStart, tmEnd; 
     CppSQLiteDB db; 

     cout << "SQLite Version: " << db.SQLiteVersion() << endl; 

     db.open(gszFile); 
     cout << db.execScalar("select count(*) from emp;") 
       << " rows in emp table in "; 
     db.Close(); 
    } 
    catch (CppSQLiteException& e) 
    { 
     cerr << e.errorCode() << ":" << e.errorMessage() << endl; 
    } 
} 
6

Một ví dụ sử dụng SQLite đọc:

#include <stdio.h> 
#include <sqlite3.h> 
#include <string.h> 


int main(int argc, char** argv) 
{ 
    const char*   username = "satyam"; 
    char     q[999]; 
    sqlite3*    db; 
    sqlite3_stmt*  stmt; 
    int     row = 0; 
    int     bytes; 
    const unsigned char* text; 

    if (2 == argc) { 
     username = argv[1]; 
    } 

    q[sizeof q - 1] = '\0'; 
    snprintf(
     q, 
     sizeof q - 1, 
     "SELECT ipaddr FROM items WHERE username = '%s'", 
     username 
    ); 

    if (sqlite3_open ("test.db", &db) != SQLITE_OK) { 
     fprintf(stderr, "Error opening database.\n"); 
     return 2; 
    } 

    printf("Query: %s\n", q); 

    sqlite3_prepare(db, q, sizeof q, &stmt, NULL); 

    bool done = false; 
    while (!done) { 
     printf("In select while\n"); 
     switch (sqlite3_step (stmt)) { 
     case SQLITE_ROW: 
      bytes = sqlite3_column_bytes(stmt, 0); 
      text = sqlite3_column_text(stmt, 1); 
      printf ("count %d: %s (%d bytes)\n", row, text, bytes); 
      row++; 
      break; 

     case SQLITE_DONE: 
      done = true; 
      break; 

     default: 
      fprintf(stderr, "Failed.\n"); 
      return 1; 
     } 
    } 

    sqlite3_finalize(stmt); 

    return 0; 
} 
+0

Đây là một mớ hỗn độn hoàn chỉnh của định dạng không tốt, thứ tự không hợp lệ, các biến không sử dụng, thời gian vô nghĩa, các dòng mới bị thiếu và hơn thế nữa. Tôi bắt đầu sửa chữa nó nhưng sau đó nhận ra đó không phải là trách nhiệm của tôi. Tôi sẽ khuyên người đọc newbie không nên lấy cảm hứng từ mã này. Ngoài ra, tôi cho rằng đó là những độc giả mới, những người đã upvoting điều này, trong trường hợp này, bạn không nên. –

0

Một cách để làm điều đó mà không cần giấy gói thêm

#include <stdio.h> 
#include <string> 
using std::string; 
#include <sstream> 
using std::stringstream; 

#include "sqlite3.h" 

bool find_employee(int _id) 
{ 
    bool found = false; 
    sqlite3* db; 
    sqlite3_stmt* stmt; 
    stringstream ss; 

    // create sql statement string 
    // if _id is not 0, search for id, otherwise print all IDs 
    // this can also be achieved with the default sqlite3_bind* utilities 
    if(_id) { ss << "select * from employees where id = " << _id << ";"; } 
    else { ss << "select * from employees;"; } 
    string sql(ss.str()); 

    //the resulting sql statement 
    printf("sql: %s\n", sql.c_str()); 

    //get link to database object 
    if(sqlite3_open("data/test.db", &db) != SQLITE_OK) { 
     printf("ERROR: can't open database: %s\n", sqlite3_errmsg(db)); 
     sqlite3_close(db); 
     return found; 
    } 

    // compile sql statement to binary 
    if(sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, NULL) != SQLITE_OK) { 
     printf("ERROR: while compiling sql: %s\n", sqlite3_errmsg(db)); 
     sqlite3_close(db); 
     sqlite3_finalize(stmt); 
     return found; 
    } 

    // execute sql statement, and while there are rows returned, print ID 
    int ret_code = 0; 
    while((ret_code = sqlite3_step(stmt)) == SQLITE_ROW) { 
     printf("TEST: ID = %d\n", sqlite3_column_int(stmt, 0)); 
     found = true; 
    } 
    if(ret_code != SQLITE_DONE) { 
     //this error handling could be done better, but it works 
     printf("ERROR: while performing sql: %s\n", sqlite3_errmsg(db)); 
     printf("ret_code = %d\n", ret_code); 
    } 

    printf("entry %s\n", found ? "found" : "not found"); 

    //release resources 
    sqlite3_finalize(stmt); 
    sqlite3_close(db); 

    return found; 
} 
Các vấn đề liên quan