using System;
using System.Collections.Generic;
using System.Data.SqlClient;//引用数据库客户端
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.Data;
namespace PubilcHelper
{
public class DBHelper
{
//连接数据库
static SqlConnection conn = new SqlConnection("连接字符串“);
static SqlDataReader sdr;
/// <summary>
/// 获取数据流 查询、显示、绑定下拉
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
private static SqlDataReader GetDataReader(string sql)
{
try
{
//打开
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
//命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
sdr = cmd.ExecuteReader();
return sdr;
}
catch (Exception)
{ if (!sdr.IsClosed)//数据流关闭
{
sdr.Close();
}
throw;
} }
/// <summary>
/// 返回受影响行数
/// 添加、删除、修改
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql)
{
try
{
//打开
//判断状态
if (conn.State == ConnectionState.Closed)
{
conn.Open();
} //命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
int n = cmd.ExecuteNonQuery();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return n;
}
catch (Exception)
{ throw;
}
}
/// <summary>
/// 数据流转List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sdr"></param>
/// <returns></returns>
private static List<T> DataReaderToList<T>(SqlDataReader sdr) {
Type t = typeof(T);//获取类型
//获取所有属性
PropertyInfo[] p = t.GetProperties();
//定义集合
List<T> list = new List<T>();
//遍历数据流
while (sdr.Read()) {
//创建对象
T obj = (T)Activator.CreateInstance(t);
//数据流列数
string[] sdrFileName = new string[sdr.FieldCount];
for (int i = ; i < sdr.FieldCount; i++)
{
sdrFileName[i] = sdr.GetName(i).Trim();
}
foreach (PropertyInfo item in p)
{
//判断Model中的属性是否在流的列名中
if (sdrFileName.ToList().IndexOf(item.Name) > -)
{
if (sdr[item.Name] != null && sdr[item.Name]!=DBNull.Value)
{
item.SetValue(obj, sdr[item.Name]);//对象属性赋值
}
else
{
item.SetValue(obj, null);//对象属性赋值
}
}
else {
item.SetValue(obj, null);//对象属性赋值
} }
list.Add(obj);
}
return list;
}
/// <summary>
/// 获取list集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static List<T> GetToList<T>(string sql) {
//获取流数据
SqlDataReader sdr = GetDataReader(sql);
List<T> list = DataReaderToList<T>(sdr);
if (!sdr.IsClosed)//数据流关闭
{
sdr.Close();
}
return list;
}
/// <summary>
/// 返回首行首列
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql)
{
try
{
//打开
//判断状态
if (conn.State == ConnectionState.Closed)
{
conn.Open();
} //命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
object n = cmd.ExecuteScalar();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return n;
}
catch (Exception)
{ throw;
}
} }
}

ADO.net 增删改查封装DBhelper的更多相关文章

  1. Ado.net[增删改查,GET传值]

    1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.c ...

  2. Python pymysql 增删改查封装

    关于pymysql 的增删改查,简单做个封装,方便后面使用直接拿来调用即可. 其中 增删改 的处理其实是一致的,本可以使用统一的方法,但是为了明显区分,这里分开来写了. 直接看代码就即可,如下: # ...

  3. PDO 增删改查封装的类

    Selecting Data 你在mysql_*中是这样做的 <?php $result = mysql_query('SELECT * from table') or die(mysql_er ...

  4. spring学习(四)spring的jdbcTemplate(增删改查封装)

    Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...

  5. 网络系列之 cookie增删改查(封装)

    什么是cookie 呢?简单来说,这个小东西,会记录你的 浏览器 浏览习惯,或 账号密码等, 以便于提高用户的体验感. 举个例子: 你们有没有发现,去淘宝一些购物网站, 你搜索了 椅子, 挑选了一会椅 ...

  6. python之MySQL学习——简单的增删改查封装

    1.增删改查封装类MysqlHelper.py import pymysql as ps class MysqlHelper: def __init__(self, host, user, passw ...

  7. ADO.NET 增删改查的基本用法

    ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...

  8. sql增删改查封装

    App.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  9. ADO.NET ORM数据库增删改查封装(工具一)

    约束 public abstract class BaseModel { public int Id { get; set; } } 连接字符串 public static readonly stri ...

随机推荐

  1. C学习笔记-数据类型

    常量 在程序中不可变化的量,也就不可赋值 常用两种定义方式,#define和const 另外还有一个字符串常量 define #define MAX 100 #define在预编译的时候,其实也是做的 ...

  2. 如何在picture上显示透明Label

  3. 在Linux虚拟机里开启Apache服务

    首先第一步我们配置环境:把yum与Linux ping通 1.我们来下载apache服务,输入:yum install httpd * 2.安装完毕之后默认是死的,要给他启动一下,输入命令:syste ...

  4. Mysql——通配符和正则表达式的使用

    1.like操作符和百分号通配符 %表示任何字符出现任意次数. 查询出表TABLE中NAME字段中任意位置包含i的行: select * from TABLE where NAME like '%i% ...

  5. 阿里redis

    参考: 连接: https://help.aliyun.com/document_detail/43848.html?spm=a2c4g.11186623.2.29.295542efrNOQy0 同R ...

  6. sd卡挂载方法:

    cd mnt//Sdcard创建目录mkdir -m 777 Sdcard//节点挂载mount /dev/msa1  /mnt/Sdcard//抓包./tcpdump -i eth0 tcp por ...

  7. 使用Spring-boot-admin对Spring boot的服务进行监控

    要进行监控,需要两个Project,一个是Admin Server端,负责监控Spring boot的项目,另一个是Admin Client端,是被监控的Spring boot服务. Admin Se ...

  8. 洛谷 P4137 Rmq Problem/mex 题解

    题面 首先,由于本人太菜,不会莫队,所以先采用主席树的做法: 离散化是必须环节,否则动态开点线段数都救不了你: 我们对于每个元素i,插入到1~(i-1)的主席树中,第i颗线段树(权值线段树)对于一个区 ...

  9. 从入门到自闭之Python--MySQL数据库安装

    分类: 关系型数据库:mysql oracle sqlserver sqllite 非关系型数据库:redis mongodb memcache hbase 安装: 网址:https://www.my ...

  10. Asp.net core Identity + identity server + angular + odata + 权限管理

    今天踩了一个坑. 网站发布后看到了一个 error Refused to execute inline script because it violates the following Content ...