VB使用SQLite问题,出错“ActiveX 部件不能创建对象”,有点急。。

myhui 2009-08-12 05:11:39
想要VB使用SQLite
网上下载 的一段代码。。运行到中间出错
请问这是啥问题?
或者有其他方法在vb中使用SQLite。。。也可以。。。。

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long


Dim lb As Long
lb = LoadLibrary(App.Path & "\sqlite3.dll")

Dim oDB As Object
Set oDB = CreateObject("LiteX.LiteConnection") <————运行到这里,出错“ActiveX 部件不能创建对象”
TextSQLiteVersion.Text = oDB.Version
oDB.open (App.Path & "\test.db")

oDB.Execute ("insert into testtable values(2, 'laoma', 20)")

TextSQLiteChanges.Text = oDB.changes
TextSQLitePath.Text = oDB.Path


oDB.Close
...全文
875 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cameo69217717 2011-05-24
  • 打赏
  • 举报
回复
我前段时间也碰到过这个问题,是由于sqlite3.dll的问题。
网上下载的sqlite3.dll一般都不能注册,具体什么原因我还没搞清楚。我这里有个sqlite3.dll可以注册的,你如果需要的话,给我发邮件,cameo_001@163.com,我到时发给你。
myhui 2010-08-03
  • 打赏
  • 举报
回复
后来我放弃了。。这是一个网友的解答。。也不知道有没有用。

此问题我已经解决 1、确定你的sqlite是litex封装的(链接http://www.assembla.com/wiki/show/litex) 2、动态调用请参考lingll写的VB不注册调用ActiveX Dll的系列教程

最后建议
litex的SQlite的最后编译时间是2008/4/16
使用的 SQLite3 数据库版本是 3.5.7.
已经相当时间没有更新

可以选择dhRichClient3哦并且是开源项目哦 o(∩_∩)o 哈哈
hshu2008 2009-11-27
  • 打赏
  • 举报
回复
这个问题最后怎么解决的?
myhui 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 slowgrace 的回复:]
是不是除了这个dll还有其他需要引用的?你到对象浏览器里看看有没有litex这个库?是不是有个叫litex的组件你还没注册啊?
[/Quote]
没有这个库。。。。,
如何注册。。。

原来在linux中的C++使用过 SQLite,觉得特别方便,包含几个.h .lib文件,就一个数据库文件就可以使用了。
现在在windows下也想达到这个效果,不用另外单独安装数据库就可以使用数据库,那就好了。
因为程序要装到其他机子上用,要多装东西就麻烦。。。所以想用动态引用的方式。。。,在代码中实现引用。。而 不需要额外安装或操作就好了。。
slowgrace 2009-08-12
  • 打赏
  • 举报
回复
是不是除了这个dll还有其他需要引用的?你到对象浏览器里看看有没有litex这个库?是不是有个叫litex的组件你还没注册啊?
myhui 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 slowgrace 的回复:]
另外,API函数调用常不报错,需要你自己检查返回值来确定是否有错。
[/Quote]
返回值非零。。。。零为出错
myhui 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 slowgrace 的回复:]
如果这个dll没在system32下,则要包含完整路径,用双引号括起来。
[/Quote]

已复制
slowgrace 2009-08-12
  • 打赏
  • 举报
回复
另外,API函数调用常不报错,需要你自己检查返回值来确定是否有错。
slowgrace 2009-08-12
  • 打赏
  • 举报
回复
如果这个dll没在system32下,则要包含完整路径,用双引号括起来。
myhui 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 slowgrace 的回复:]
另外,也可试试注册它,在运行里输入 regsvr32 sqlite3.dll按确定即可
[/Quote]
已加载,无法注册。。。诶。。。。
myhui 2009-08-12
  • 打赏
  • 举报
回复
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long


Dim lb As Long
lb = LoadLibrary(App.Path & "\sqlite3.dll") <------这句也有问题,我把文件名改成
<------错误的sqlite333.dll,竟然
<------没有报错。。。。

Dim oDB As Object
Set oDB = CreateObject("LiteX.LiteConnection") <————运行到这里,出错“ActiveX 部件不能创建对象”
TextSQLiteVersion.Text = oDB.Version
oDB.open (App.Path & "\test.db")

oDB.Execute ("insert into testtable values(2, 'laoma', 20)")

TextSQLiteChanges.Text = oDB.changes
TextSQLitePath.Text = oDB.Path


oDB.Close
myhui 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 slowgrace 的回复:]
在工程里引用“sqlite3.dll”了么?
[/Quote]
我引用了一下,但是它说“不能将引用加入到指定文件”

其实我想用的是动态引用,,

slowgrace 2009-08-12
  • 打赏
  • 举报
回复
slowgrace 2009-08-12
  • 打赏
  • 举报
回复
另外,也可试试注册它,在运行里输入 regsvr32 sqlite3.dll按确定即可
slowgrace 2009-08-12
  • 打赏
  • 举报
回复
在工程里引用“sqlite3.dll”了么?

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