WEB开发网
开发学院数据库MySQL 孜孜不倦的程序员:SQLite 内幕 阅读

孜孜不倦的程序员:SQLite 内幕

 2010-09-08 00:00:00 来源:WEB开发网   
核心提示: 面向 C/C++ 的 P/Invoke API 具有非常高的保真性,这使得该过程变得相对简单;SQLite API 使用原始指针来表示数据库本身,孜孜不倦的程序员:SQLite 内幕(4),这在 P/Invoke 中通过 System.IntPtr 实现,并且 SQLite API 经常会将指向

面向 C/C++ 的 P/Invoke API 具有非常高的保真性,这使得该过程变得相对简单;SQLite API 使用原始指针来表示数据库本身,这在 P/Invoke 中通过 System.IntPtr 实现,并且 SQLite API 经常会将指向 int 的指针作为参数,这样可以使用 C#“out”关键字修改 P/Invoke 描述的内容。 (有关 P/Invoke 的详细信息,请参阅 pinvoke.codeplex.com)。

若要了解有关如何使用 SQLite API 的大部分详细信息,建议您访问 SQLite 网站;但若要快速了解如何打开数据库,执行查询,然后关闭数据库这一过程,请参阅图 2,其中显示了类似的内容。

图 2 打开数据库,执行查询,然后关闭数据库

static void NativeMain() 
 { 
  // Open the database--db is our "handle" to it 
  IntPtr db; 
  if (SQLiteNative.sqlite3_open(@"cities.sqlite", out db) 
   == SQLiteNative.SQLITE_OK) 
   { 
    // Prepare a simple DDL "CREATE TABLE" statement 
    string query = 
     "CREATE TABLE City " + 
     "(name TEXT, state TEXT, population INTEGER)"; 
    IntPtr stmHandle; 
    if (SQLiteNative.sqlite3_prepare_v2(db, query, query.Length, 
     out stmHandle, IntPtr.Zero) != SQLiteNative.SQLITE_OK) 
    { 
     // Something went wrong--find out what 
     var err = SQLiteNative.sqlite3_errmsg(db); 
    } 
    if (SQLiteNative.sqlite3_step(stmHandle) != 
     SQLiteNative.SQLITE_DONE) 
    { 
     // Something went wrong--find out what 
     var err = SQLiteNative.sqlite3_errmsg(db); 
    } 
    if (SQLiteNative.sqlite3_finalize(stmHandle) != 
     SQLiteNative.SQLITE_OK) 
    { 
     // Something went wrong--find out what 
     var err = SQLiteNative.sqlite3_errmsg(db); 
    } 
 
   // ... Now that we've created a table, we can insert some 
   // data, query it back and so on 
 
   // Close the database back up 
   SQLiteNative.sqlite3_close(db); 
   } 
 }

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:孜孜不倦 程序员 SQLite

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接