SQLite Administrator 0.8.3.2┊是基于数据库引擎的管理工具┊汉化绿色特别版 sqlite 1.68M
SQLite,除了access,mysql以外的另外一个轻量级数据库
using System
using System.Collections.Generic
using System.Text
using System.Web
using System.Configuration
using System.Data
using System.Data.SQLitenamespace DAL
{
public class Sqlite
{
/// <summary>
/// 获得连接对象
/// </summary>
/// <returns></returns>
public static SQLiteConnection GetSQLiteConnection()
{
return new SQLiteConnection("Data Source=" + System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["db"].ToString()))
}private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)
{if (conn.State != ConnectionState.Open)
conn.Open()
cmd.Parameters.Clear()
cmd.Connection = conn
cmd.CommandText = cmdText cmd.CommandType = CommandType.Text
cmd.CommandTimeout = 30 if (p != null)
{
foreach (object parm in p)
cmd.Parameters.AddWithValue(string.Empty, parm)
//for (int i = 0i <p.Lengthi++)
//cmd.Parameters[i].Value = p[i]
}
}public static DataSet ExecuteDataset(string cmdText, params object[] p)
{
DataSet ds = new DataSet()
SQLiteCommand command = new SQLiteCommand()
using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(command, connection, cmdText, p)
SQLiteDataAdapter da = new SQLiteDataAdapter(command)
da.Fill(ds)
}return ds
}public static DataRow ExecuteDataRow(string cmdText, params object[] p)
{
DataSet ds = ExecuteDataset(cmdText, p)
if (ds != null &&ds.Tables.Count >0 &&ds.Tables[0].Rows.Count >0)
return ds.Tables[0].Rows[0]
return null
}/// <summary>
/// 返回受影响的行数
/// </summary>
/// <param name="cmdText">a</param>
/// <param name="commandParameters">传入的参数</param>
/// <returns></returns>
public static int ExecuteNonQuery(string cmdText, params object[] p)
{
SQLiteCommand command = new SQLiteCommand() using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(command, connection, cmdText, p)
return command.ExecuteNonQuery()
}
}/// <summary>
/// 返回SqlDataReader对象
/// </summary>
/// <param name="cmdText"></param>
/// <param name="commandParameters">传入的参数</param>
/// <returns></returns>
public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)
{
SQLiteCommand command = new SQLiteCommand()
SQLiteConnection connection = GetSQLiteConnection()
try
{
PrepareCommand(command, connection, cmdText, p)
SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection)
return reader
}
catch
{
connection.Close()
throw
}
}/// <summary>
/// 返回结果集中的第一行第一列,忽略其他行或列
/// </summary>
/// <param name="cmdText"></param>
/// <param name="commandParameters">传入的参数</param>
/// <returns></returns>
public static object ExecuteScalar(string cmdText, params object[] p)
{
SQLiteCommand cmd = new SQLiteCommand() using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(cmd, connection, cmdText, p)
return cmd.ExecuteScalar()
}
}/// <summary>
/// 分页
/// </summary>
/// <param name="recordCount"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="cmdText"></param>
/// <param name="countText"></param>
/// <param name="p"></param>
/// <returns></returns>
public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)
{
if (recordCount <0)
recordCount = int.Parse(ExecuteScalar(countText, p).ToString()) DataSet ds = new DataSet() SQLiteCommand command = new SQLiteCommand()
using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(command, connection, cmdText, p)
SQLiteDataAdapter da = new SQLiteDataAdapter(command)
da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result")
}
return ds
}
}
}
以上是我根据SqlHelper、OledbHelper类修改而来。我已经使用过。但是不确定是否完善,因为我对SQLite接触时间还不长。欢迎大家批评指正。
1.浮点本来就不完全精确,这个结果很正常。想要完全精确的小数,就不要用浮点,用java.math.BigDecimal来计算。2.select sum(id)/100.0 from test
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)