• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net链接SQLite数据库通用类与web.config的配置

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先下载System.Data.SQLite(本文后面有下载),添加引用System.Data.SQLite到项目中。

①web.config中的配置:

web.config
<?xml version="1.0"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<appSettings>

<add key="SQLiteString" value="~\App_Data\risfeng.db3"/>


</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=DB937BC2D44FF139"/></assemblies></compilation>
</system.web>
</configuration>

②通用类代码:

通用类源码
//===============================================================================
// This file is based on the SQLite Application Block for .NET
// For more information please go to
// http://www.cnblogs.com/baidu-com
//===============================================================================

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Data.SQLite;

/// <summary>
/// DataExecute 的摘要说明。
/// </summary>
public class DataExecute
{
//Database connection strings
public static readonly string sqlite = "Data Source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["SQLiteString"]);


// Hashtable to store cached parameters
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
/// <summary>
/// Execute a SQLiteCommand (that returns no resultset) against the database specified in the connection string
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">a valid connection string for a SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>an int representing the number of rows affected by the command</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
{

int val;
SQLiteCommand cmd = new SQLiteCommand();

using (SQLiteConnection conn = new SQLiteConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

try
{
val = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
string szErrMsg = ex.Message;
val = 0;
}
finally
{
//清除cmd的参数
cmd.Parameters.Clear();
conn.Close();
}
return val;
}
}

/// <summary>
/// Execute a SQLiteCommand (that returns no resultset) against an existing database connection
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">an existing database connection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>an int representing the number of rows affected by the command</returns>
public static int ExecuteNonQuery(SQLiteConnection conn, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
{
int val;

SQLiteCommand cmd = new SQLiteCommand();

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
try
{
val = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
string szErrMsg = ex.Message;
val = 0;
}
finally
{
//清除cmd的参数
cmd.Parameters.Clear();
conn.Close();

}
return val;
}

/// <summary>
/// Execute a SQLiteCommand (that returns no resultset) using an existing SQL Transaction
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="trans">an existing sql transaction</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>an int representing the number of rows affected by the command</returns>
public static int ExecuteNonQuery(SQLiteTransaction trans, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
{
int val;

SQLiteCommand cmd = new SQLiteCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
try
{
val = cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
string szErrMsg = ex.Message;
val = 0;
}
finally
{
//清除cmd的参数
cmd.Parameters.Clear();
}
return val;
}

/// Execute a SQLiteCommand (that returns a resultset and takes no parameters) against the database specified in
/// the connection string.
/// </summary>
/// <remarks>
/// e.g.:
/// SQLiteDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="connectionString">a valid connection string for a SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <returns>a SQLiteDataReader containing the resultset generated by the command</returns>
public static SQLiteDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText)
{
//pass through the call providing null for the set of SQLiteParameters
return ExecuteReader(connectionString, commandType, commandText, (SQLiteParameter[])null);
}

/// <summary>
/// Execute a SQLiteCommand that returns a resultset against the database specified in the connection string
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// SQLiteDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">a valid connection string for a SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>A SQLiteDataReader containing the results</returns>
public static SQLiteDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
{
SQLiteCommand cmd = new SQLiteCommand();
SQLiteConnection conn = new SQLiteConnection(connString);

try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
SQLiteDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}


/// <summary>
/// Execute a SQLiteCommand (that returns a resultset and takes no parameters) against the database specified in
/// the connection string.
/// </summary>
/// <remarks>
/// e.g.:
/// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="connectionString">a valid connection string for a SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <returns>a dataset containing the resultset generated by the command</returns>
public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText)
{
return ExecuteDataset(connectionString, commandType, commandText, (SQLiteParameter[])null);
}

/// <summary>
/// Execute a SQLiteCommand (that returns a resultset) against the database specified in the connection string
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">a valid connection string for a SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>a dataset containing the resultset generated by the command</returns>
public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SQLiteParameter[] commandParameters)
{
using (SQLiteConnection cn = new SQLiteConnection(connectionString))
{
cn.Open();

//调用重载方法
return ExecuteDataset(cn, commandType, commandText, commandParameters);
}
}



/// <summary>
/// Execute a SQLiteCommand (that returns a resultset and takes no parameters) against the provided SQLiteConnection.
/// </summary>
/// <remarks>
/// e.g.:
/// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="connection">a valid SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <returns>a dataset containing the resultset generated by the command</returns>
public static DataSet ExecuteDataset(SQLiteConnection connection, CommandType commandType, string commandText)
{
return ExecuteDataset(connection, commandType, commandText, (SQLiteParameter[])null);
}

