WangSql 1.0博文阅读: http://www.cnblogs.com/deeround/p/6204610.html

基于1.0做了以下重大改动:

1.多数据实现方式调整

2.使用EmitMapper代替反射实现DbDataReader转实体

3.源码在文章最后提供下载地址

核心功能介绍

多数据支持,采用配置文件形式实现多种数据实现,只需要指定数据库驱动即可实现所支持所有数据库任意切换。

SQL自行管理,大大提高SQL可控性以及SQL性能优化。

高效实体转换,集成EmitMapper来实现DbDataReader转实体。

实现分页查询,可自行重写生成分页语句方法和获取总数语句方法。

接口列表(ISqlExe)

原始方法

int ExecuteNonQuery(string sql);

int ExecuteNonQuery(string sql, IDbDataParameter par);

int ExecuteNonQuery(string sql, IDbDataParameter[] par);

IDataReader ExecuteReader(string sql);

IDataReader ExecuteReader(string sql, IDbDataParameter par);

IDataReader ExecuteReader(string sql, IDbDataParameter[] par);

DataTable ExecuteTable(string sql);

DataTable ExecuteTable(string sql, IDataParameter par);

DataTable ExecuteTable(string sql, IDataParameter[] par);

基本方法

int NonQuery(string sql);

int NonQuery(string sql, object para);

T QueryObject<T>(string sql);

T QueryObject<T>(string sql, object para);

IList<T> QueryList<T>(string sql);

IList<T> QueryList<T>(string sql, object para);

DataTable QueryTable(string sql);

DataTable QueryTable(string sql, object para);

分页方法

IList<T> QueryPage<T>(string sql, int pageIndex, int pageSize, out int totalCount);

DataTable QueryPage(string sql, int pageIndex, int pageSize, out int totalCount);

IList<T> QueryPage<T>(string sql, object para, int pageIndex, int pageSize, out int totalCount);

DataTable QueryPage(string sql, object para, int pageIndex, int pageSize, out int totalCount);

string CreateSqlPageTag(SqlRequest sqlRequest, int pageIndex, int pageSize);

string CreateSqlCountTag(SqlRequest sqlRequest);

事务方法

bool Transaction(Hashtable sqlList);

IMyTransaction BeginTransaction();

其他方法

SqlRequest GetRunSqlRequest(string sql);

SqlRequest GetRunSqlRequest(string sql, object para);

事务接口列表(IMyTransaction)

void Commit();

void Rollback();

int NonQuery(string sql);

int NonQuery(string sql, object para);

T QueryObject<T>(string sql);

T QueryObject<T>(string sql, object para);

IList<T> QueryList<T>(string sql);

IList<T> QueryList<T>(string sql, object para);

DataTable QueryTable(string sql);

DataTable QueryTable(string sql, object para);

具体使用方法参考1.0或者下载源码,里面有测试项目。

WangSql 1.0博文阅读: http://www.cnblogs.com/deeround/p/6204610.html

