通过泛型数据,操作SQL数据库
本人在操作数据库的时候,采用将对象的形式操作传入数据库,经过大量百度和朋友帮助,总结出如下两个接口。用于插入数据,提取数据。
要这样操作的前提条件,就是类名和表名一致,类字段和表字段一致就可以了
/// <summary>
/// 插入一个数据
/// </summary>
/// <param name="pole">需要插入的数据</param>
/// <returns></returns>
public int Insert<T>(T pole)
{
string strconn = DBHelp.GetDBConnection();
string strSQL = "INSERT INTO " + typeof(T).Name + " VALUES (";
FieldInfo[] entityFilds = typeof(T).GetFields();
for (int i = 0; i < entityFilds.Length; i++)
{
FieldInfo field = entityFilds[i];
if (field.FieldType.Name.ToLower() == "string")
{
strSQL += "'" + field.GetValue(pole) + "',";
}
else
{
strSQL += field.GetValue(pole) + ",";
}
}
strSQL = strSQL.TrimEnd(',') + ")";
int intRtn = DBHelp.ExeSqlCommand(strSQL, strconn);
return intRtn;
}
/// <summary>
/// 获取当前数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public IList<T> getPoleLst<T>()
{
IList<T> _lst = new List<T>();
string strconn = DBHelp.GetDBConnection();
string strSQL = "select * from " + typeof(T).Name;
DataSet ds = DBHelp.GetDataSet(strSQL, strconn);
if (ds.Tables != null && ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
FieldInfo[] entityFilds = typeof(T).GetFields();
T t = Activator.CreateInstance<T>();//创建一个T对象
foreach (DataRow dr in dt.Rows)
{
//通过属性集合迭代出每一个属性对象
foreach (FieldInfo item in entityFilds)
{
//循环迭代出DataTable的每一列
for (int j = 0; j < dt.Columns.Count; j++)
{
//判断当前迭代出的属性名称是否和迭代出的DataTable的列名称一致
if (item.Name.ToLower().Equals(dt.Columns[j].ColumnName.ToLower()))
{
//判断当前DataTable的单列值是否为null
if (dr[j] != DBNull.Value)
{
//根据实际对象的字段类型转换
string itemTypeName = item.FieldType.Name.ToLower();
object value = new object();
switch (itemTypeName)
{
case "uint16": value = Convert.ToUInt16(dr[j]); break; case "uint32": value = Convert.ToUInt32(dr[j]); break; case "uint64": value = Convert.ToUInt64(dr[j]); break; default: value = dr[j]; break;
}
item.SetValue(t, value);//将当前DataTable的单列值赋予相匹配的属性,否则赋予一个null值.
}
else
item.SetValue(t, null);
break;
}
}
}
_lst.Add(t);
}
}
ds.Dispose();
return _lst;
}
通过泛型数据,操作SQL数据库的更多相关文章
- C#学习笔记---C#操作SQL数据库
C#操作SQL数据库 Connection(连接)对象 连接字符串: 形式1.”server=;uid=;pwd=;database=” 形式2.”server=;Intergrated Securi ...
- Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- C++操作 SQL数据库 实例 代码步骤
C++连接SQL数据库第一步 系统配置 1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码. 2.需要在ODBC中进行数据源配置,数 ...
- Python 操作 SQL 数据库 (ORCAL)
MySQLdb.connect是python 连接MySQL数据库的方法,在Python中 import MySQLdb即可使用,至于connect中的参数很简单:host:MySQL服务器名user ...
- log4net 写数据到sql数据库
最近需要把用户的一些行为添加到数据库中,所以想到了用log4net ,如果有别的好的方案,大家可以给我指正. 先看一下配置文件 我这个是控制台文件 app.config <layout type ...
- JSP+JDBC实现在可视化页面中插入数据到SQL数据库
原创 本篇博客创建一个如下图所示的JSP页面,将用户填入的数据插入到对应的数据库中. JSP页面代码: <%@ page language="java" contentTyp ...
- 操作Sql数据库帮助类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- Java操作SQL数据库(JDBC)
0.引入驱动jar包 使用jdbc进行具体操作前,需要引入相关数据库的jar包, 或者使用mave管理依赖 <!-- https://mvnrepository.com/artifact/mys ...
随机推荐
- Lucene系列-facet
1.facet的直观认识 facet:面.切面.方面.个人理解就是维度,在满足query的前提下,观察结果在各维度上的分布(一个维度下各子类的数目). 如jd上搜“手机”,得到4009个商品.其中品牌 ...
- Git bash 配置ssh key
问题描述 昨天为了配置Qt create中的Git,把我一直在使用的Github删除了,今本以为,这样git的一些配置还在,可是,今天上传一些提交的时候,提示我,git没有密钥.梳理一下,这个简单的配 ...
- linux环境 c 中如何执行shell命令
1 system 相当简单: int system(const char *command); system("ps -aux"); 2 popen popen有两个参数,第一个是 ...
- jQuery学习-打字游戏
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- MongoDB更新文档
说明:来看一下关系型数据库的update语句 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某 其中where子句就类似查询文本,定位要更改的子表,set子句类似于修改器,更 ...
- sql server 链接到本地实例出错
我在使用VS2010测试package的时候,突然发现sql server 链接到本地实例出错,出错信息如下: “ A network-related or instance-specific err ...
- css text-align-last设置末尾文本对齐方式
text-align-last:auto | start | end | left | right | center | justify auto: 无特殊对齐方式. left: 内容左对齐. cen ...
- 被废了的display:box弹性盒模型
这几天在研究弹性布局,看书中写的是display:box,结果在chrome浏览器中是正常的,想着移动端大部分浏览器也是webkit内核的应该也没啥问题,结果确实没问题,但仔细一看,高度呢?好吧,严重 ...
- 专为设计师而写的GitHub快速入门教程
专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li 原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...
- WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 jquery (区分大小写)的 ScriptRes ...