public static SqlParameter[] get_array_list<T>(ArrayList rows) where T : class
{
Hashtable sql_add = new Hashtable();
Hashtable sql_update = new Hashtable();
Hashtable sql_delete = new Hashtable(); string zsql = ""; int ka = 0, ku = 0, kd = 0;
foreach (Hashtable row in rows)
{ zsql += " select "; PropertyInfo[] properties = typeof(T).GetProperties();
foreach (PropertyInfo p in properties)
{ if (row[p.Name] != null)
{
string zdel_c = Get_Deli(p.PropertyType, row[p.Name].ToString());
zsql += zdel_c + Get_Value(p.PropertyType, row[p.Name].ToString()) + zdel_c + " as [" + p.Name + "] " + ",";
}
else
{ zsql += Get_Default_Value(p.PropertyType) + " as [" + p.Name + "] " + ",";
} }
zsql = zsql.Substring(0, zsql.Length - 1);
String state = row["_state"] != null ? row["_state"].ToString() : "";
if (state == "added")
{
sql_add[ka.ToString()] = zsql;
ka++;
}
if (state == "modified")
{
sql_update[ku.ToString()] = zsql;
ku++;
} if (state == "removed" || state == "deleted")
{
sql_delete[kd.ToString()] = zsql;
kd++;
}
zsql = "";
} SqlParameter[] result = {
new SqlParameter("@username" , SqlDbType.NText),
new SqlParameter(string.Format("@e{0}_add_array" ,typeof(T).Name), SqlDbType.NText),
new SqlParameter(string.Format("@e{0}_update_array" ,typeof(T).Name), SqlDbType.NText),
new SqlParameter(string.Format("@e{0}_delete_array" ,typeof(T).Name), SqlDbType.NText)
}; zsql = "";
for (int k = 0; k < sql_add.Count; k++)
{
zsql += sql_add[k.ToString()].ToString();
if (k < sql_add.Count - 1) zsql += "\n union all \n";
}
result[1].Value = zsql; zsql = "";
for (int k = 0; k < sql_update.Count; k++)
{
zsql += sql_update[k.ToString()].ToString();
if (k < sql_update.Count - 1) zsql += "\n union all \n";
}
result[2].Value = zsql; zsql = "";
for (int k = 0; k < sql_delete.Count; k++)
{
zsql += sql_delete[k.ToString()].ToString();
if (k < sql_delete.Count - 1) zsql += "\n union all \n";
}
result[3].Value = zsql; return result; }

  

erp的核心代码,替代orm的更多相关文章

  1. Android发送短信核心代码

    核心代码:(1)SmsManager manager = SmsManager.getDefault(); //获得默认的消息管理器(2)ArrayList<String> list = ...

  2. [html5+java]文件异步读取及上传核心代码

    html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3 ...

  3. 【五子棋AI循序渐进】关于VCT,VCF的思考和核心代码

    前面几篇发布了一些有关五子棋的基本算法,其中有一些BUG也有很多值得再次思考的问题,在框架和效果上基本达到了一个简单的AI的水平,当然,我也是初学并没有掌握太多的高级技术.对于这个程序现在还在优化当中 ...

  4. .NET核心代码保护策略-隐藏核心程序集

    经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德高人的.想想还是算了,那样估计会引来新一波 ...

  5. 处理部分WordPress核心代码或功能,让你的网站更快

    处理部分WordPress核心代码或功能,让你的网站更快 http://www.wpdaxue.com/speed-up-wordpress.html

  6. OC 冒泡排序 -- 核心代码

    //冒泡 核心代码 for (int i = 0; i < array.count - 1; i++) { int a = [array[i] intValue]; for (int j = i ...

  7. .NET核心代码保护策略

    .NET核心代码保护策略-隐藏核心程序集 经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德 ...

  8. js小功能合集:计算指定时间距今多久、评论树核心代码、字符串替换和去除。

    1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=d ...

  9. 学习Redux之分析Redux核心代码分析

    1. React,Flux简单介绍 学习React我们知道,React自带View和Controller库,因此,实现过程中不需要其他任何库,也可以独立开发应用.但是,随着应用程序规模的增大,其需要控 ...

随机推荐

  1. Hierarchical Tree Traversal in Graphics Pipeline Stages

    BACKGROUND Many algorithms on a graphics processing unit (GPU) may benefit from doing a query in a h ...

  2. Windows安装Jekyll

    Run Jekyll on Windows 夹 Jekyll介绍 安装Ruby 安装DevKit 安装Jekyll 安装Python 安装pip 执行Jekyll Introduction Jekyl ...

  3. Apparatus, system, and method for automatically minimizing real-time task latency and maximizing non-real time task throughput

    An apparatus, system, and method are provided for automatically minimizing Real-Time (RT) task laten ...

  4. for循环中setTimeout,var与let的不同

    先看下面两段代码 for (let i = 0; i < 5; i++) { setTimeout(function () { console.log(i) }, 2000) } for (va ...

  5. 不要完全相信Chrome控制台打印的信息

    以下两张图,第一张是Chrome控制台Network里请求返回的信息,图二是在代码里在请求返回的处理第一行代码用console.log打印的信息. 图一 图二 那么问题来了,为何通过console.l ...

  6. 关于 Mesos,你知道多少?13 个问题带你深入了解 Mesos

    听过不少人在讨论 Mesos,然而并不是很明白 Mesos 到底能够解决什么问题,使用场景是怎样的,周伟涛(国内较早一批接触使用 Docker,Mesos 等技术的开发者)用一句话形容它, Mesos ...

  7. 关于babel和babel-polyfill

    使用babel-cli命令babel xx -d xx把一个js文件转成了ES5的,并在package.json里加了"babel-polyfill": "^6.23.0 ...

  8. Matlab Tricks(二十四)—— title 置于图像之下(包括 subplots 的情形)

    1. 使用 title 的 'position' 属性进行设置 plot(1:10, 1:10), title('y=x', 'position', [5.5, 0]) 2. 使用 xlabel pl ...

  9. 解决mysql连接异常—-com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception

    DBCP连接池连接MySql数据库时,一奇葩数据库设置为30秒内无请求自动断开.超时后链接无法关闭,活动链接数飞奔,最后挂掉. 网上找了一圈,一般是这三种,方法一pass,方法二测试无效可能设置错了吧 ...

  10. Extension of write anywhere file system layout

    A file system layout apportions an underlying physical volume into one or more virtual volumes (vvol ...