WPF 自动选择dll,以SQLite为例
在学习sqlite的过程中,发现它的dll是区分32位和64位的,起初觉得很恼火,但是仔细看了下,
发现让程序自行选择dll其实也不是一件很麻烦的事情,如下:
1>创建一个sqlite数据

2>创建一个工程
3>新建一个类
class Entrance : Application
{
[STAThread]
static void Main()
{
string dll32 = @".\SQLitedll\System.Data.SQLite32.dll";
string dll64 = @".\SQLitedll\System.Data.SQLite64.dll";
string dllpath = @".\System.Data.SQLite.dll"; if (IntPtr.Size == )
{
using (FileStream fs=File.Create(dllpath)){}
File.Copy(dll64,dllpath,true);
}
else if(IntPtr.Size == )
{
using (FileStream fs=File.Create(dllpath)){}
File.Copy(dll32,dllpath,true);
}
else
{MessageBox.Show("ERROR!");}
//start up the main window
Application app = new Application();
MainWindow window = new MainWindow();
app.Run(window);
}
}
4>添加按钮响应事件
private void Button_Click(object sender, RoutedEventArgs e)
{
string strconn = @"Data Source=.\student.db;Version=3";
string strcmd = "select * from stu";
SQLiteConnection con = new SQLiteConnection(strconn);
try
{
con.Open();
}
catch (Exception ex)
{ MessageBox.Show(ex.ToString()); } SQLiteCommand cmd = new SQLiteCommand(strcmd, con); cmd.ExecuteNonQuery(); SQLiteDataAdapter dataApp = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable("a");
dataApp.Fill(dt);
dataGrid1.ItemsSource = dt.DefaultView;
dataApp.Update(dt);
con.Close();
}
}
5>最终效果(左边是win8 64位测试效果,右边是xp 32位测试效果)[注:新版的System.Data.SQLite.dll可能需要msvcr100.dll的支持,在测试
的机器上如果没有这个dll会莫名地崩溃,还catch不到异常,具体可能跟版本有关,可以用depends来查看一下]


WPF 自动选择dll,以SQLite为例的更多相关文章
- WPF程序将DLL嵌入到EXE的两种方法
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...
- WPF中选择文件和选择文件夹的方法
最近从winform转WPF,遇到了各种各样的问题.然而网上的关于WPF的资料少之又少,甚至连基本的文件选择操作,百度搜索的首页都没有一个比较好的方法.所以,踩了几个坑之后,我把我得到的方法分享给大家 ...
- WPF: 自动设置Owner的ShowDialog 适用于MVVM
原文:WPF: 自动设置Owner的ShowDialog 适用于MVVM 原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialo ...
- Ubuntu 自动选择最快的镜像源
通常情况下阿里云的镜像源(http://mirrors.aliyun.com/ubuntu/)用得比较多 但是也不排除因网络环境导致的某个镜像源访问慢问题 那么就可以配置为自动选择镜像源进行更新 修改 ...
- Xcode自动选择证书
从xcode3时代习惯了手动选择证书,即 Provisioning Profile和 Code Signing Identify. 而随着团队扩大,应用量增多,需要管理的证书也越来越多,每次从长长的l ...
- 自动选择最佳特征进行分类-SVM (Halcon)
HALCON12里的example,classify_pills_auto_select_features.hdev. 执行流程: 1.选取相关特征(本例选取color和region组的所有特征)(本 ...
- WPF使用DynamicDataDisplay.dll显示CPU及内存使用曲线
原文:WPF使用DynamicDataDisplay.dll显示CPU及内存使用曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangshub ...
- 深度学习框架如何自动选择最快的算法?Fast Run 让你收获最好的性能!
作者:王博文 | 旷视 MegEngine 架构师 一.背景 对于深度学习框架来说,网络的训练/推理时间是用户非常看中的.在实际生产条件下,用户设计的 NN 网络是千差万别,即使是同一类数学计算,参数 ...
- js单击自动选择文本
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- Java堆内存又溢出了!教你一招必杀技
JAVA堆内存管理是影响性能主要因素之一.堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的. 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为 ...
- Codeforces Round #443 (Div. 2) C 位运算
C. Short Program time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- OWINS是什么(转载)
OWIN的英文全称是Open Web Interface for .NET. 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平台的开放Web接口. 那Web接口是谁和谁之间的接口呢?是 ...
- 定时任务之crond服务
计划任务分为一次性计划任务与长期性计划任务 一次性计划任务:今天11:25执行重启网卡操作,执行结束 即任务消失 一次性计划任务格式: 创建:"at 时间" #默认采用的是交互式 ...
- TCP/IP网络编程之地址族与数据序列
分配IP地址和端口号 IP是Internet Protocol(网络协议)的简写,是为收发网络数据而分配给计算机的值.端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号 网络地 ...
- 动态加载css,js
function dynamicLoadCss(url) { var head = document.getElementsByTagName('head')[0]; var link = docum ...
- 关于tree节点的刷新
1.刷新节点分为刷新整个树和刷新指定节点 (1)刷新整个树 $("#tree").tree("reload"); (2)刷新指定节点(方法:传入需要刷新节点的父 ...
- loj2291 「THUSC 2016」补退选
ref pkusc 快到了,做点 thusc 的题涨涨 rp-- #include <iostream> #include <cstring> #include <cst ...
- 【Pow(x,n)】
题目: Implement pow(x, n). 代码: class Solution { public: double myPow(double x, int n) { double ret = S ...
- 转:vc与界面开发之间的文章
[很好的一篇文章,很喜欢看同行的心路历程:http://www.vckbase.com/index.php/nv/444.html] 本屌丝在新春放假期间闲来无事,在各大编程论坛溜达了一圈.发现年前的 ...