测试代码

  1. static void TestStart()
  2. {
  3. Write("================测试开始==================");
  4.  
  5. string rootPath = System.AppDomain.CurrentDomain.BaseDirectory;
  6. rootPath = rootPath.TrimEnd('\\');
  7. rootPath = rootPath.Substring(, rootPath.LastIndexOf('\\'));
  8. rootPath = rootPath.Substring(, rootPath.LastIndexOf('\\'));
  9. string conn = string.Format(@"Data Source={0}\db3;", rootPath);
  10. var sqlExe = new TestSqlExe("SQLite3", conn);
  11. sqlExe.Factory.ProviderConfig(rootPath + "\\providers.config");
  12.  
  13. ////Sql Server
  14. //conn = "Data Source = WIN-L8TOD2M74CD\\SQLEXPRESS;Initial Catalog = test;User Id = sa;Password = 123456;";
  15. //sqlExe = new TestSqlExe("sqlServer1.1", conn);
  16.  
  17. Write("初始化完成");
  18.  
  19. string id = string.Empty;
  20.  
  21. #region insert
  22. Write("*********** insert 开始 *************");
  23. for (int i = ; i < ; i++)
  24. {
  25. var site = new Site()
  26. {
  27. Id = Guid.NewGuid().ToString("N"),
  28. Name = "site1",
  29. DomainEWQ = "www.baidu.com" + Guid.NewGuid().ToString("N"),
  30. Area = "web",
  31. Remark = "测试"
  32. };
  33. id = site.Id;
  34. string sqlInsert = "insert into Site(Id,Name,Domain,Area,Remark) values('$Id$',#Name#,'$Domain$',#Area#,#Remark#)";
  35. var resultInsert = sqlExe.NonQuery(sqlInsert, site);
  36. Write("插入第" + (i + ) + "条,插入结果:" + resultInsert);
  37. }
  38. Write("*********** insert 通过 *************");
  39. #endregion
  40.  
  41. #region update
  42. Write("*********** update 开始 *************");
  43. string sqlUpdate = "update Site set Remark=#Remark# where Id=#Id#";
  44. var site1 = new Site()
  45. {
  46. Remark = "测试1",
  47. Id = id
  48. };
  49. var resultUpdate = sqlExe.NonQuery(sqlUpdate, site1);
  50. Write("更新结果:" + resultUpdate);
  51. Write("*********** update 通过 *************");
  52. #endregion
  53.  
  54. #region select
  55. Write("*********** select 开始 *************");
  56. string sqlSelect = "select * from Site";
  57. var resultSelect = sqlExe.QueryObject<Site>(sqlSelect);
  58. Write("查询结果:" + resultSelect.DomainEWQ);
  59. var resultSelect1 = sqlExe.QueryList<Site>(sqlSelect);
  60. Write("查询结果:" + resultSelect1.Count);
  61.  
  62. int count = ;
  63. var resultSelect2 = sqlExe.QueryPage<Site>(sqlSelect, , , out count);
  64. Write("分页查询结果:" + resultSelect2.Count + ",总数:" + count);
  65. Write("*********** select 通过 *************");
  66. #endregion
  67.  
  68. #region trans
  69. Write("*********** trans 开始 *************");
  70. using (var trans = sqlExe.BeginTransaction())
  71. {
  72. try
  73. {
  74. string sqlTrans1 = "update Site set Remark=#Remark# where Id=#Id#";
  75. var site2 = new Site()
  76. {
  77. Remark = "测试2",
  78. Id = id
  79. };
  80. var result1 = trans.NonQuery(sqlTrans1, site1);
  81. Write("trans NonQuery1结果:" + result1);
  82.  
  83. string sqlTrans2 = "update Site set Name=#Name# where Id=#Id#";
  84. var site3 = new Site()
  85. {
  86. Name = "SASASA3",
  87. Id = id
  88. };
  89. var result2 = trans.NonQuery(sqlTrans2, site1);
  90. Write("trans NonQuery2结果:" + result2);
  91.  
  92. trans.Commit();
  93. }
  94. catch
  95. {
  96. trans.Rollback();
  97. }
  98. }
  99. Write("*********** trans 通过 *************");
  100. #endregion
  101.  
  102. #region delete
  103. Write("*********** delete 开始 *************");
  104. string sqlDelete = "delete from Site where Id=#Id#";
  105. var resultDelete = sqlExe.NonQuery(sqlDelete, id);
  106. Write("删除一条结果:" + resultDelete);
  107. string sqlDelete1 = "delete from Site";
  108. var resultDelete1 = sqlExe.NonQuery(sqlDelete1);
  109. Write("删除全部结果:" + resultDelete1);//SQLite3删除全部返回是0,不知道是不是这个驱动的BUG,其他数据库不会
  110. Write("*********** delete 通过 *************");
  111. #endregion
  112.  
  113. Write("================测试通过==================");
  114. }

