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

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

/// <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. java.rmi.NoSuchObjectException: no such object in table

    jmx链接的时候,最简单的例子都行不通,郁闷,出现了: 参考:http://reiz6153.blog.163.com/blog/static/401089152009442723208/ 代码: M ...

  2. Post方式的Http流请求调用

    HttpRequest公共类: public static class HttpRequestAction { /// <summary> /// 发送http请求并返回响应 /// &l ...

  3. H5 调用摄像头

    WebRTC(Web Real-Time Communication,网页实时通信),是一个支持网页浏览器进行实时语音对话或视频对话的API. 1.getUserMedia 要播放摄像头的影像,首先需 ...

  4. IoC组件Unity再续~根据类型字符串动态生产对象

    回到目录 这个根据类型字符串动态去生产一个接口的对象,在实现项目中用途很广,这即省去了配置config文件的麻烦,又使用生产对象变更可配置,你完全可以把这种多态持久化到数据库里或者XML文件里,在使用 ...

  5. VM~Linux联不上网

    使用桥接的链接方式,centos6.4配置静态ip,能ping通网关,但ping 外网时出现 "network is unreachable" 如:ping www.baidu.c ...

  6. Android开发学习之路-回调实现Service向activity传递数据

    开启服务的时候,如果我们是通过bindService来绑定服务并且要向服务传递数据,可以直接在Intent中设置bundle来达到效果,但是如果是我们需要从服务中返回一些数据到Activity中的时候 ...

  7. Atitit 视频编码与动画原理attilax总结

    Atitit 视频编码与动画原理attilax总结 1.1. 第一步:实现有损图像压缩和解压1 1.2. 接着将其量化,所谓量化,就是信号采样的步长,1 1.3. 第二步:实现宏块误差计算2 1.4. ...

  8. Atitit dsl对于数组的处理以及main函数的参数赋值

    Atitit dsl对于数组的处理以及main函数的参数赋值 1.1. 词法解析..添加了[] 方括号的解析支持1 1.2. Ast建立.添加了数组参数的支持..使用了递归下降法..getparam ...

  9. iOS-数据持久化-对象归档

    一.简单说明 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为接档,反序列化), (对象归档的文件是保密的,在磁盘上无法查看文 ...

  10. ToString()的各种用法(大全)

    常用例子: string str = ""; str = .ToString("N"); //生成 12,3456.00 str = .ToString(&qu ...