C#.net数据库访问及其操作类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Text;

using System.Text.RegularExpressions;

using System.Security;

/// <summary>

///SqlHelper 是一个数据库的操作类

/// </summary>

public class SqlHelper

{

//这是一个数据库的所有访问

public SqlHelper()

{

//

//TODO: 在此处添加构造函数逻辑

//

}

/*数据库字符串的连接字段的获取*/

public static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();

public static SqlConnection conn = getConn();

//初始化当前页的最后一条数据的编号和最前一条记录的编号

private static int lowerRecord = 0;

private static int upperRecord = 0;

/*获取数据库的连接sqlconnection对象conn*/

#region

/// <summary>

/// 获取数据库的连接对象

/// </summary>

/// <returns>返回一个sqlconnection对象conn</returns>

private static SqlConnection getConn()

{

conn = new SqlConnection(ConnectionString);

return conn;

}

#endregion

/// <summary>

/// 打开数据库连接

/// </summary>

private static void open()

{

if (conn.State == ConnectionState.Closed)

conn.Open();

}

/// <summary>

/// 关闭数据库连接

/// </summary>

private static void close()

{

if (conn.State == ConnectionState.Closed)

conn.Close();

}

/*销毁一个sqlconnection对象conn*/

#region

/// <summary>

/// 销毁conn对象

/// </summary>

///

private void Dispose()

{

try

{

conn.Close();

conn.Dispose();

}

catch { throw; }

}

#endregion

/*执行sql语句,返回受影响的行数*/

#region##执行sql语句,返回受影响的行数

/// <summary>

/// 返回strsql执行后影响的行数。

/// </summary>

/// <param name="strsql">存储过程的名字或者sql命令</param>

/// <param name="cmdParameter">sql语句的参数集合</param>

/// <returns></returns>

public static int ExecuteNonQuery(string strsql, params SqlParameter[] cmdParameter)

{

int effectNum = 0;

close();

open();

SqlCommand cmd = new SqlCommand();

cmd.CommandTimeout = 60;

PrepareCommand(cmd, conn, null, strsql, cmdParameter);

effectNum = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return effectNum;

}

#endregion

/*执行sql语句,返回第一行第一列的数据*/

#region##执行sql语句,返回第一行第一列的数据

/// <summary>

/// 返回第一行第一列的对象:一般用来统计表的记录数

/// </summary>

/// <param name="strsql">要执行的sql语句,这种语句一般包含有:"select count(*) from table [where]"</param>

/// <param name="cmdParameter">执行的sql语句的参数</param>

/// <returns>返回第一行第一列的对象</returns>

public static object ExecuteScalar(string strsql,params SqlParameter[] cmdParameter)

{

try

{

close();

open();

object object1;

SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, conn, null, strsql, cmdParameter);

object1 = cmd.ExecuteScalar();

cmd.Parameters.Clear();

return object1;

}

catch {

close();

throw;

}

}

#endregion

/*执行sql语句得到数据集sqlDataReader对象*/

#region##执行sql语句得到数据集sqlDataReader对象

/// <summary>

/// 获取执行完sql返回的数据结果集

/// </summary>

/// <param name="strsql">要执行的sql语句</param>

/// <param name="cmdParameter">sql语句的参数</param>

/// <returns>一个sqldatareader对象</returns>

public static SqlDataReader ExecuteReader(string strsql, params SqlParameter[] cmdParameter)

{

try

{

close();

open();

SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, conn, null, strsql, cmdParameter);

SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

cmd.Parameters.Clear();

return sdr;

}

catch (Exception e)

{

close();

throw e;

}

}

#endregion

/*执行后返回一个数据集dataset*/

#region##执行后返回一个数据集dataset

/// <summary>

/// 执行后返回一个dataset结果数据集

/// </summary>

/// <param name="strsql">要执行的sql语句</param>

/// <param name="cmdParameter">要执行的sql语句的参数</param>

/// <returns>返回一个dataset结果数据集</returns>

public static DataSet ExecuteDataSet(string strsql, params SqlParameter[] cmdParameter)

{

close();

open();

DataSet ds = new DataSet();

SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, getConn(), null, strsql, cmdParameter);

SqlDataAdapter sda = new SqlDataAdapter(cmd);

