public abstract class SQLiteHelper
{
public static string connectionString = System.Web.HttpContext.Current.Server.MapPath("~/DOWhat.s3db");
#region 准备一个命令
/// <summary>
///
/// </summary>
/// <param name="cmd">SQLiteCommand</param>
/// <param name="conn">数据库连接字符串</param>
/// <param name="trans">事务</param>
/// <param name="cmdText">sql语句</param>
/// <param name="cmdParms">sql参数</param>
private static void PrepareCommand(SQLiteCommand cmd,SQLiteConnection conn,SQLiteTransaction trans, string cmdText,SQLiteParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
{
SQLiteConnectionStringBuilder connsb = new SQLiteConnectionStringBuilder();
connsb.DataSource = connectionString;
conn.ConnectionString = connsb.ToString();
conn.Open();
}
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
{
cmd.Transaction = trans;
}
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (SQLiteParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
#endregion
#region 执行一条计算查询结果语句,返回查询结果
/// <summary>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(object)</returns>
public static object GetSingle(string SQLString)
{
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
using (SQLiteCommand cmd = new SQLiteCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, null);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SQLite.SQLiteException e)
{
throw e;
}
}
}
}
/// <summary>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(object)</returns>
public static object GetSingle(string SQLString, params SQLiteParameter[] cmdParms)
{
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
using (SQLiteCommand cmd = new SQLiteCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SQLite.SQLiteException e)
{
throw e;
}
}
}
}
#endregion
#region 执行一条SQL selet update delete返回是否成功的结果
/// <summary>
/// 执行一条SQL selet update delete返回是否成功的结果
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>操作是否成功(bool)</returns>
public static bool SQLExecute(string SQLString)
{
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
using (SQLiteCommand cmd = new SQLiteCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, null);
int i = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
if (1==i)
{
return true;
}
else
{
return false;
}
}
catch (System.Data.SQLite.SQLiteException e)
{
throw e;
}
}
}
}
#endregion
#region 返回一个数据集
public static DataSet GetDS(string SQL)
{
using (SQLiteConnection connection =new SQLiteConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SQLiteDataAdapter cmd = new SQLiteDataAdapter(SQL, connection);
cmd.Fill(ds, "ds");
}
catch (System.Data.SQLite.SQLiteException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
#endregion
}