自己动手编写一个C#数据库操作的工具类

在开发流程中编写数据访问及操作的代码必不可少,为了不让相关代码在项目内过多的重复编写,所以就要编写一个通用的数据操作相关的类了。使用也很方便,调用使用就可以了。
使用这个工具类会大幅度减少编写数据访问相关的代码量。这里我就把编写流程分别写出来~
以下是工具类的相关代码:


连接数据库的字符串

1.引用配置文件信息(App.config)方式

工具类中代码:

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

配置文件(App.config)的代码:

提示:写在 configuration 块内。

<configuration>
  <connectionStrings>
    <add name="connStr" connectionString="server=.;database=student;uid=sa;pwd=123456" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>
2.普通字符串方式
public static string connStr = "server=.;database=student;uid=sa;pwd=123456";

基础数据操作

1.数据增删改操作
/// <summary>
/// 数据增删改方法
/// </summary>
/// <param name="sql">T-SQL语句</param>
/// <param name="param">参数数组</param>
/// <returns>返回受影响行数</returns>
public static int ExecuteNonQuery(string sql, SqlParameter[] param)
{
	//创建连接
	using (SqlConnection conn = new SqlConnection(connstr))
    {
		using (SqlCommand cmd = new SqlCommand(sql, conn))
		{
			if (param != null) //当我们传递的参数不为空,进行赋值
            {
            	cmd.Parameters.AddRange(param);
			}

			try
			{
				conn.Open(); //打开连接
				return cmd.ExecuteNonQuery(); //执行命令,返回受影响行数
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
				throw;
			}
		}
	}
}
2.数据查询操作
/// <summary>
/// SqlDataAdapter 数据填充查询方法
/// </summary>
/// <param name="sql">T-SQL语句</param>
/// <param name="param">参数数组</param>
/// <returns>返回系统临时内存表</returns>
public static DataTable Query(string sql, SqlParameter[] param)
{
	using (SqlDataAdapter sda = new SqlDataAdapter(sql, connstr))
	{
		if (param != null)
		{
			sda.SelectCommand.Parameters.AddRange(param);
		}
		DataTable dt = new DataTable(); //创建系统虚表
		sda.Fill(dt); // 把查询出来的数据填充到系统虚表当中
		return dt; //返回系统虚表
	}
}

其他数据操作

1.查询数据总行数
/// <summary>
/// 查询数据个数
/// </summary>
/// <param name="sql">T-SQL语句</param>
/// <param name="param">参数数组</param>
/// <returns>数量</returns>
public static object ExecuteScalar(string sql, SqlParameter[] param)
{
	using (SqlConnection conn = new SqlConnection(connstr))
	{
		using (SqlCommand cmd = new SqlCommand(sql, conn))
		{
			if (param != null)
			{
				cmd.Parameters.AddRange(param);
			}
			
			try
			{
				conn.Open();
				return cmd.ExecuteScalar();//执行之后得到我们查询的值
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
				throw;
			}
		}
	}
}
2.读取Excel形成DataTable结果集
/// <summary>
/// 读取Excel形成DataTable结果集
/// </summary>
/// <param name="filePath">文件绝对路径</param>
/// <param name="strSql">查询页签sql</param>
/// <returns>DataTable结果集</returns>
public static DataTable ExcuteDataTableByExcel(string filePath,string strSql) 
{
	string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + filePath + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=0';";
	DataTable dtExcel = new DataTable();
	OleDbConnection odbConn = new OleDbConnection(connetionStr);
	OleDbDataAdapter odbAdapter = new OleDbDataAdapter(strSql, odbConn);
	odbAdapter.Fill(dtExcel);
	return dtExcel;
}

需要引用 System.Data.OleDb;

3.批量导入数据到数据库
/// <summary>
/// 批量导入数据到数据库
/// </summary>
/// <param name="dt">源数据</param>
/// <param name="conn">连接的数据库</param>
/// <param name="transaction">事务</param>
/// <param name="colums">导入的数据列</param>
public static void BulkCopyToDBFormExel(DataTable dt,SqlBulkCopyOptions option, string tableName)
{
	//SqlBulkCopy blkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction);//生成自增的列表
	SqlConnection conn = null;
	SqlTransaction transaction = null;
	SqlBulkCopy blkCopy = null;

	try
    {
		conn = new SqlConnection(connstr);
		conn.Open();
		transaction = conn.BeginTransaction();
		blkCopy = new SqlBulkCopy(conn,option, transaction);
		blkCopy.BatchSize = dt.Rows.Count;
		blkCopy.DestinationTableName = tableName;
		for (int i = 0; i < dt.Columns.Count; i++)
		{
			blkCopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
		}
		blkCopy.WriteToServer(dt);
		transaction.Commit();
	}
	catch (Exception ex)
	{
		throw ex;
	}
	finally 
	{
		blkCopy.Close();
		transaction.Dispose();
		conn.Dispose();
	}
}

注意事项:
1.注意方法内引用的变量名是否与编写的一致。
2.注意编写的数据库连接字符串是否正确。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热血码农ZL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值