/// <summary>
/// 使用 System.Data.SQLite.dll 版本 1.0.102.0 官方例子名称:sqlite-netFx35-binary-PocketPC-ARM-2008-1.0.102.0
/// </summary>
public class SqliteHelper
{
private readonly static string DbName = "XXX";
private readonly static string dbPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
private readonly static string connectionstring = String.Format("Data Source={0}\\{1}.db;Version=3;Pooling=False;Max Pool Size=100;", dbPath, DbName);
public static DbConnection GetConn
{
get
{
SQLiteConnection conn = new SQLiteConnection(connectionstring);
conn.Open();
return conn;
}
}
public static int ExecuteNonQuery(string commandText)
{
using (DbCommand cmd = GetConn.CreateCommand())
{
cmd.CommandText = commandText;
return cmd.ExecuteNonQuery();
}
}
public static int ExecuteNonQuery(string commandText, DbParameter[] parameters)
{
using (DbCommand cmd = GetConn.CreateCommand())
{
cmd.CommandText = commandText;
cmd.Parameters.AddRange(parameters);
int r = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return r;
}
}
public static object ExecuteScalar(string commandText)
{
using (DbCommand cmd = GetConn.CreateCommand())
{
cmd.CommandText = commandText;
return cmd.ExecuteScalar();
}
}
public static DbDataReader ExecuteReader(string commandText)
{
DbCommand cmd = GetConn.CreateCommand();
try
{
cmd.CommandText = commandText;
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
catch (Exception ex)
{
GetConn.Close();
cmd.Dispose();
throw ex;
}
}
public static DbDataReader ExecuteReader(string commandText, DbParameter[] paramers)
{
DbCommand cmd = GetConn.CreateCommand();
try
{
cmd.CommandText = commandText;
cmd.Parameters.AddRange(paramers);
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return reader;
}
catch (Exception ex)
{
GetConn.Close();
cmd.Dispose();
throw;
}
}
public static DataSet ExecuteDataSet(string commandText, DbParameter[] paramers)
{
using (DbCommand cmd = GetConn.CreateCommand())
{
int dtbegin = Environment.TickCount;
DataSet ds = new DataSet();
cmd.CommandText = commandText;
cmd.Parameters.AddRange(paramers);
DbDataAdapter adp = new SQLiteDataAdapter(cmd as SQLiteCommand);
adp.Fill(ds);
int dtEnd = Environment.TickCount;
int times = dtEnd - dtbegin;
return ds;
}
}
public static void ExecuteNonMany(List<string> list)
{
DbConnection conn = GetConn;
using (DbTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted))
{
try
{
using (DbCommand cmd = conn.CreateCommand())
{
list.ForEach((str) =>
{
cmd.CommandText = str;
cmd.ExecuteNonQuery();
});
}
}
catch (Exception)
{
trans.Rollback();
}
}
}
public static void ExecuteNonMany(string sql, List<DbParameter[]> parameterList)
{
using (DbConnection conn = GetConn)
{
using (DbTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted))
{
try
{
using (DbCommand cmd = conn.CreateCommand())
{
parameterList.ForEach((parameter) =>
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
});
trans.Commit();
}
}
catch (Exception)
{
trans.Rollback();
}
}
}
}
}