驱动配置文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <providers>
  3. <provider
  4. name="sqlServer1.0"
  5. description="Microsoft SQL Server 7.0/2000, provider V1.0.3300.0 in framework .NET V1.0"
  6. enabled="false"
  7. assemblyName="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection"
  8. commandClass="System.Data.SqlClient.SqlCommand"
  9. parameterClass="System.Data.SqlClient.SqlParameter"
  10. parameterDbTypeClass="System.Data.SqlDbType"
  11. parameterDbTypeProperty="SqlDbType"
  12. dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
  13. commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"
  14. usePositionalParameters="false"
  15. useParameterPrefixInSql="true"
  16. useParameterPrefixInParameter="true"
  17. parameterPrefix="@"/>
  18. <provider
  19. name="sqlServer1.1"
  20. description="Microsoft SQL Server 7.0/2000, provider V1.0.5000.0 in framework .NET V1.1"
  21. enabled="false"
  22. assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection"
  23. commandClass="System.Data.SqlClient.SqlCommand"
  24. parameterClass="System.Data.SqlClient.SqlParameter"
  25. parameterDbTypeClass="System.Data.SqlDbType"
  26. parameterDbTypeProperty="SqlDbType"
  27. dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
  28. commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"
  29. usePositionalParameters="false"
  30. useParameterPrefixInSql="true"
  31. useParameterPrefixInParameter="true"
  32. parameterPrefix="@"
  33. queryPageTag="select wang1.*
  34. from(
  35. select row_number() over(order by (select )) as rowno,wang.*
  36. from
  37. (
  38. {sqlTag}
  39. ) wang
  40. ) wang1
  41. where wang1.rowno between {pageStart} and {pageEnd}"/>
  42. <provider
  43. name="sqlServer2.0"
  44. enabled="false"
  45. description="Microsoft SQL Server 2005, provider V2.0.50215.0 in framework .NET V2.0"
  46. assemblyName="System.Data, Version=2.0.50215.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  47. connectionClass="System.Data.SqlClient.SqlConnection"
  48. commandClass="System.Data.SqlClient.SqlCommand"
  49. parameterClass="System.Data.SqlClient.SqlParameter"
  50. parameterDbTypeClass="System.Data.SqlDbType"
  51. parameterDbTypeProperty="SqlDbType"
  52. dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
  53. commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
  54. usePositionalParameters = "false"
  55. useParameterPrefixInSql = "true"
  56. useParameterPrefixInParameter = "true"
  57. parameterPrefix="@"/>
  58. <provider name="OleDb1.1"
  59. description="OleDb, provider V1.0.5000.0 in framework .NET V1.1"
  60. enabled="false"
  61. assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OleDb.OleDbConnection"
  62. commandClass="System.Data.OleDb.OleDbCommand"
  63. parameterClass="System.Data.OleDb.OleDbParameter"
  64. parameterDbTypeClass="System.Data.OleDb.OleDbType"
  65. parameterDbTypeProperty="OleDbType"
  66. dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"
  67. commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"
  68. usePositionalParameters="true"
  69. useParameterPrefixInSql="false"
  70. useParameterPrefixInParameter="false"
  71. parameterPrefix=""/>
  72. <provider
  73. name="Odbc1.1"
  74. description="Odbc, provider V1.0.5000.0 in framework .NET V1.1"
  75. enabled="false"
  76. assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.Odbc.OdbcConnection"
  77. commandClass="System.Data.Odbc.OdbcCommand"
  78. parameterClass="System.Data.Odbc.OdbcParameter"
  79. parameterDbTypeClass="System.Data.Odbc.OdbcType"
  80. parameterDbTypeProperty="OdbcType"
  81. dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"
  82. commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"
  83. usePositionalParameters="true"
  84. useParameterPrefixInSql="false"
  85. useParameterPrefixInParameter="false"
  86. parameterPrefix="@"/>
  87. <provider
  88. name="oracle9.2"
  89. description="Oracle, Oracle provider V9.2.0.401"
  90. enabled="false"
  91. assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
  92. commandClass="Oracle.DataAccess.Client.OracleCommand"
  93. parameterClass="Oracle.DataAccess.Client.OracleParameter"
  94. parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
  95. parameterDbTypeProperty="OracleDbType"
  96. dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
  97. commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
  98. usePositionalParameters="false"
  99. useParameterPrefixInSql="true"
  100. useParameterPrefixInParameter="false"
  101. parameterPrefix=":"
  102. useDeriveParameters="false"/>
  103. <provider
  104. name="oracle10.1"
  105. description="Oracle, oracle provider V10.1.0.301"
  106. enabled="false"
  107. assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
  108. commandClass="Oracle.DataAccess.Client.OracleCommand"
  109. parameterClass="Oracle.DataAccess.Client.OracleParameter"
  110. parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
  111. parameterDbTypeProperty="OracleDbType"
  112. dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
  113. commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
  114. usePositionalParameters="true"
  115. useParameterPrefixInSql="true"
  116. useParameterPrefixInParameter="true"
  117. parameterPrefix=":"
  118. useDeriveParameters="false"
  119. queryPageTag="select wang1.*
  120. from(
  121. select rownum as rowno,wang.*
  122. from
  123. (
  124. {sqlTag}
  125. ) wang
  126. ) wang1
  127. where wang1.rowno between {pageStart} and {pageEnd}"/>
  128. <provider
  129. name="oracleClient1.0"
  130. description="Oracle, Microsoft provider V1.0.5000.0"
  131. enabled="false"
  132. assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection"
  133. commandClass="System.Data.OracleClient.OracleCommand"
  134. parameterClass="System.Data.OracleClient.OracleParameter"
  135. parameterDbTypeClass="System.Data.OracleClient.OracleType"
  136. parameterDbTypeProperty="OracleType"
  137. dataAdapterClass="System.Data.OracleClient.OracleDataAdapter"
  138. commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder"
  139. usePositionalParameters="false"
  140. useParameterPrefixInSql="true"
  141. useParameterPrefixInParameter="false"
  142. parameterPrefix=":"/>
  143. <provider
  144. name="ByteFx"
  145. description="MySQL, ByteFx provider V0.7.6.15073"
  146. enabled="false"
  147. assemblyName="ByteFX.MySqlClient, Version=0.7.6.15073, Culture=neutral, PublicKeyToken=f2fef6fed1732fc1" connectionClass="ByteFX.Data.MySqlClient.MySqlConnection"
  148. commandClass="ByteFX.Data.MySqlClient.MySqlCommand"
  149. parameterClass="ByteFX.Data.MySqlClient.MySqlParameter"
  150. parameterDbTypeClass="ByteFX.Data.MySqlClient.MySqlDbType"
  151. parameterDbTypeProperty="MySqlDbType"
  152. dataAdapterClass="ByteFX.Data.MySqlClient.MySqlDataAdapter"
  153. commandBuilderClass="ByteFX.Data.MySqlClient.MySqlCommandBuilder"
  154. usePositionalParameters="false"
  155. useParameterPrefixInSql="true"
  156. useParameterPrefixInParameter="true"
  157. parameterPrefix="@"/>
  158. <provider
  159. name="MySql"
  160. description="MySQL, MySQL provider V1.0.5.13785"
  161. enabled="false"
  162. assemblyName="MySql.Data, Version=1.0.5.13785, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"
  163. commandClass="MySql.Data.MySqlClient.MySqlCommand"
  164. parameterClass="MySql.Data.MySqlClient.MySqlParameter"
  165. parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"
  166. parameterDbTypeProperty="MySqlDbType"
  167. dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"
  168. commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"
  169. usePositionalParameters="false"
  170. useParameterPrefixInSql="true"
  171. useParameterPrefixInParameter="true"
  172. parameterPrefix="?"
  173. queryPageTag="select wang.* from ({sqlTag}) wang limit {pageIndex},{pageSize}"/>
  174. <provider name="SQLite3"
  175. description="SQLite, System.Data.SQLite provider V1.0.60.0"
  176. enabled="false"
  177. assemblyName="System.Data.SQLite, Version=1.0.60.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
  178. connectionClass="System.Data.SQLite.SQLiteConnection"
  179. commandClass="System.Data.SQLite.SQLiteCommand"
  180. parameterClass="System.Data.SQLite.SQLiteParameter"
  181. parameterDbTypeClass="System.Data.DbType, System.Data"
  182. parameterDbTypeProperty="DbType"
  183. dataAdapterClass="System.Data.SQLite.SQLiteDataAdapter"
  184. commandBuilderClass="System.Data.SQLite.SQLiteCommandBuilder"
  185. usePositionalParameters="false"
  186. useParameterPrefixInSql="true"
  187. useParameterPrefixInParameter="true"
  188. parameterPrefix="@"
  189. setDbParameterPrecision="false"
  190. setDbParameterScale="false"
  191. queryPageTag="select wang.* from ({sqlTag}) wang limit {pageIndex},{pageSize}"/>
  192. <provider name="Finisar"
  193. description="SQLite, SQLite.NET provider V0.21.1869.3794"
  194. enabled="false"
  195. assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c"
  196. connectionClass="Finisar.SQLite.SQLiteConnection"
  197. commandClass="Finisar.SQLite.SQLiteCommand"
  198. parameterClass="Finisar.SQLite.SQLiteParameter"
  199. parameterDbTypeClass="System.Data.DbType, System.Data"
  200. parameterDbTypeProperty="DbType"
  201. dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter"
  202. commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder"
  203. usePositionalParameters="false"
  204. useParameterPrefixInSql="true"
  205. useParameterPrefixInParameter="true"
  206. parameterPrefix="@"
  207. setDbParameterPrecision="false"
  208. setDbParameterScale="false"/>
  209. <provider
  210. name="Firebird1.7"
  211. description="Firebird, Firebird SQL .NET provider V1.7.0.33200"
  212. enabled="false"
  213. assemblyName="FirebirdSql.Data.Firebird, Version=1.7.0.33200, Culture=neutral, PublicKeyToken=fa843d180294369d" connectionClass="FirebirdSql.Data.Firebird.FbConnection"
  214. commandClass="FirebirdSql.Data.Firebird.FbCommand"
  215. parameterClass="FirebirdSql.Data.Firebird.FbParameter"
  216. parameterDbTypeClass="FirebirdSql.Data.Firebird.FbDbType"
  217. parameterDbTypeProperty="FbDbType"
  218. dataAdapterClass="FirebirdSql.Data.Firebird.FbDataAdapter"
  219. commandBuilderClass="FirebirdSql.Data.Firebird.FbCommandBuilder"
  220. usePositionalParameters="false"
  221. useParameterPrefixInSql="true"
  222. useParameterPrefixInParameter="true"
  223. parameterPrefix="@"/>
  224. <provider
  225. name="PostgreSql0.7"
  226. description="PostgreSql, Npgsql provider V0.7.0.0"
  227. enabled="false"
  228. assemblyName="Npgsql, Version=0.7.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
  229. connectionClass="Npgsql.NpgsqlConnection"
  230. commandClass="Npgsql.NpgsqlCommand"
  231. parameterClass="Npgsql.NpgsqlParameter"
  232. parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"
  233. parameterDbTypeProperty="NpgsqlDbType"
  234. dataAdapterClass="Npgsql.NpgsqlDataAdapter"
  235. commandBuilderClass="Npgsql.NpgsqlCommandBuilder"
  236. usePositionalParameters="false"
  237. useParameterPrefixInSql="true"
  238. useParameterPrefixInParameter="true"
  239. parameterPrefix=":"/>
  240. <provider
  241. name="PostgreSql0.7.1"
  242. description="PostgreSql, Npgsql provider V0.7.1.0"
  243. enabled="false"
  244. assemblyName="Npgsql, Version=0.7.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
  245. connectionClass="Npgsql.NpgsqlConnection"
  246. commandClass="Npgsql.NpgsqlCommand"
  247. parameterClass="Npgsql.NpgsqlParameter"
  248. parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"
  249. parameterDbTypeProperty="NpgsqlDbType"
  250. dataAdapterClass="Npgsql.NpgsqlDataAdapter"
  251. commandBuilderClass="Npgsql.NpgsqlCommandBuilder"
  252. usePositionalParameters="false"
  253. useParameterPrefixInSql="true"
  254. useParameterPrefixInParameter="true"
  255. parameterPrefix=":"/>
  256. <provider
  257. name="iDb2.10"
  258. description="IBM DB2 Provider, V 10.0"
  259. enabled="false"
  260. assemblyName="IBM.Data.DB2.iSeries, Version=10.0.0.0,Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26, Custom=null" connectionClass="IBM.Data.DB2.iSeries.iDB2Connection"
  261. commandClass="IBM.Data.DB2.iSeries.iDB2Command"
  262. parameterClass="IBM.Data.DB2.iSeries.iDB2Parameter"
  263. parameterDbTypeClass="IBM.Data.DB2.iSeries.iDB2DbType"
  264. parameterDbTypeProperty="iDB2DbType"
  265. dataAdapterClass="IBM.Data.DB2.iSeries.iDB2DataAdapter"
  266. commandBuilderClass="IBM.Data.DB2.iSeries.iDB2CommandBuilder"
  267. usePositionalParameters="true"
  268. useParameterPrefixInSql="false"
  269. useParameterPrefixInParameter="false"
  270. parameterPrefix=""/>
  271. <provider
  272. name="Informix"
  273. description="Informix NET Provider, 2.81.0.0"
  274. enabled="false"
  275. assemblyName="IBM.Data.Informix, Version=2.81.0.0, Culture=neutral, PublicKeyToken=7c307b91aa13d208"
  276. connectionClass="IBM.Data.Informix.IfxConnection"
  277. commandClass="IBM.Data.Informix.IfxCommand"
  278. parameterClass="IBM.Data.Informix.IfxParameter"
  279. parameterDbTypeClass="IBM.Data.Informix.IfxType"
  280. parameterDbTypeProperty="IfxType"
  281. dataAdapterClass="IBM.Data.Informix.IfxDataAdapter"
  282. commandBuilderClass="IBM.Data.Informix.IfxCommandBuilder"
  283. usePositionalParameters = "true"
  284. useParameterPrefixInSql = "false"
  285. useParameterPrefixInParameter = "false"
  286. useDeriveParameters="false"/>
  287. </providers>

