本人在操作数据库的时候,采用将对象的形式操作传入数据库,经过大量百度和朋友帮助,总结出如下两个接口。用于插入数据,提取数据。

要这样操作的前提条件,就是类名和表名一致,类字段和表字段一致就可以了

/// <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数据库的更多相关文章

  1. C#学习笔记---C#操作SQL数据库

    C#操作SQL数据库 Connection(连接)对象 连接字符串: 形式1.”server=;uid=;pwd=;database=” 形式2.”server=;Intergrated Securi ...

  2. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...

  3. SQL语句:把Excel文件中数据导入SQL数据库中的方法

    1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...

  4. C++操作 SQL数据库 实例 代码步骤

    C++连接SQL数据库第一步 系统配置 1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码. 2.需要在ODBC中进行数据源配置,数 ...

  5. Python 操作 SQL 数据库 (ORCAL)

    MySQLdb.connect是python 连接MySQL数据库的方法,在Python中 import MySQLdb即可使用,至于connect中的参数很简单:host:MySQL服务器名user ...

  6. log4net 写数据到sql数据库

    最近需要把用户的一些行为添加到数据库中,所以想到了用log4net ,如果有别的好的方案,大家可以给我指正. 先看一下配置文件 我这个是控制台文件 app.config <layout type ...

  7. JSP+JDBC实现在可视化页面中插入数据到SQL数据库

    原创 本篇博客创建一个如下图所示的JSP页面,将用户填入的数据插入到对应的数据库中. JSP页面代码: <%@ page language="java" contentTyp ...

  8. 操作Sql数据库帮助类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  9. Java操作SQL数据库(JDBC)

    0.引入驱动jar包 使用jdbc进行具体操作前,需要引入相关数据库的jar包, 或者使用mave管理依赖 <!-- https://mvnrepository.com/artifact/mys ...

随机推荐

  1. Lucene系列-搜索

    Lucene搜索的时候就要构造查询语句,本篇就介绍下各种Query.IndexSearcher是搜索主类,提供的常用查询接口有: TopDocs search(Query query, int n); ...

  2. 阿里云主机(aliyun-Linux) x64安装Redis详解

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/97.html?1455870336 如何在Linux​上安装Redis呢, ...

  3. [Java面试十一]数据库总结.

    问题及描述: --1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course ...

  4. Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend

    Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend 1.1. Jhlabs 好像有了可以叠加算法,但是没有找到doc1 1.2. 自己算法叠加1 1.3. 使用javaf ...

  5. Atitit 开发2d游戏的技术选型attilax总结

    Atitit 开发2d游戏的技术选型attilax总结 1.1. 跨平台跨平台:一定要使用跨平台的gui技术,目前最好的就是h5(canvas,webgl,dom) +js了..1 1.2. 游戏前后 ...

  6. qqzoneQQ空间漏洞扫描器的设计attilax总结

    qqzoneQQ空间漏洞扫描器的设计attilax总结 1.1. 获取对方qq(第三方,以及其他机制)1 1.2. QQ空间的html流程1 1.3. 判断是否有权限1 1.4. 2015年度Web服 ...

  7. 对于System.Net.Http的学习(二)——使用 HttpClient 进行连接

    对于System.Net.Http的学习(一)——System.Net.Http 简介  使用 HttpClient 进行连接 使用 System.Net.Http 命名空间中的 HttpClient ...

  8. Tomcat源码解读系列(一)——server.xml文件的配置

    Tomcat是J2EE开发人员最常用到的开发工具,在Java Web应用的调试开发和实际部署中,我们都可以看到Tomcat的影子.大多数时候,我们可以将Tomcat当做一个黑盒来看待,只需要将编写的J ...

  9. 每天一个linux命令(38):cal 命令

    cal命令可以用来显示公历(阳历)日历.公历是现在国际通用的历法,又称格列历,通称阳历."阳历"又名"太阳历",系以地球绕行太阳一周为一年,为西方各国所通用,故 ...

  10. 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示

    前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...