sqlite 绿色部署的问题 SQLite不用安装的呀,直接调用。要用x86的sqlite版本,用x86编译 如果是Web的还要把IIS设成运行在x86上。这样就可以了。我调用的sqlite机器上从没装什么sqlit直接拿那个DLL就能跑了。都是用x86编译的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 另外 sqltie.net 上面一堆版本 都是用在什么地方的 英文不好, 看了半天 理解不了 自己去官网看SQLite的运行需求,人家很清楚的写着需要C++运行时 用编译成32位的程序+32位的dll试了 也不行 SQLite不用安装,直接用它的dll即可。 额这个问题同问,前段时间也遇到过这个问题,后来没办法只能安装SQLite包,楼主解决了没? sqlite是用c/c++来写的,要依赖c/c++ runtime的东西,完整安装包里面就有安装要在bin目录下面加上runtime的几个dll,并且改一个config文件,具体我懒得查了,当年我研究这个两三天啊 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了 http://download.csdn.net/detail/wawd74520/6878367用这个dll试试 实践证明 我把客户机上的C++ runtime卸载了也照样运行 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了话说的不能太绝对,是你版本用的不对你去SQLITE官网看看吧, 1.0.66之后的版本有看到用了C++ Runtime,你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了话说的不能太绝对,是你版本用的不对你去SQLITE官网看看吧, 1.0.66之后的版本有看到用了C++ Runtime,你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧我上一个项目用的是最新的,我用的是1.0.85的你试试下载他们的完整安装包,然后卸载你自己机器的runtime,然后试试安装,中间肯定会看到安装runtime的。这个在我用sqlite的第一天看他们官网的时候就知道了另外,sqlite3这个核心一直都是用c/c++写的,sqlite.net只是一个封装而已 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了话说的不能太绝对,是你版本用的不对你去SQLITE官网看看吧, 1.0.66之后的版本有看到用了C++ Runtime,你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了话说的不能太绝对,是你版本用的不对你去SQLITE官网看看吧, 1.0.66之后的版本有看到用了C++ Runtime,你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题那就是说没有static的就不用装C++ runtime拉?还有我下载的DLL是这里下的 我软件所用的版本编译方式是 非 PLATFORM_COMPACTFRAMEWORK编译方式的版本。 一直用都没装过Runtime C++ 目前只在机器上网net3.5 然后直接调用SQLite.DLL 版本就是1.0.66 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/ 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了话说的不能太绝对,是你版本用的不对你去SQLITE官网看看吧, 1.0.66之后的版本有看到用了C++ Runtime,你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题那就是说没有static的就不用装C++ runtime拉?还有我下载的DLL是这里下的 我软件所用的版本编译方式是 非 PLATFORM_COMPACTFRAMEWORK编译方式的版本。 一直用都没装过Runtime C++ 目前只在机器上网net3.5 然后直接调用SQLite.DLL 版本就是1.0.66 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/我觉得就是将sqlite3嵌入到dll一样,把runtime的dll也嵌入了而已另外,确实要指正的,sqlite3这个核心是c/c++写的,不然根本就不会有x86/x64的问题 1.没用过就不会在这里说了,我们做的项目就是用到sqlite 就是直接用一个dll到处布属,还没发现过像楼主说的那样的问题,也没有在客户机上装什么C++ runtime那证明你们测试不行了话说的不能太绝对,是你版本用的不对你去SQLITE官网看看吧, 1.0.66之后的版本有看到用了C++ Runtime,你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题那就是说没有static的就不用装C++ runtime拉?还有我下载的DLL是这里下的 我软件所用的版本编译方式是 非 PLATFORM_COMPACTFRAMEWORK编译方式的版本。 一直用都没装过Runtime C++ 目前只在机器上网net3.5 然后直接调用SQLite.DLL 版本就是1.0.66 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/我觉得就是将sqlite3嵌入到dll一样,把runtime的dll也嵌入了而已另外,确实要指正的,sqlite3这个核心是c/c++写的,不然根本就不会有x86/x64的问题看了他的原码是有sqlite3.c 这个, 用上面的说的非PLATFORM_COMPACTFRAMEWORK变成了引用他本身的DLL#if !PLATFORM_COMPACTFRAMEWORK private const string SQLITE_DLL = "System.Data.SQLite.DLL";#else internal const string SQLITE_DLL = "SQLite.Interop.066.DLL";#endif // PLATFORM_COMPACTFRAMEWORK#else private const string SQLITE_DLL = "SQLite.Interop.DLL";#endif // USE_INTEROP_DLL#else private const string SQLITE_DLL = "sqlite3";#endif [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_bind_parameter_name_interop(IntPtr stmt, int index, out int len); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_column_database_name_interop(IntPtr stmt, int index, out int len); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_column_database_name16_interop(IntPtr stmt, int index, out int len); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_column_decltype_interop(IntPtr stmt, int index, out int len);所以说下的版本问题吧 用1.0.66的不会出现问题的。。 -_-就算static里面的,代码都是这样的,只是c#的dll是否把SQLite.Interop.DLL这个文件嵌入而已根本问题就是SQLite.Interop.DLL的编译方式,应该是集成了c++ runtime的库的所以你那个66版的不需要安装c++ runtime而已 -_-就算static里面的,代码都是这样的,只是c#的dll是否把SQLite.Interop.DLL这个文件嵌入而已根本问题就是SQLite.Interop.DLL的编译方式,应该是集成了c++ runtime的库的所以你那个66版的不需要安装c++ runtime而已虽然我对c/c++的东西不是很熟,但是我记得在编译c/c++的东西时候,添加相关的*.lib,可以集成到相应的库,而最后不需要把*.lib对应的*.dll引用上的看到static,才想起来,然后去查看了一下静态编译 现在很奇怪的 就是 , 部署到 没安装的环境里面 运行不了你下错dll了吧。http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。 楼主既然程序编译通过,说明肯定引用了这个DLL,看下程序里面引用的是什么版本,就Copy什么版本到程序目录里面就可以了。 现在很奇怪的 就是 , 部署到 没安装的环境里面 运行不了你下错dll了吧。http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。问一下,文件名里有bundle,说明里多一句“features the mixed-mode assembly”的,有什么区别吗? winform中引用sqlite.dll,然后点击这个dll,查看你下载的sqlite版本与你写在config中的版本号是否一致,Version=1.0.90.0, 就是这个东西。 你怎么知道出错的机器上缺C++运行时呀报错信息说得很清楚,是缺Data Provider,不缺C++运行时呀。 一直在用1.0.66版的.net 2.0的 System.Data.SQLite.dll ,直接引用、绝对绿色,不用安装,在xp/Win7 64/Win7 32 .net 2.0/.net 4.0 环境下使用,没有发现什么问题 你怎么知道出错的机器上缺C++运行时呀报错信息说得很清楚,是缺Data Provider,不缺C++运行时呀。这东西有点蹊跷的,调用vc.net编写的程序集如果缺少c++运行时的时候会抛出无法加载程序集异常 现在很奇怪的 就是 , 部署到 没安装的环境里面 运行不了你下错dll了吧。http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。问一下,文件名里有bundle,说明里多一句“features the mixed-mode assembly”的,有什么区别吗?用bundle的,只需要一个dll,不加的用有两个dll在指定目录下。 现在很奇怪的 就是 , 部署到 没安装的环境里面 运行不了你下错dll了吧。http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。问一下,文件名里有bundle,说明里多一句“features the mixed-mode assembly”的,有什么区别吗?用bundle的,只需要一个dll,不加的用有两个dll在指定目录下。已经用上了,非常感谢! 我是一个个的dll试终于找到可以用的 一个 郁闷,求解。 C#编程 能实现IP包中源IP地址的更改吗 BeginReceive执行异步接受数据的判断问题 这个怎么实现? VS2003移植到VS2005的问题 ActiveReport中向报表类传递的数据集有多个DataTable如何设置绑定字段? 如何实现不同接口中相同名字的方法? 关于序列化 装箱与拆箱 求救,有个c#网站。。。 WinForm 窗体中不同按钮控制动态产生的不同的 timmer 的启停 C# TabControl简单又奇怪问题,在线等。。。。。。。。。
用编译成32位的程序+32位的dll试了 也不行
sqlite是用c/c++来写的,要依赖c/c++ runtime的东西,完整安装包里面就有安装
要在bin目录下面加上runtime的几个dll,并且改一个config文件,具体我懒得查了,当年我研究这个两三天啊
用这个dll试试
卸载了也照样运行
你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧
你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧我上一个项目用的是最新的,我用的是1.0.85的
你试试下载他们的完整安装包,然后卸载你自己机器的runtime,然后试试安装,中间肯定会看到安装runtime的。
这个在我用sqlite的第一天看他们官网的时候就知道了另外,sqlite3这个核心一直都是用c/c++写的,sqlite.net只是一个封装而已
你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题
你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题那就是说没有static的就不用装C++ runtime拉?还有我下载的DLL是这里下的 我软件所用的版本编译方式是 非 PLATFORM_COMPACTFRAMEWORK编译方式的版本。 一直用都没装过Runtime C++ 目前只在机器上网net3.5 然后直接调用SQLite.DLL 版本就是1.0.66 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/
你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题那就是说没有static的就不用装C++ runtime拉?还有我下载的DLL是这里下的 我软件所用的版本编译方式是 非 PLATFORM_COMPACTFRAMEWORK编译方式的版本。 一直用都没装过Runtime C++ 目前只在机器上网net3.5 然后直接调用SQLite.DLL 版本就是1.0.66 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/
我觉得就是将sqlite3嵌入到dll一样,把runtime的dll也嵌入了而已
另外,确实要指正的,sqlite3这个核心是c/c++写的,不然根本就不会有x86/x64的问题
你用1.0.66试试吧,还有他的不是C++写的,是C#写的。你所说的C++是数据库管理器工具吧http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki看到我和你都是错的,页面上第一段就说了,下载的包,如果有static的,都是要装c++ runtime的,反之则不用,这个不是版本的问题那就是说没有static的就不用装C++ runtime拉?还有我下载的DLL是这里下的 我软件所用的版本编译方式是 非 PLATFORM_COMPACTFRAMEWORK编译方式的版本。 一直用都没装过Runtime C++ 目前只在机器上网net3.5 然后直接调用SQLite.DLL 版本就是1.0.66 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/
我觉得就是将sqlite3嵌入到dll一样,把runtime的dll也嵌入了而已
另外,确实要指正的,sqlite3这个核心是c/c++写的,不然根本就不会有x86/x64的问题看了他的原码是有sqlite3.c 这个, 用上面的说的非PLATFORM_COMPACTFRAMEWORK变成了引用他本身的DLL#if !PLATFORM_COMPACTFRAMEWORK
private const string SQLITE_DLL = "System.Data.SQLite.DLL";
#else
internal const string SQLITE_DLL = "SQLite.Interop.066.DLL";
#endif // PLATFORM_COMPACTFRAMEWORK#else
private const string SQLITE_DLL = "SQLite.Interop.DLL";
#endif // USE_INTEROP_DLL#else
private const string SQLITE_DLL = "sqlite3";
#endif
[DllImport(SQLITE_DLL)]
internal static extern IntPtr sqlite3_bind_parameter_name_interop(IntPtr stmt, int index, out int len); [DllImport(SQLITE_DLL)]
internal static extern IntPtr sqlite3_column_database_name_interop(IntPtr stmt, int index, out int len); [DllImport(SQLITE_DLL)]
internal static extern IntPtr sqlite3_column_database_name16_interop(IntPtr stmt, int index, out int len); [DllImport(SQLITE_DLL)]
internal static extern IntPtr sqlite3_column_decltype_interop(IntPtr stmt, int index, out int len);
所以说下的版本问题吧 用1.0.66的不会出现问题的。。
-_-
就算static里面的,代码都是这样的,只是c#的dll是否把SQLite.Interop.DLL这个文件嵌入而已根本问题就是SQLite.Interop.DLL的编译方式,应该是集成了c++ runtime的库的
所以你那个66版的不需要安装c++ runtime而已
-_-
就算static里面的,代码都是这样的,只是c#的dll是否把SQLite.Interop.DLL这个文件嵌入而已根本问题就是SQLite.Interop.DLL的编译方式,应该是集成了c++ runtime的库的
所以你那个66版的不需要安装c++ runtime而已虽然我对c/c++的东西不是很熟,但是我记得在编译c/c++的东西时候,添加相关的*.lib,可以集成到相应的库,而最后不需要把*.lib对应的*.dll引用上的看到static,才想起来,然后去查看了一下静态编译
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载
Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者
Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载
Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者
Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。
问一下,文件名里有bundle,说明里多一句“features the mixed-mode assembly”的,有什么区别吗?
你怎么知道出错的机器上缺C++运行时呀
报错信息说得很清楚,是缺Data Provider,不缺C++运行时呀。
你怎么知道出错的机器上缺C++运行时呀
报错信息说得很清楚,是缺Data Provider,不缺C++运行时呀。这东西有点蹊跷的,调用vc.net编写的程序集如果缺少c++运行时的时候会抛出无法加载程序集异常
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载
Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者
Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。
问一下,文件名里有bundle,说明里多一句“features the mixed-mode assembly”的,有什么区别吗?用bundle的,只需要一个dll,不加的用有两个dll在指定目录下。
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载
Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者
Precompiled Statically-Linked Binaries for 64-bit Windows (.NET Framework 4.5)的dll,视你的系统是32位还是64位的。如果下载的不是静态编译的dll,那么你需要两个dll放在指定目录下,一个是sqlite的,一个是VC的runtime包。
问一下,文件名里有bundle,说明里多一句“features the mixed-mode assembly”的,有什么区别吗?用bundle的,只需要一个dll,不加的用有两个dll在指定目录下。
已经用上了,非常感谢!