通用数据库访问类(泛型实现)
2018-06-18 02:11:22来源:未知 阅读 ()
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data.SqlClient;
using System.Reflection;
using System.Data;
namespace Test
{
public class DataAccess
{
private static string conString;
public DataAccess(string name)
{
//构造方法中读取并保存配置文件中的连接字符串
if (string.IsNullOrEmpty(conString))
{
conString = ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
}
//完成全部表的新增
//新增的sql语句是根据映射关系动态生成的
//T是实体类的类名
public bool Add<T>(T obj) where T : new()
{
bool result = false;
//动态构建sql语句和参数
List<SqlParameter> pars = new List<SqlParameter>();
StringBuilder sb = new StringBuilder();
Type type = typeof(T);
PropertyInfo[] pis = type.GetProperties();
sb.Append("insert into " + type.Name + " values(");
//按照属性循环,向SQL语句中添加参数,参数名=@属性名
foreach (var pi in pis)
{
if (!(pi.Name.StartsWith("Id") || pi.Name.EndsWith("Id")))
{
sb.Append("@" + pi.Name + ",");
//每个属性转换成参数对象
pars.Add(new SqlParameter("@" + pi.Name, pi.GetValue(obj)));
}
else
{
if( Attribute.GetCustomAttribute(pi,typeof(FKAttribute))!=null)
{
sb.Append("@" + pi.Name + ",");
//每个属性转换成参数对象
pars.Add(new SqlParameter("@" + pi.Name, pi.GetValue(obj)));
}
}
}
string sql = sb.ToString();
sql = sql.Substring(0, sql.Length - 1) + ")";
//访问数据库
int rows = SqlHelper.ExecuteNonQuery(conString, CommandType.Text, sql, pars.ToArray());
if (rows > 0) result = true;
return result;
}
}
}
以上只实现了泛型的通用数据库新增功能,撸代码撸累了,剩下的功能改日再更新。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 友元函数 2020-06-10
- 公有继承中派生类Student对基类Person成员的访问 代码参考 2020-04-20
- C++ 字符集 2020-03-26
- 二叉树(1)二叉树基本操作通用接口 2020-02-06
- 通过using声明改变个别成员的可访问性 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash