资源简介
利用反射动态拼接sql。 daohelper属于DAL层,objectdata类属于BLL层,BLL层引用DAL层。映射数据的表继承objectdata类。例如,数据表book,根据字段与属性一一对应的方式创建book类,插入数据库时,直接book.save()
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Data.SqlTypes;
namespace Dal
{
/*
* 操作数据库的方法
* 约定:
* 1)对象属性必须有public string TableName
* 2)属性名与字段名一样。
* 3)主键属性需标记自定义特性KeyFlagAttribute,表示此属性是数据表中的主键
* 4)数据表中每个表必须设有主键
*/
public class DAOHelp
{
#region 属性
///
/// 数据库连接字符串
/// add cjk 2013-12-20
///
private static string connectionString = ConfigurationManager.ConnectionStrings[“mydataConnectionString“].ToString();
#endregion
#region 数据库增、删、改、查
///
/// 数据库的插入或更新的方法
/// add cjk 2013-12-20
///
/// 要存入数据库的对象
public static int Save(object obj)
{
int n = 0;
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
StringBuilder sql = new StringBuilder();
StringBuilder sqlend = new StringBuilder();
//获取对象的属性数组
PropertyInfo[] pro = obj.GetType().GetProperties();
//主键属性数组
List idlist = GetIdProperty(pro);
//要更新的数据表
string table = FindPropertyInfoValue(obj “TableName“).ToString();
//执行的sql语句
string sqltext = string.Empty;
//INSERT INTO table_name (列1 列2...) VALUES (值1 值2....)
sql.Append(“INSERT INTO “ + table + “(“);
sqlend.Append(“ VALUES (“);
foreach (PropertyInfo item in pro)
{//拼接sql语句主体
if (item.Name == “TableName“)
{
continue;
}
else
{
string columnValue = item.GetValue(obj null) + ““;
if (string.IsNullOrEmpty(columnValue))
{//去掉空属性
continue;
}
if (item.PropertyType == typeof(DateTime))
{//时间属性初始化时未赋值会变为默认最小值
DateTime dt;
DateTime.TryParse(columnValue out dt);
if (dt <= SqlDateTime.MinValue.Value)
continue;
}
sql.Append(“ “ + item.Name + ““);
sqlend.Append(“ ‘“ + columnValue + “‘“);
}
}
string start = sql.ToString();
start = start.Substring(0 start.Length - 1) + “)“;
string end = sqlend.ToString();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1426 2013-12-21 14:56 ob
文件 12297 2013-12-21 15:27 DAOHelp.cs
----------- --------- ---------- ----- ----
13723 2
- 上一篇:C#写的串口调试和校验和软件
- 下一篇:C#&SQLite 学生信息管理系统
相关资源
- C# 调用win32 api函数-user32.dll详细说明
- C# 调用BarTender打印条码DEMO
- 大型比赛竞赛抽签系统 可打印 c# vs
- C#编写的Gerber查看器
- lua C# .Net4.0 vs2010 LuaInterface
- C#十六进制编辑器
- 明华URF-35H读卡器 C#读写源码 为大家
- C#文件流读取CSV文件
- c#读写PDF文件sql
- C# winform Socket大文件传输
- c#车牌识别系统附30张测试图片
- 《C#面向对象程序设计》源代码(CS)
- 金旭亮《C#面向对象程序设计》教案
- 试题库管理系统毕业论文(C#)源程序
- 学校网站原代码(C#.NET)
- C#-数据库操作技术-员工管理系统
- c#web开发入门经典
- C#与Matlab混合编程的几种方式
- c# 开发与 mysql数据库实现的增删改查
- C#异步操作 异步查询数据库 异步处理
- Basler相机通过IO触发源码
- [源代码] 《领域驱动设计 (C# 2008 实
- 松下PLC与C#通讯串口调试入门教程.z
- USB 继电器控制器 LCUS-1 保证能用 c#
- C# AES加密解密小工具
- C#圆形按钮,非常漂亮动态~~
- [精]C#仿QQ右下角弹出提示框()
- C#进程间通信-共享内存代码
- 有史以来最简单的三层(C#)
- vb调用c#编写的串口DLL文件(vb源码
评论
共有 条评论