在net和mono中都可用的sqlite数据库连接类
来源:互联网 发布:2016义务兵退伍费算法 编辑:程序博客网 时间:2024/06/05 15:08
asp.net在net和mono中都可用的sqlite数据库连接类,并执行参数化查询
using System;
using System.Configuration;using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Data.SQLite;
using System.IO;
using System.Data;
using System.Text;
using System.Collections;
/// <summary>
/// neirong 的摘要说明
/// </summary>
public class MyClass
{
public string DBPath = "";
public string WebPath = "";
public MyClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
DBPath = System.Web.HttpContext.Current.Server.MapPath("/mydb.db");//数据库路径
WebPath = System.Web.HttpContext.Current.Server.MapPath("");//网站路径
}
/// <summary>
/// 参数化查询
/// </summary>
/// <returns>返回二维数组,当第一维两个值为空时没有查到</returns>
/// <param name="sqlText">要查询的sql语句</param>
/// <param name="sqlItem">sql语句中的参数项数组,包含@</param>
/// <param name="valItem">参数值数组,均为字符串类型</param>
/// <param name="valType">参数类型数组,现在支持string、int、bigint、datatime四种类型</param>
public string[,] SelectValue(string sqlText, string[] sqlItem, string[] valItem, string[] valType)
{
string[,] returnval;
ArrayList val = new ArrayList();
SQLiteConnection conn = new SQLiteConnection("Data Source=" + DBPath);
conn.Open();
SQLiteCommand cmd = new SQLiteCommand(sqlText, conn);
int i = 0, j = 0, h = 0;
for (i = 0; i < sqlItem.Length; i++)
{
if (valType[i] == "string")
cmd.Parameters.AddWithValue(sqlItem[i], valItem[i]);
else if (valType[i] == "int")
cmd.Parameters.AddWithValue(sqlItem[i], Convert.ToInt32(valItem[i]));
else if (valType[i] == "bigint")
cmd.Parameters.AddWithValue(sqlItem[i], Convert.ToInt64(valItem[i]));
else if (valType[i] == "datatime")
cmd.Parameters.AddWithValue(sqlItem[i], Convert.ToDateTime(valItem[i]));
}
SQLiteDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
for (i = 0; i < reader.FieldCount; i++)
{
val.Add(reader[i].ToString().Trim());
}
}
if (val.Count != 0)
{
int lieshu = reader.FieldCount;//列数
int hangshu = val.Count / lieshu;//行数
string[,] zhi1 = new string[hangshu, lieshu];
for (i = 0; i < hangshu; i++)
for (j = 0; j < lieshu; j++)
{
zhi1[i, j] = val[h].ToString();
h++;
}
returnval = zhi1;
}
else
{
string[,] zhi1 = { { "", "" } };
returnval = zhi1;
}
conn.Close();
return returnval;
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="sqltext">待执行的sql语句</param>
public void RunSQL(string sqltext)
{
SQLiteConnection conn = new SQLiteConnection("Data Source=" + DBPath);
conn.Open();
SQLiteCommand com = new SQLiteCommand(conn);
com.CommandText = sqltext;
com.ExecuteNonQuery();
conn.Close();
}
/// <summary>
/// 参数化执行sql语句
/// </summary>
/// <param name="sqlText">要执行的sql语句</param>
/// <param name="sqlItem">sql语句中的参数项数组,包含@</param>
/// <param name="valItem">参数值数组,均为字符串类型</param>
/// <param name="valType">参数类型数组,现在支持string、int、bigint、datatime四种类型</param>
public void RunSQL(string sqlText, string[] sqlItem, string[] valItem, string[] valType)
{
SQLiteConnection conn = new SQLiteConnection("Data Source=" + DBPath);
conn.Open();
SQLiteCommand cmd = new SQLiteCommand(sqlText, conn);
int i = 0, j = 0, h = 0;
for (i = 0; i < sqlItem.Length; i++)
{
if (valType[i] == "string")
cmd.Parameters.AddWithValue(sqlItem[i], valItem[i]);
else if (valType[i] == "int")
cmd.Parameters.AddWithValue(sqlItem[i], Convert.ToInt32(valItem[i]));
else if (valType[i] == "bigint")
cmd.Parameters.AddWithValue(sqlItem[i], Convert.ToInt64(valItem[i]));
else if (valType[i] == "datatime")
cmd.Parameters.AddWithValue(sqlItem[i], Convert.ToDateTime(valItem[i]));
}
cmd.ExecuteNonQuery();
conn.Close();
}
}
调用方法
MyClass a = new MyClass();
string sqltext = "select * from User where Name=@name and PassWord=@password";
string[] valstring1 = { "@name", "@password" };
string[] valstring2 = { "yy", "123" };
string[] valstring3 = { "string", "string" };
string[,] val = a.SelectValue(sqltext,valstring1,valstring2,valstring3);
阅读全文
0 0
- 在net和mono中都可用的sqlite数据库连接类
- 1602显示程序,在硬件和proteus中都可用(注意参数的修改)
- Sqlite在.NET下的使用和Sqlite数据库清理
- SQLite数据库连接字符串.net
- .NET 和 Mono 的一点历史
- 在父类的构造函数和析构函数中都不能调用纯虚函数
- 在父类的构造函数和析构函数中都不能调用纯虚函数
- mono:java和.net
- Rotor, Mono 和 .NET
- 在Ubuntu操作系统上安装mono和jexus搭建.NET的运行环境
- 在Ubuntu操作系统上安装mono和jexus搭建.NET的运行环境
- 在Ubuntu操作系统上安装mono和jexus搭建.NET的运行环境
- 怎样建立在整个类中都恒定的常量
- VB.net+SQLite 轻量级数据库连接
- SQLite在.net的应用
- 在VS2013和GCC中都使用中文
- Mono v1.2.51 - 开源版本的.NET框架,Mono,Mono下载,Mono框架开发,Mono学习,Mono是什么,Mono浅谈,Mono研究
- 扒一扒.net、.net framework、mono和Unity
- 模拟照相机取镜
- VC编译调试比特币源码
- screen
- 模板匹配
- ubuntu无法正常登陆----登陆之后只显示桌面背景和鼠标
- 在net和mono中都可用的sqlite数据库连接类
- 什么是多线程?以tomcat处理n个请求为例
- 图的算法floryd
- Laravel程序启动
- ISO8583报文64域
- <Shader> 自定义光照模型
- HTTP错误汇总
- Linux Shell 数据重定向详解
- Spring Security中设置entry-point-ref="第三方登录入口"的作用