通过泛型数据,操作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 ...
随机推荐
- java.rmi.NoSuchObjectException: no such object in table
jmx链接的时候,最简单的例子都行不通,郁闷,出现了: 参考:http://reiz6153.blog.163.com/blog/static/401089152009442723208/ 代码: M ...
- Post方式的Http流请求调用
HttpRequest公共类: public static class HttpRequestAction { /// <summary> /// 发送http请求并返回响应 /// &l ...
- H5 调用摄像头
WebRTC(Web Real-Time Communication,网页实时通信),是一个支持网页浏览器进行实时语音对话或视频对话的API. 1.getUserMedia 要播放摄像头的影像,首先需 ...
- IoC组件Unity再续~根据类型字符串动态生产对象
回到目录 这个根据类型字符串动态去生产一个接口的对象,在实现项目中用途很广,这即省去了配置config文件的麻烦,又使用生产对象变更可配置,你完全可以把这种多态持久化到数据库里或者XML文件里,在使用 ...
- VM~Linux联不上网
使用桥接的链接方式,centos6.4配置静态ip,能ping通网关,但ping 外网时出现 "network is unreachable" 如:ping www.baidu.c ...
- Android开发学习之路-回调实现Service向activity传递数据
开启服务的时候,如果我们是通过bindService来绑定服务并且要向服务传递数据,可以直接在Intent中设置bundle来达到效果,但是如果是我们需要从服务中返回一些数据到Activity中的时候 ...
- Atitit 视频编码与动画原理attilax总结
Atitit 视频编码与动画原理attilax总结 1.1. 第一步:实现有损图像压缩和解压1 1.2. 接着将其量化,所谓量化,就是信号采样的步长,1 1.3. 第二步:实现宏块误差计算2 1.4. ...
- Atitit dsl对于数组的处理以及main函数的参数赋值
Atitit dsl对于数组的处理以及main函数的参数赋值 1.1. 词法解析..添加了[] 方括号的解析支持1 1.2. Ast建立.添加了数组参数的支持..使用了递归下降法..getparam ...
- iOS-数据持久化-对象归档
一.简单说明 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为接档,反序列化), (对象归档的文件是保密的,在磁盘上无法查看文 ...
- ToString()的各种用法(大全)
常用例子: string str = ""; str = .ToString("N"); //生成 12,3456.00 str = .ToString(&qu ...