资源简介
利用反射动态拼接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# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
- C# 使用ListView控件实现图片浏览器(源
- C#简单窗体聊天程序
- C#指纹识别系统程序 报告
- c# 高校档案信息管理系统
- c#向word文件插入图片
- C#左侧导航菜单(动态生成)
评论
共有 条评论