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

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

/// <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. 用python实现的百度新歌榜、热歌榜下载器

    首先声明,本工具仅仅为学习之用,不涉及版权问题,因为百度音乐里面的歌曲本身是可以下载的,而且现在百度也提供了”百度音乐播放器”,可以通过这个工具进行批量下载. 我当时做这个工具的时候,百度还没有提供” ...

  2. Lucene系列-分析器

    分析器介绍 搜索的基础是对文本信息进行分析,Lucene的分析工具在org.apache.lucene.analysis包中.分析器负责对文本进行分词.语言处理得到词条,建索引和搜索的时候都需要用到分 ...

  3. Git学习笔记(1)——安装,配置,创建库,文件添加到库

    初次接触git,为了记忆深刻,把学习的简单流程记录下来. 本文记录了Git在Ubuntu上的安装,配置,以及创建版本库和往库中添加文件的过程. 1.Git的安装:(Ubuntu-Linux非常友好的安 ...

  4. C++ 引用

    本文主要记录了C++中的引用特性,总结了一下代码示例和错误. 简单的引用 引用是C++的特性,指针是C语言的特性.上面代码结果如下: 20 20 100 20 true 引用和被引用的对象是占用同一个 ...

  5. Properties

    java.util 类 Properties 因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法.但强烈反对使用这两个方法 ...

  6. 使用OData技术遇到的问题及解决办法

    “System.NotSupportedException”类型的未经处理的异常在 Microsoft.Data.Services.Client.dll 中发生 其他信息: 对此 POST 请求的响应 ...

  7. lua随机数的问题

    在看 lua 的 math.random 函数的时候发现一个问题,就是在没有重新设置随机种子的时候, random 返回的前几个随机数并不是那么特别随机,尤其当随机范围很小的时候,比如 100 左右的 ...

  8. [Java面试十二]数据库概念相关

    1. 什么是存储过程?它有什么优点? 答:存储过程是一组予编译的SQL语句,它的优点有:     允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次.     允许更快执 ...

  9. Atitit 词法分析器的设计最佳实践说明attilax总结

    Atitit 词法分析器的设计最佳实践说明attilax总结 1.1. 手写的优点:代码可读,对源代码中的各种错误给出友好的提示信息,用户体验高,1 1.2. 使用状态表比较简单,dfa比较麻烦1 1 ...

  10. Atitit 文档资料管理同步解决方案

    Atitit 文档资料管理同步解决方案 流程 生成快照, 操作. 使用快照与dir对比,生成操作日志 /atiplat_cms/src/com/attilax/sync/SyncUtil.java p ...