using System.Data; |
using System.Data.SQLite; |
using System.IO; |
|
namespace MyHelper.DataAccess |
{ |
public class SQLiteHelper |
{ |
private static string password = "***" ; //请修改***为实际密码 |
private static string dbFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly() |
.GetName().CodeBase) + "//***.db" ; //请修改***为实际SQLite数据库名 |
private static string connectString = string .Format( "Data Source =/"{}/"" , dbFilePath, password); |
private static SQLiteConnection myConnect = new SQLiteConnection(connectString); |
|
/**/ /// <summary> |
/// 取当前SQLite连接 |
/// </summary> |
/// <returns>当前SQLite连接</returns> |
public static SQLiteConnection GetConnection() |
{ |
return myConnect; |
} |
|
/**/ /// <summary> |
/// 执行SQL语句,返回受影响的行数 |
/// </summary> |
/// <param name="commandString">SQL语句</param> |
/// <param name="parameters">SQL语句参数</param> |
/// <returns>受影响的行数</returns> |
public static int ExecuteNonQuery( string commandString, params SQLiteParameter[] parameters) |
{ |
int result = ; |
using (SQLiteCommand command = new SQLiteCommand()) |
{ |
PrepareCommand(command, null , commandString, parameters); |
result = command.ExecuteNonQuery(); |
command.Parameters.Clear(); |
} |
return result; |
} |
|
/**/ /// <summary> |
/// 执行带事务的SQL语句,返回受影响的行数 |
/// </summary> |
/// <param name="transaction">SQL事务</param> |
/// <param name="commandString">SQL语句</param> |
/// <param name="parameters">SQL语句参数</param> |
/// <returns>受影响的行数</returns> |
public static int ExecuteNonQuery(SQLiteTransaction transaction, string commandString, |
params SQLiteParameter[] parameters) |
{ |
int result = ; |
using (SQLiteCommand command = new SQLiteCommand()) |
{ |
PrepareCommand(command, transaction, commandString, parameters); |
result = command.ExecuteNonQuery(); |
command.Parameters.Clear(); |
} |
return result; |
} |
|
/**/ /// <summary> |
/// 执行查询,并返回结果集的第一行第一列的值,忽略其它所有的行和列 |
/// </summary> |
/// <param name="commandString">SQL语句</param> |
/// <param name="parameters">SQL语句参数</param> |
/// <returns>第一行第一列的值</returns> |
public static object ExecuteScalar( string commandString, params SQLiteParameter[] parameters) |
{ |
object result; |
using (SQLiteCommand command = new SQLiteCommand()) |
{ |
PrepareCommand(command, null , commandString, parameters); |
result = command.ExecuteScalar(); |
} |
return result; |
} |
|
/**/ /// <summary> |
/// 执行SQL语句,返回结果集的DataReader |
/// </summary> |
/// <param name="commandString">SQL语句</param> |
/// <param name="parameters">SQL语句参数</param> |
/// <returns>结果集的DataReader</returns> |
public static SQLiteDataReader ExecuteReader( string commandString, params SQLiteParameter[] parameters) |
{ |
SQLiteCommand command = new SQLiteCommand(); |
try |
{ |
PrepareCommand(command, null , commandString, parameters); |
SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); |
command.Parameters.Clear(); |
return reader; |
} |
catch |
{ |
throw ; |
} |
} |
|
/**/ /// <summary> |
/// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化 |
/// </summary> |
/// <param name="command">Command对象</param> |
/// <param name="transaction">transaction对象</param> |
/// <param name="commandString">SQL语句</param> |
/// <param name="parameters">SQL语句参数</param> |
private static void PrepareCommand(SQLiteCommand command, SQLiteTransaction transaction, |
string commandString, params SQLiteParameter[] parameters) |
{ |
if (myConnect.State != ConnectionState.Open) |
myConnect.Open(); |
|
command.Connection = myConnect; |
command.CommandText = commandString; |
|
if (transaction != null ) |
command.Transaction = transaction; |
if (parameters != null && parameters.Length > ) |
{ |
command.Parameters.AddRange(parameters); |
} |
} |
} |
} |