try {

sda.Fill(ds);

cmd.Parameters.Clear();

return ds;

}

catch (Exception e)

{

close();

throw e;

}

}

#endregion

/*准备要执行的sql语句*/

#region##准备要执行的sql语句

/// <summary>

/// 准备执行一个命令,拼接参数到cmd中。

/// </summary>

/// <param name="cmd">sql命令</param>

/// <param name="conn">Sql连接</param>

/// <param name="trans">Sql事务</param>

/// <param name="cmdText">命令文本,例如:Select * from Products</param>

/// <param name="cmdParms">执行命令的参数</param>

///

private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)

{

//判断连接的状态。如果是关闭状态,则打开

if (conn.State != ConnectionState.Open)

conn.Open();

//cmd属性赋值

cmd.Connection = conn;

cmd.CommandText = cmdText;

//是否需要用到事务处理

if (trans != null)

cmd.Transaction = trans;

cmd.CommandType = CommandType.Text;

//添加cmd需要的存储过程参数

if (cmdParms != null)

{

foreach (SqlParameter parm in cmdParms)

cmd.Parameters.Add(parm);

}

}

#endregion

/*获得未阅主键集合*/

#region##获得未阅主键集合

/// <summary>

/// 分页使用:获得主键

/// </summary>

/// <param name="query">查询的sql语句</param>

/// <param name="passCount">已阅的记录数</param>

/// <returns>一个主键集合</returns>

private static string RecordID(string query, int passCount)

{

string strID = string.Empty;

close();

open();

SqlCommand cmd = new SqlCommand(query, conn);

SqlDataReader sdr = cmd.ExecuteReader();

while (sdr.Read())

{

if (passCount < 1)

{

strID += "," + "‘"+sdr.GetString(0)+"‘";

}

passCount--;

}

sdr.Close();

if (strID.Trim() != "")

return strID.Substring(1);

else

return "‘‘";

}

#endregion

/*数据分页*/

#region##数据分页

/// <summary>

/// 数据分页

/// </summary>

/// <param name="pageIndex">当前页面index</param>

/// <param name="pageSize">页面大小</param>

/// <param name="strKey">主键</param>

/// <param name="showString">显示字段</param>

/// <param name="queryString">查询sql语句</param>

/// <param name="whereString">条件语句</param>

/// <param name="orderString">排序语句</param>

/// <returns></returns>

public static DataTable ExecutePager(int pageIndex,int pageSize, string strKey, string showString,string queryString,string whereString, string orderString)

{

close();

//open();

DataTable dt = new DataTable();

//判断分页的部分重要属性是否为空或者为非法数据,并纠正

if (pageIndex < 1) pageIndex = 1;

if (pageSize < 3) pageSize = 10;

if (showString.Equals(string.Empty)) showString = "*";

if (orderString.Equals(string.Empty)) orderString = strKey + "asc";

if (whereString.Equals(string.Empty)) whereString = "1=1";

////获得数据库连接对象并打开数据库为以后做准备

//if (conn.State == ConnectionState.Closed)

//{

//    conn.Open();

//}

//获取数据表

string table = string.Format("{0} tempVw",queryString);

int recordCount = dataCount(table);

//定义一个sqlcommand对象

SqlCommand cmdRecord;

//判断总记录数是否小于页面的显示记录数

if (recordCount <= pageSize){

cmdRecord = new SqlCommand(string.Format("select top {0} {1} from {2} {3}",recordCount,showString,table,whereString),conn);

}

else {

//计算当前页的最前和最后一条记录编号

lowerRecord = pageIndex * pageSize;

upperRecord = lowerRecord - pageSize;

//获取还未阅览的主键

string recordIDs = RecordID(string.Format("select top {0} {1} from {2} {3}",lowerRecord, strKey, table,whereString), upperRecord);

string STR = string.Format("select {0} from {1} where {2} in ({3}) order by {4}", showString, table, strKey, recordIDs, orderString);

cmdRecord = new SqlCommand(string.Format("select {0} from {1} where {2} in ({3}) order by {4}", showString, table,strKey,recordIDs, orderString), conn);

}

SqlDataAdapter sda = new SqlDataAdapter(cmdRecord);

sda.Fill(dt);

return dt;

}

