想把项目的SQL SERVER数据库换掉,因为SQL SERVER过于庞大,而我的项目只是小型的桌面应用程序。
网上搜了一下,发现了SQLite,真是个好东西,无需安装和部署,关键是客户电脑什么都不用装就能使用数据库,大小只有1M多,正是我想要的。
花了半天时间,把项目的数据库替换掉,SQL语句基本都能用,只修改了个别语句。把SQLite的用法做个简单的记录。
一、SQLite安装
下载地址:http://www.sqlite.org/download.html 我用的是win7 32位,选了这两个。
下载解压后,将两个加压后的文件放入C盘新建的sqlite文件夹,或者其他任意的文件夹,作为SQLite的安装路径。
如果使用dos环境配置数据库和表结构,需要用到sqlite3这个命令,需要将sqlite3.exe配置到系统环境变量,右击计算机->属性->高级系统设置->环境变量,编辑Path,添加C:\sqlite,
即我们建立的安装路径。
添加后,可以使用cmd,输入sqlite3,出现
即为添加成功,然后我们可以在dos窗口下使用命令创建数据库和表,包括各种增删改查操作。如果不喜欢dos操作,就不用添加环境变量,直接使用可视化工具。
二、SQLite可视化工具
我个人喜欢可视化操作,虽然没有dos操作“高大上”,但是有方便的工具为啥不用呢?我搜了一下,SQLite的可视化工具还挺多,我下了一款,叫SQLite Studio,感觉还可以。
SQLite Studio下载地址:https://sqlitestudio.pl/index.rvt
在可视化工具下,傻瓜式创建数据库和表。
三、SQLite驱动
数据库创建好后,需要程序连接数据库,因为我用的是C#,所以还要下载C# 32位的驱动程序。
驱动下载地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki ,我习惯用.net 4.0,所以下载了这个
下载后直接安装,然后在程序里引用安装路径下的System.Data.SQLite.dll,导入命名空间:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Data.SQLite;
namespace DAL
{
public class DAL_LOGIN
{
private static string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString;
System.Data.DataSet ds = new System.Data.DataSet();
SQLiteConnection sqlConn = new SQLiteConnection();
SQLiteCommand sqlComm = new SQLiteCommand();
SQLiteDataAdapter sqlDa = new SQLiteDataAdapter();
SQLiteCommandBuilder scb = new SQLiteCommandBuilder();
public void Conn()
{
if(sqlConn.State == ConnectionState.Closed)
{
sqlConn = new SQLiteConnection(conStr);
sqlConn.Open();
sqlComm.Connection = sqlConn;
sqlComm.CommandType = CommandType.Text;
}
}
public void Close()
{
sqlDa.Dispose();
sqlDa = null;
sqlComm.Dispose();
sqlComm = null;
sqlConn.Dispose();
sqlConn = null;
}
public DataTable GetUserName()
{
sqlComm.CommandText="select distinct UserName from CMSUSERINFO order by UserName asc";
sqlComm.Parameters.Clear();
sqlDa.SelectCommand = sqlComm;
sqlDa.Fill(ds, "MER_LOGIN_USERNAME");
ds.Tables["MER_LOGIN_USERNAME"].Clear();
sqlDa.Fill(ds, "MER_LOGIN_USERNAME");
return ds.Tables["MER_LOGIN_USERNAME"];
}
public int CheckUserInfo(string name,string pass)
{
sqlComm.CommandText = "select count(*) from CMSUSERINFO where UserName = @name and UserPass =@pass";
sqlComm.Parameters.Clear();
var paras = new SQLiteParameter[] { new SQLiteParameter("@name", name), new SQLiteParameter("@pass", pass) };
sqlComm.Parameters.AddRange(paras);
int n =int.Parse(sqlComm.ExecuteScalar().ToString());
return n;
}
}
}
使用App.config配置连接字符串:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="SQLConnectionString"
connectionString="Data Source=|DataDirectory|\*.db;Pooling=true;FailIfMissing=false"
providerName="System.Data.SQLite"/>
</connectionStrings>
</configuration>
我喜欢把*.db放入到应用程序路径下,直接拷贝就能在其他电脑上运行。在客户电脑文件夹内只需要System.Data.SQLite.dll和*.db这两个文件即可访问数据库,当然.net 4.0是必需的。