源码下载WangSql3.0源码_千年.rar

WangSql 3.0源码共享(WangSql 1.0重大升级到3.0)的更多相关文章

  1. WangSql 1.0源码共享

    一,项目背景 现在基本上大大小小的项目都需要和数据库打交道,自然而然数据库操作会有很多地方,而使用传统ADO.NET整个流程有点麻烦,出参都需要手动转换为对象.基于以上,我们需要一个SQL执行工具,能 ...

  2. AFNetworking 3.0 源码解读(八)之 AFImageDownloader

    AFImageDownloader 这个类对写DownloadManager有很大的借鉴意义.在平时的开发中,当我们使用UIImageView加载一个网络上的图片时,其原理就是把图片下载下来,然后再赋 ...

  3. AFNetworking 3.0 源码解读(十一)之 UIButton/UIProgressView/UIWebView + AFNetworking

    AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorVie ...

  4. AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking

    我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...

  5. AFNetworking 3.0 源码解读(九)之 AFNetworkActivityIndicatorManager

    让我们的APP像艺术品一样优雅,开发工程师更像是一名匠人,不仅需要精湛的技艺,而且要有一颗匠心. 前言 AFNetworkActivityIndicatorManager 是对状态栏中网络激活那个小控 ...

  6. AFNetworking 3.0 源码解读(七)之 AFAutoPurgingImageCache

    这篇我们就要介绍AFAutoPurgingImageCache这个类了.这个类给了我们临时管理图片内存的能力. 前言 假如说我们要写一个通用的网络框架,除了必备的请求数据的方法外,必须提供一个下载器来 ...

  7. AFNetworking 3.0 源码解读(六)之 AFHTTPSessionManager

    AFHTTPSessionManager相对来说比较好理解,代码也比较短.但却是我们平时可能使用最多的类. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilit ...

  8. AFNetworking 3.0 源码解读(四)之 AFURLResponseSerialization

    本篇是AFNetworking 3.0 源码解读的第四篇了. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager AFNetworking 3 ...

  9. AFNetworking 3.0 源码解读(五)之 AFURLSessionManager

    本篇是AFNetworking 3.0 源码解读的第五篇了. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager AFNetworking 3 ...

