通过泛型数据,操作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 ...
随机推荐
- HttpContext.Current:异步模式下的疑似陷阱之源
最近园子里首页有好几篇文章都是讲异步编程的,尤其是几篇讲博客园自身的异步化建设的文章,看了以后很有收获. 闲暇之余再重新查查资料温故知新学习一遍,重新认识了SynchronizationContext ...
- Ember.js实现单页面应用程序
1.1.1 摘要 单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. SPA使用AJAX和HTML5创建流畅且响应迅速的Web应用程序,不会经常 ...
- DNS 正向查找与反向查找
原创地址:http://www.cnblogs.com/jfzhu/p/3996323.html 转载请注明出处 所谓正向查找,就是说在这个区域里的记录可以依据名称来查找对应的IP地址.反向查找就是在 ...
- IOS Socket 05-XMPP开始&安装服务器openfire&安装配置客户端
1. 即时通讯技术简介(IM) 即时通讯技术(IM-Instant Messageing)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方 ...
- 04- Shell脚本学习--条件控制和循环语句
条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
- Lua: 好的, 坏的, 和坑爹的
好的 小巧: 20000行C代码 可以编译进182K的可执行文件 (Linux下). 可移植: 只要是有ANSI ...
- session 学习
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程式需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里 ...
- CooMark网页颜色取色表
CooMark网页颜色取色表 艾利斯兰 - #F0F8FF - aliceblue 古董白 - #FAEBD7 - antiquewhite 浅绿色 - #00FFFF - aqua 碧绿色 - #7 ...
- C 中读取键盘码
键盘码在底层开发中经常用到,有时候我们会忘记它们,就要急急忙忙的去找 键-码 对照表查看,其实程序可以自己打印出 键-码 对应值 #include <stdio.h> #include & ...