C#里面怎么使用sqlite3.dll

别以为你站在珠峰就能看到全世界 别以为你站在珠峰就能看到全世界 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
不想用C#版本的dll,想用C版本的dll。C#版本的效率比较差。
原来想过用SQL Server Compact的,不过他好像字段限制比较死,最多8000,大点的图片都存不了啊。
所以改用sqlite。我下了《孜孜不倦的程序员:SQLite 内幕》的代码。下面是他什么dll函数的代码。

...
[DllImport("sqlite3.dll", EntryPoint = "sqlite3_open")] 
   static extern int sqlite3_open(string filename, out IntPtr db); 
 
  [DllImport("sqlite3.dll", EntryPoint = "sqlite3_close")] 
   static extern int sqlite3_close(IntPtr db); 
 
  [DllImport("sqlite3.dll", EntryPoint = "sqlite3_prepare_v2")] 
   static extern int sqlite3_prepare_v2(IntPtr db, string zSql, 
    int nByte, out IntPtr ppStmpt, IntPtr pzTail); 
  [DllImport("sqlite3.dll", EntryPoint = "sqlite3_step")] 
   static extern int sqlite3_step(IntPtr stmHandle); 
...


这样当我调用sqlite3_open时,总是报调用“导致堆栈不对称,PInvoke签名与非托管的目标签名不匹配”。
如果我强行执行,其实数据库还是能建立的,也能建表。很奇怪。
不知道如何解决,请大家帮帮忙。



...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部