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

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

/// <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. C#对七牛云的操作

    1.配置环境 项目中引用 QiNiu.4.0.dll 在webconfig:<add key="USER_AGENT" value="qiniu csharp-sd ...

  2. 《Effective Java》—— 创建与销毁对象

    本篇主要总结的是<Effecticve Java>中关于创建和销毁对象的内容. 比如: 何时以及如何创建对象 何时以及如何避免创建对象 如何确保及时销毁 如何管理对象销毁前的清理动作 考虑 ...

  3. salesforce 零基础学习(二十七)VF页面等待(loading)效果制作

    进行查询的情况下,显示友好的等待效果可以让用户更好的了解目前的状态以及减少用户消极的等待,例如下图所示. VF提供了<apex:actionStatus>标签,,此标签用于显示一个AJAX ...

  4. WPF入门教程系列十一——依赖属性(一)

    一.依赖属性基本介绍 本篇开始学习WPF的另一个重要内容依赖属性. 大家都知道WPF带来了很多新的特性,其中一个就是引入了一种新的属性机制——依赖属性.依赖属性出现的目的是用来实现WPF中的样式.自动 ...

  5. 每天一个linux命令(37):date命令

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...

  6. eclipse导入cordova创建的项目

    eclipse导入cordova创建的项目 看图不说话 run这个MainActivity就可以了,bin目录下会生成APK

  7. 快速入门系列--NOSQL--07MongoDB

    从我第一次听到Nosql这个概念到如今已经走过4个年头了,但仍然没有具体的去做过相应的实践.最近获得一段学习休息时间,购买了Nosql技术实践一书,正在慢慢的学习.在主流观点中,Nosql大体分为4类 ...

  8. OpenCASCADE Application Framework Data Framework Services

    OpenCASCADE Application Framework Data Framework Services eryar@163.com 一.概述Overview OpenCASCADE的数据框 ...

  9. SQL-基础知识

    SQL Server中的关于时间转换和获取时间的方法 1.获取当前UTC时间 GETUTCDATE()

  10. 后端码农谈前端(CSS篇)第六课:盒子模型

    元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素. 提示:背景应用于由内容和内边距.边 ...