通过泛型数据,操作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 ...
随机推荐
- jquery获取checkbox的值并post提交
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Stealth视频教程学习笔记(第一章)
Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- Javascript函数节流
最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> < ...
- 青蛙的约会 java版
参考http://blog.csdn.net/polossk/article/details/9799735 package acm; public class FrogDate { public s ...
- Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结
Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 ...
- iOS-性能优化2
性能优化总结2 iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的 TableView 应用没什么好印象.还记得12306么,那个速度 ...
- java 线程安全 Lock
java.util.concurrent.locks 对于线程安全我们前面使用了synchronized关键字,对于线程的协作我们使用Object.wait()和Object.notify().在JD ...
- 每天一个linux命令(22):find 命令的参数详解
find一些常用参数的一些常用实例和一些具体用法和注意事项. 1.使用name选项: 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用. 可以使用某种文件名模式来匹配 ...
- javascript_basic_03之函数、循环、数组
1.函数:函数(Function),方法(Method),过程(Procedure): 2.默认为假的情况: ①if(0){}:②if(0.0){}:③if(null){}:④if("&qu ...
- 解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析
许可证编译器 (Lc.exe) 的作用是读取包含授权信息的文本文件,并产生一个可作为资源嵌入到公用语言运行库可执行文件中的 .licenses 文件. 在使用第三方类库时,经常会看到它自带的演示程序中 ...