#endregion

/*计算总记录数*/

#region##计算总记录数

/// <summary>

/// 计算总的记录数

/// </summary>

/// <param name="table">要查询的表,或者是要查询的语句</param>

/// <returns>总的记录条数</returns>

public static int dataCount(string table)

{

close();

open();

SqlCommand cmdCount = new SqlCommand(string.Format("select count(*) from {0}", table), conn);

//获得总记录数

int recordCount = Convert.ToInt32(cmdCount.ExecuteScalar());

close();

return recordCount;

}

#endregion

/*计算总页数*/

#region##计算总页数

/// <summary>

/// 计算总页数

/// </summary>

/// <param name="queryString">查询sql语句</param>

/// <param name="pageSize">页面大小</param>

/// <returns>总页数</returns>

public static int pageCount(string queryString, int pageSize)

{

string table = string.Format("({0}) tempVw", queryString);

int recordCount = dataCount(table);

int pageCount;

if (recordCount % pageSize == 0)

pageCount = recordCount / pageSize;

else

pageCount = recordCount / pageSize + 1;

return pageCount;

}

#endregion

}

时间: 2024-10-08 10:45:16

C#.net数据库访问及其操作类的相关文章

【Android】内嵌数据库IDE(可视化操作类)

Android开发的朋友应该对数据库内容的管理深有体会,想看一下放入数据库的内容都不是很方便,要么用root的设备导出来看或用第三方的手机版的ide.但是都要求root之后.最近一直在想android方便快捷的方法,今天刚好弄到了数据库这块.就写了一个Activity专门用来看数据库的,功能就是看对应数据库的表及表中的数据库. 效果图 刚写还没来得及美化,后面在使用过程中再时行完善. DBIDEActivity.java import java.util.ArrayList; import ja

Java数据库访问:DBHelper类

压缩包中包含3部分: 1.DBHelper类 2.ResultSet使用详解 3.DBHelper类用法举例 代码下载

mysql数据库访问常见操作

1.登录mysqlmysql -u root -p 2.返回当前日期时间函数:LOCALTIMESTAMP() 或now() 3.删除记录DELETE FROM table_name WHERE condition;举例:delete from temprature_humidity_table where date = "0000-00-00 00:00:00" 4. 插入记录INSERT INTO temprature_humidity_table(date) VALUES(now

c#.net连接access操作类

1.配置web.config文件:配置数据库连接参数 <configuration> <appSettings/> <connectionStrings>    <add name="ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\TeacherSystem\App_Data\db.mdb;Jet OLEDB:Dat

C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace XXX{    /// <summary>    /// 针对SQL Server数据库操作的通用类           /// </sum

C#---数据库访问通用类、Access数据库操作类、mysql类 .

//C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace XXX{    /// <summary>    /// 针对SQL Server数据库操作的通用类           /// </summary&

PDO访问方式操作数据库

mysqli是专门访问MySQL数据库的,不能访问其它数据库.PDO可以访问多种的数据库,它把操作类合并在一起,做成一个数据访问抽象层,这个抽象层就是PDO,根据类操作对应的数据库.mysqli是一个类,PDO也是一个类,只不过PDO这个类功能更加强大. PDO的功能1.访问不同的数据库2.自带事务功能.事务是指同时执行几条sql语句,但是其中1条语句出了错无法执行,那么所有的就都执行失败.3.防止SQL注入攻击. 1.访问不同数据库 下面代码是访问MySQL数据库的,如果访问其它数据库,只需要

防止SQL注入攻击,数据库操作类

如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可以查询到所有数据 SQL数据库字符串注入攻击:需要使用cmd.Parameters这个集合占位符: @key 代表这个位置用这个占位符占住了 Parameters这个集合中将此占位符所代表的数据补全 cmd.Parameters.Clear(); --添加占位符数据之前,要清空此集合cmd.Parameters.A

JDBC访问及操作SQLite数据库

SQLite 是一个开源的嵌入式关系数据库,其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建.连接和使用数据库.  SQLite的下载页面:http://www.sqlite.org/download.html window操作系统下载:sqlite-dll-win32-x86-3081002.zip及sqlite-shell-win32-x86-3081002.zi