随机推荐

  1. JS获取当前时间并格式化"yyyy-MM-dd HH:mm:ss"

    先来看下JS中的日期操作: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年 ...

  2. webapi框架搭建-安全机制(三)-简单的基于角色的权限控制

    webapi框架搭建系列博客 上一篇已经完成了“身份验证”,如果只是想简单的实现基于角色的权限管理,我们基本上不用写代码,微软已经提供了authorize特性,直接用就行. Authorize特性的使 ...

  3. 51 nod 1058 N的阶乘的长度

    1058 N的阶乘的长度 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3.   In ...

  4. PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)

    ==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...

  5. What is an intuitive explanation of the relation between PCA and SVD?

    What is an intuitive explanation of the relation between PCA and SVD? 36 FOLLOWERS Last asked: 30 Se ...

  6. React - 环境准备

    1. 下载 node.js,在 https://nodejs.org/en/download/ 选择合适的版本. 2. 检查 node.js 是否安装成功. hueyMB:~ zhisenzheng$ ...

  7. Plot Candlestick Charts in Research of quantopian

    ipython_notebook/Plot Candlestick Charts in Research-.ipynb at master · duanqingshan/ipython_noteboo ...

  8. Android笔记之广播

    为了容易理解,可以将广播代入到事件模型中,发送广播消息看做是触发event,BroadcastReceiver是处理事件的回调逻辑. 广播这种模型中涉及到两个角色,就是广播的发送者和接收者,所以会涉及 ...

  9. iphone清除数字链接

    <meta name="format-detection" content="telephone=no">

  10. 《区块链100问》第85集:资产代币化之对标美元USDT

    USDT是Tether公司推出的对标美元(USD)的代币Tether USD.1USDT=1美元,用户可以随时使用USDT与USD进行1:1兑换.Tether公司执行1:1准备金保证制度,即每个USD ...