/// <summary>
/// Execute a SQLiteCommand (that returns a resultset) against the specified SQLiteConnection
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">a valid SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>a dataset containing the resultset generated by the command</returns>
public static DataSet ExecuteDataset(SQLiteConnection connection, CommandType commandType, string commandText, params SQLiteParameter[] commandParameters)
{
//创建一个SQLiteCommand对象,并对其进行初始化
SQLiteCommand cmd = new SQLiteCommand();
PrepareCommand(cmd, connection, (SQLiteTransaction)null, commandType, commandText, commandParameters);

//创建SQLiteDataAdapter对象以及DataSet
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();

//填充ds
da.Fill(ds);

// 清除cmd的参数集合
cmd.Parameters.Clear();

//返回ds
return ds;
}




/// <summary>
/// Execute a SQLiteCommand that returns the first column of the first record against the database specified in the connection string
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">a valid connection string for a SQLiteConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
{
SQLiteCommand cmd = new SQLiteCommand();

using (SQLiteConnection conn = new SQLiteConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}

/// <summary>
/// Execute a SQLiteCommand that returns the first column of the first record against an existing database connection
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SQLiteParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">an existing database connection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or T-SQL command</param>
/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
/// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
public static object ExecuteScalar(SQLiteConnection conn, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
{

SQLiteCommand cmd = new SQLiteCommand();

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}

/// <summary>
/// add parameter array to the cache
/// </summary>
/// <param name="cacheKey">Key to the parameter cache</param>
/// <param name="cmdParms">an array of SqlParamters to be cached</param>
public static void CacheParameters(string cacheKey, params SQLiteParameter[] cmdParms)
{
parmCache[cacheKey] = cmdParms;
}

/// <summary>
/// Retrieve cached parameters
/// </summary>
/// <param name="cacheKey">key used to lookup parameters</param>
/// <returns>Cached SqlParamters array</returns>
public static SQLiteParameter[] GetCachedParameters(string cacheKey)
{
SQLiteParameter[] cachedParms = (SQLiteParameter[])parmCache[cacheKey];

if (cachedParms == null)
return null;

SQLiteParameter[] clonedParms = new SQLiteParameter[cachedParms.Length];

for (int i = 0, j = cachedParms.Length; i < j; i++)
clonedParms[i] = (SQLiteParameter)((ICloneable)cachedParms[i]).Clone();

return clonedParms;
}

/// <summary>
/// Prepare a command for execution
/// </summary>
/// <param name="cmd">SQLiteCommand object</param>
/// <param name="conn">SQLiteConnection object</param>
/// <param name="trans">SQLiteTransaction object</param>
/// <param name="cmdType">Cmd type e.g. stored procedure or text</param>
/// <param name="cmdText">Command text, e.g. Select * from Products</param>
/// <param name="cmdParms">SQLiteParameters to use in the command</param>
private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, CommandType cmdType, string cmdText, SQLiteParameter[] cmdParms)
{
//判断连接的状态。如果是关闭状态,则打开
if (conn.State != ConnectionState.Open)
conn.Open();
//cmd属性赋值
cmd.Connection = conn;
cmd.CommandText = cmdText;
//是否需要用到事务处理
if (trans != null)
cmd.Transaction = trans;

cmd.CommandType = cmdType;
//添加cmd需要的存储过程参数
if (cmdParms != null)
{
foreach (SQLiteParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
}


登录调用例子:(using using System.Data.SQLite;)

登录例子
      string userloginname = txtLoginName.Text.Trim();
string userpassword = txtPWD.Text.Trim();
string sqlcomtext = "select * from U_Login where U_Name='" + userloginname + "'and U_PWD ='" + userpassword + "'";
SQLiteDataReader dr = DataExecute.ExecuteReader(DataExecute.sqlite, CommandType.Text, sqlcomtext);
if (dr.Read())
{
Session["name"] = txtLoginName.Text.Trim();
Response.Write("<script>alert('登录成功!" + Session["name"] + "')</script>");
}
else
{
Response.Write("<script>alert('密码不正确或用户不存在')</script>");
}

源码和System.Data.SQLite下载 DOWNLOAD


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.net中全局缓存的几种方式发布时间:2022-07-10
下一篇:
asp.net(C#)文件下载的一个问题请教发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap