当前位置:首页 » 数据库存储

.C# 操作SQLite数据库

2012-06-16 17:24 本站整理 浏览(4)

1.安装SQLite-1.0.66.0-setup.exe或者直接添加System.Data.SQLite.dll

2.VS相关工程添加引用System.Data.SQLite.dll,显示使用using System.Data.SQLite; //手动添加引用

3.建立数据库文件链接:使用SQLiteConnection,SQLiteConnectionStringBuilder

4.创建件数据库文件*.db:SQLiteConnection.CreateFile(filepath);//filepath如:D:\database.db

5.创建数据表:使用SQLiteCommand对象

6.附加正则表达式:主要是对数据进行正确性校验如

/// <summary>

/// 整数正则表达式

/// </summary>

public const string _integerrule = @"^([1-9][0-9]*)$";

列举过程中一些自定义函数:

命名空间

using System.Text.RegularExpressions; //手动添加引用

using System.Data.SQLite; //手动添加引用

0.提示对话框

/// <summary>

/// 对话框

/// </summary>

/// <param name="msg">提示内容</param>

/// <param name="title">对话框标题</param>

public void ShowMessage(string msg, string title)

{

MessageBox.Show(msg, title, MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

1.正则表达式与数据

/// <summary>

/// 判断数据是否规则

/// </summary>

/// <param name="str">数据串</param>

/// <param name="strRule">正则表达式</param>

/// <returns>bool</returns>

public bool ISCorrectData(string str, string strRule)

{

if ( str.Length < 1 || strRule.Length < 1)

{

return false;

}

Match m = Regex.Match(str, strRule);

if (m.Groups.Count > 1)

{

return true;

}

else

{

return false;

}

}

2.创建数据库文件

/// <summary>

/// 创建数据库文件

/// </summary>

/// <param name="filepath">完整数据库路径.db</param>

/// <returns>bool</returns>

public bool CreateDataBaseFile(string filepath)

{

if (! File.Exists(filepath))

{

try

{

//File.Delete(filepath);

SQLiteConnection.CreateFile(filepath);

return true;

}

catch(Exception exp)

{

ShowMessage(exp.Message, "程序报错");

return false;

}

}

else

{

SQLiteConnection.CreateFile(filepath);

return true;

}

}

3.建立数据库连接

/// <summary>

/// 数据连接

/// </summary>

/// <param name="constr">数据库文件</param>

/// <returns>SQLiteConnection</returns>

public SQLiteConnection CreateSQLiteConnection(string constr)

{

if (constr.Length < 1 || !File.Exists(constr))

{

ShowMessage("无法连接数据库", "无效数据库");

return null;

}

SQLiteConnection conn = new SQLiteConnection();

SQLiteConnectionStringBuilder connstr = new SQLiteConnectionStringBuilder();

connstr.DataSource = constr;

connstr.Password = "11111111";//设置密码保护

conn.ConnectionString = connstr.ToString();

conn.Open(); //可单独抽出函数执行Open和Close

return conn;

}

4.创建数据表

/// <summary>

/// 创建数据表

/// </summary>

/// <param name="constr">连接字符串</param>

/// <returns></returns>

public bool CreateDataTable(string constr)

{

if (constr.Length < 1)

{

return false;

}

SQLiteConnection conn = CreateSQLiteConnection(constr);

try

{

SQLiteCommand command = new SQLiteCommand();

command.CommandText = CONSTDATA._sqltable; //将create tabale语句定义为常量或者直接传递参数增加灵活性

command.Connection = conn;

command.ExecuteNonQuery(); //执行数据库操作命令

conn.Close();

return true;

}

catch (System.Exception ex)

{

ShowMessage(ex.Message, "创建表失败");

conn.Close();

return false;

}

}

5.插入数据

/// <summary>

/// 插入数据

/// </summary>

/// <param name="constr">连接字符串</param>

/// <param name="table">数据表实体值</param>

/// <returns>bool</returns>

public bool InsertDataToTable(string constr, LTEVIPDataTable table)

{

if (constr.Length < 1 || table == null)

{

return false;

}

SQLiteConnection conn = CreateSQLiteConnection(constr); //调用3里面的函数

try

{

SQLiteCommand command = new SQLiteCommand();

command.CommandText = CONSTDATA._sqlinsert; //常量insert into tablename valuse(....)

SQLiteParameter []parameter = //建立参数

{

new SQLiteParameter("@ENBID", table.ENBID), //直接赋值,根据值类型设置参数类型

new SQLiteParameter("@TIME", table.TIME),

new SQLiteParameter("@MME_UE_S1AP_ID", table.MME_UE_S1AP_ID),

new SQLiteParameter("@STMSI", table.STMSI),

new SQLiteParameter("@IMSI", table.IMSI),

new SQLiteParameter("@IMEI", table.IMEI),

new SQLiteParameter("@MSISDN", table.MSISDN),

new SQLiteParameter("@auto_column_filename", table.auto_column_filename),

new SQLiteParameter("@auto_column_offset", table.auto_column_offset),

new SQLiteParameter("@auto_column_length", table.auto_column_length)

};

//使用参数

foreach (SQLiteParameter p in parameter)

{

command.Parameters.Add(p);

}

command.Connection = conn;

command.ExecuteNonQuery(); //执行数据库操作命令

conn.Close();

return true;

}

catch (System.Exception ex) //异常数据捕获

{

ShowMessage(ex.Message, "应用程序出错");

conn.Close();

return false;

}

}

【小结】:1.输入prop后2次Tab键可以敲出实体

2.在不同的地方输入3个///会给出注解样式

3.程序应最大限度避免代码重复性,函数功能求单一,行数不易过长

4.参数不能过多,且对输入参数要进行校验……