### 2021-10-01更新

------
#### ryControls    V3.0.2110.0101
- *.[改进]ObjectListView的FindMatchInRange方法改为包含关系而不是开头匹配。
This commit is contained in:
鑫Intel 2021-10-01 11:34:49 +08:00
parent 95bffb50bf
commit 9586656c96
71 changed files with 699 additions and 2840 deletions

View File

@ -641,6 +641,14 @@
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Int64)">
<summary>
设置节点值
</summary>
<param name="strName">属性名</param>
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Decimal)">
<summary>
设置节点值
@ -667,7 +675,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<returns></returns>
@ -736,7 +744,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String,System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -744,7 +752,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByInt(System.String,System.Int32)">
<summary>
读取指定节点的值
读取指定节点的值(int)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -752,7 +760,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByDecimal(System.String,System.Decimal)">
<summary>
读取指定节点的值
读取指定节点的值(decimal)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -2615,6 +2623,13 @@
<param name="seconds">是否显示秒</param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.GetTimeStr(System.Int64)">
<summary>
将秒数显示成中文表达式
</summary>
<param name="Seconds"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.DateDiff(System.DateTime)">
<summary>
计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值.
@ -7004,6 +7019,30 @@
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(System.String)">
<summary>
执行SQL语句
@ -7326,6 +7365,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -358,6 +358,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -1,2 +1,2 @@
[Money_Op]
hwnd=75948
hwnd=2298254

View File

@ -1,4 +1,4 @@
<root>
<list id="LastUpdateTime" Value="2021/9/9 8:54:07" />
<list id="LastUpdateTime" Value="2021/10/1 11:25:54" />
<list id="UpdateAfterTime" Value="0" />
</root>

View File

@ -15261,7 +15261,7 @@
</member>
<member name="M:BrightIdeasSoftware.ObjectListView.ClearObjects">
<summary>
Remove all items from this list
移除所有对象(线程安全)
</summary>
<remark>This method can safely be called from background threads.</remark>
</member>

View File

@ -641,6 +641,14 @@
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Int64)">
<summary>
设置节点值
</summary>
<param name="strName">属性名</param>
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Decimal)">
<summary>
设置节点值
@ -667,7 +675,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<returns></returns>
@ -736,7 +744,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String,System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -744,7 +752,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByInt(System.String,System.Int32)">
<summary>
读取指定节点的值
读取指定节点的值(int)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -752,7 +760,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByDecimal(System.String,System.Decimal)">
<summary>
读取指定节点的值
读取指定节点的值(decimal)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -2615,6 +2623,13 @@
<param name="seconds">是否显示秒</param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.GetTimeStr(System.Int64)">
<summary>
将秒数显示成中文表达式
</summary>
<param name="Seconds"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.DateDiff(System.DateTime)">
<summary>
计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值.
@ -7004,6 +7019,30 @@
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(System.String)">
<summary>
执行SQL语句
@ -7326,6 +7365,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -299,6 +299,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -358,6 +358,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -15261,7 +15261,7 @@
</member>
<member name="M:BrightIdeasSoftware.ObjectListView.ClearObjects">
<summary>
Remove all items from this list
移除所有对象(线程安全)
</summary>
<remark>This method can safely be called from background threads.</remark>
</member>

View File

@ -641,6 +641,14 @@
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Int64)">
<summary>
设置节点值
</summary>
<param name="strName">属性名</param>
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Decimal)">
<summary>
设置节点值
@ -667,7 +675,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<returns></returns>
@ -736,7 +744,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String,System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -744,7 +752,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByInt(System.String,System.Int32)">
<summary>
读取指定节点的值
读取指定节点的值(int)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -752,7 +760,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByDecimal(System.String,System.Decimal)">
<summary>
读取指定节点的值
读取指定节点的值(decimal)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -2615,6 +2623,13 @@
<param name="seconds">是否显示秒</param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.GetTimeStr(System.Int64)">
<summary>
将秒数显示成中文表达式
</summary>
<param name="Seconds"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.DateDiff(System.DateTime)">
<summary>
计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值.
@ -6977,6 +6992,30 @@
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(System.String)">
<summary>
执行SQL语句
@ -7299,6 +7338,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -358,6 +358,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -15261,7 +15261,7 @@
</member>
<member name="M:BrightIdeasSoftware.ObjectListView.ClearObjects">
<summary>
Remove all items from this list
移除所有对象(线程安全)
</summary>
<remark>This method can safely be called from background threads.</remark>
</member>

View File

@ -641,6 +641,14 @@
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Int64)">
<summary>
设置节点值
</summary>
<param name="strName">属性名</param>
<param name="strValue">属性值</param>
<returns>如为1表示加载成功为0为失败</returns>
</member>
<member name="M:ryCommon.Storage.SetAttrValue(System.String,System.Decimal)">
<summary>
设置节点值
@ -667,7 +675,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<returns></returns>
@ -736,7 +744,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValue(System.String,System.String)">
<summary>
读取指定节点的值
读取指定节点的值(string)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -744,7 +752,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByInt(System.String,System.Int32)">
<summary>
读取指定节点的值
读取指定节点的值(int)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -752,7 +760,7 @@
</member>
<member name="M:ryCommon.Storage.GetAttrValueByDecimal(System.String,System.Decimal)">
<summary>
读取指定节点的值
读取指定节点的值(decimal)
</summary>
<param name="strNode"></param>
<param name="defValue"></param>
@ -2615,6 +2623,13 @@
<param name="seconds">是否显示秒</param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.GetTimeStr(System.Int64)">
<summary>
将秒数显示成中文表达式
</summary>
<param name="Seconds"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RyDate.DateDiff(System.DateTime)">
<summary>
计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值.
@ -6977,6 +6992,30 @@
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.IDbInterface.ExecuteNonQuery(System.String)">
<summary>
执行SQL语句
@ -7299,6 +7338,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SqlDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -299,6 +299,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.MySqlDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -358,6 +358,30 @@
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>

View File

@ -15261,7 +15261,7 @@
</member>
<member name="M:BrightIdeasSoftware.ObjectListView.ClearObjects">
<summary>
Remove all items from this list
移除所有对象(线程安全)
</summary>
<remark>This method can safely be called from background threads.</remark>
</member>

View File

@ -1,4 +1,9 @@
### 2021-09-15更新
### 2021-10-01更新
------
#### ryControls V3.0.2110.0101
- *.[改进]ObjectListView的FindMatchInRange方法改为包含关系而不是开头匹配。
### 2021-09-15更新
------
#### MyDb V3.0.2109.1501
- *.[新增]QuickWeb类的GetSize函数新增支持返回异常信息。

View File

@ -131,6 +131,7 @@ namespace Itrycn_Project2
{
Public_Config.LoadSetting();
RyFiles.AddDropDrag(tabPage1.Handle);
RySystem.GetOSystemVer();
//Itrycn_Project.Itrycn_Db.CreateTable();
//var dbver = Itrycn_Db.GetDbVer();
//if(dbver==1) //初始版本,并是当前要求的数据库

View File

@ -45,6 +45,9 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="System">
<HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll</HintPath>
@ -168,6 +171,7 @@
<EmbeddedResource Include="SkinForms\SkinMdiForm.resx">
<DependentUpon>SkinMdiForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果想要更改 Windows 用户帐户控制级别,请使用
以下节点之一替换 requestedExecutionLevel 节点。n
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
元素。
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
Windows 版本的列表。取消评论适当的元素,
Windows 将自动选择最兼容的环境。 -->
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI无需
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
-->
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

View File

@ -440,6 +440,26 @@ namespace ryCommon
/// <param name="strValue">属性值</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public int SetAttrValue(string strName, int strValue)
{
try
{ //设置节点值
element.SetAttribute(strName, strValue.ToString());
return 1;
}
catch
{
return 0;
}
}
#endregion
#region (long类型)
/// <summary>
/// 设置节点值
/// </summary>
/// <param name="strName">属性名</param>
/// <param name="strValue">属性值</param>
/// <returns>如为1表示加载成功为0为失败</returns>
public long SetAttrValue(string strName, long strValue)
{
try
{ //设置节点值
@ -514,7 +534,7 @@ namespace ryCommon
#endregion
#region
/// <summary>
/// 读取指定节点的值
/// 读取指定节点的值(string)
/// </summary>
/// <param name="strNode"></param>
/// <returns></returns>
@ -579,7 +599,7 @@ namespace ryCommon
/// <param name="strNode"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public Int64 GetAttrValue(string strNode, Int64 defValue)
public long GetAttrValue(string strNode, long defValue)
{
try
{
@ -656,9 +676,9 @@ namespace ryCommon
}
}
#endregion
#region 2
#region (string)
/// <summary>
/// 读取指定节点的值
/// 读取指定节点的值(string)
/// </summary>
/// <param name="strNode"></param>
/// <param name="defValue"></param>
@ -685,9 +705,9 @@ namespace ryCommon
}
}
#endregion
#region 3
#region (int)
/// <summary>
/// 读取指定节点的值
/// 读取指定节点的值(int)
/// </summary>
/// <param name="strNode"></param>
/// <param name="defValue"></param>
@ -707,9 +727,9 @@ namespace ryCommon
}
}
#endregion
#region 4
#region (decimal)
/// <summary>
/// 读取指定节点的值
/// 读取指定节点的值(decimal)
/// </summary>
/// <param name="strNode"></param>
/// <param name="defValue"></param>

View File

@ -145,7 +145,28 @@ namespace ryCommonDb
/// <param name="sql"></param>
/// <param name="mySQL"></param>
/// <returns></returns>
int ExecuteNonQuery(string sql, RyQuickSQL mySQL);
int ExecuteNonQuery(string sql, RyQuickSQL mySQL);
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
/// <param name="IsAdd">是新增还是更新</param>
/// <returns></returns>
int ExecuteNonQuery(RyQuickSQL mySQL, string wheresql, bool IsAdd);
/// <summary>
/// 插入数据库
/// </summary>
/// <param name="mySQL"></param>
/// <returns></returns>
int Insert(RyQuickSQL mySQL);
/// <summary>
/// 更新数据库
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">where 以后的sql语句</param>
/// <returns></returns>
int Update(RyQuickSQL mySQL,string wheresql);
/// <summary>
/// 执行SQL语句
/// </summary>

View File

@ -258,6 +258,45 @@ namespace ryCommonDb
return i;
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
/// <param name="IsAdd">是新增还是更新</param>
/// <returns></returns>
public int ExecuteNonQuery(RyQuickSQL mySQL, string wheresql, bool IsAdd)
{
if(IsAdd)
{
return ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
else
{
if (wheresql.Length == 0) { return -1; }
return ExecuteNonQuery(mySQL.GetUpdateSQL()+" where "+wheresql, mySQL);
}
}
/// <summary>
/// 插入数据库
/// </summary>
/// <param name="mySQL"></param>
/// <returns></returns>
public int Insert(RyQuickSQL mySQL)
{
return ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
/// <summary>
/// 更新数据库
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">where 以后的sql语句</param>
/// <returns></returns>
public int Update(RyQuickSQL mySQL, string wheresql)
{
if (wheresql.Length == 0) { return -1; }
return ExecuteNonQuery(mySQL.GetUpdateSQL() + " where " + wheresql, mySQL);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>

View File

@ -32,5 +32,5 @@ using System;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2109.1501")]
[assembly: AssemblyFileVersion("3.0.2109.1501")]
[assembly: AssemblyVersion("3.0.2110.0101")]
[assembly: AssemblyFileVersion("3.0.2110.0101")]

View File

@ -165,6 +165,15 @@ namespace ryCommon
if (dateDiff == "") { dateDiff = "0"+ (seconds?"秒": "分钟"); }
return dateDiff;
}
/// <summary>
/// 将秒数显示成中文表达式
/// </summary>
/// <param name="Seconds"></param>
/// <returns></returns>
public static string GetTimeStr(long Seconds)
{
return DateDiff(DateTime.MinValue, DateTime.MinValue.AddSeconds(Seconds), true);
}
/// <summary>
/// 计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值.
/// </summary>

View File

@ -168,7 +168,9 @@ namespace ryCommon
case "6.3":
return "Windows8.1";
case "10.0":
return "Windows10";
return "Windows10";
case "10.1":
return "Windows11";
default:
return "未知";
}

View File

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{631290D3-7CB8-4B62-833E-361C20A5F2E0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MyDb_MSSQL</RootNamespace>
<AssemblyName>MyDb_MSSQL</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\输出dll\.NET3.5\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\输出dll\.NET3.5\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsMSSQLDb.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SqlDataProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyDb\MyDbV35.csproj">
<Project>{9df20d86-a56e-4cf6-a3d8-f30421297b1b}</Project>
<Name>MyDbV35</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{631290D3-7CB8-4B62-833E-361C20A5F2E0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MyDb_MSSQL</RootNamespace>
<AssemblyName>MyDb_MSSQL</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Bin\Debug\CommonControls\.NET4\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<DocumentationFile>..\..\Bin\Debug\CommonControls\.NET4\MyDb_MSSQL.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Bin\Release\CommonControls\.NET4\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\Bin\Release\CommonControls\.NET4\MyDb_MSSQL.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsMSSQLDb.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SqlDataProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyDb\MyDbV4.csproj">
<Project>{9df20d86-a56e-4cf6-a3d8-f30421297b1b}</Project>
<Name>MyDbV4</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("MyDb_MSSQL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MyDb_MSSQL")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//将 ComVisible 设置为 false 将使此程序集中的类型
//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("631290d3-7cb8-4b62-833e-361c20a5f2e0")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2105.2201")]
[assembly: AssemblyFileVersion("3.0.2105.2201")]

View File

@ -1,351 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using DataParameter = System.Data.SqlClient.SqlParameter;
using DataCommand = System.Data.SqlClient.SqlCommand;
using DataAdapter = System.Data.SqlClient.SqlDataAdapter;
namespace ryCommonDb
{
/// <summary>
///
/// </summary>
public class SqlDataProvider:IDbInterface
{
ryCommonDb.MSSQLDb myDb = new MSSQLDb();
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ConnDb(string sql)
{
myDb.fv_ConnStr = sql;
return myDb.ConnDb();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public int CloseDb()
{
myDb.CloseDb();
return 1;
}
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <returns></returns>
public int GetCount(string tableName, string wheresql)
{
string m_where = "";
if (wheresql != "")
{
m_where = " where " + wheresql;
}
string m_order = "(order by id)";
string sql= "select count(*) from (select *,(ROW_NUMBER() OVER" + m_order + ") as myrow from " + tableName + m_where + ") as t";
return Convert.ToInt32(myDb.ExecuteSQL(sql,(DataParameter[])GetParameter(), "0")[0]);
}
/// <summary>
///
/// </summary>
/// <param name="newPwd"></param>
/// <returns></returns>
public int ChangePwd(string newPwd)
{
return -1000;
}
private List<SQLIitem> list_param = new List<SQLIitem>();
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
public void AddParameter(string name,object value)
{
list_param.Add(new SQLIitem(name, value));
}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
public void ClearParameter(object name, object value)
{
list_param.Clear();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public object[] GetParameter()
{
DataParameter[] defPar = new DataParameter[list_param.Count];
for (int i = 0; i < list_param.Count; i++)
{
SQLIitem item = (SQLIitem)list_param[i];
defPar[i] = new DataParameter("@" + item.Field.TrimStart('@').TrimStart('[').TrimEnd(']'), item.value);
}
return defPar;
}
/// <summary>
///
/// </summary>
/// <param name="mySQL"></param>
/// <returns></returns>
public object[] GetParameter(RyQuickSQL mySQL)
{
DataParameter[] defPar = new DataParameter[mySQL.List.Count + mySQL.List_param.Count];
for (int i = 0; i < mySQL.List.Count; i++)
{
SQLIitem item = (SQLIitem)mySQL.List[i];
defPar[i] = new DataParameter("@" + item.Field.TrimStart('@').TrimStart('[').TrimEnd(']'), item.value);
}
for (int i = mySQL.List.Count; i < mySQL.List.Count + mySQL.List_param.Count; i++)
{
SQLIitem item = (SQLIitem)mySQL.List_param[i - mySQL.List.Count];
defPar[i] = new DataParameter("@" + item.Field.TrimStart('@').TrimStart('[').TrimEnd(']'), item.value);
}
return defPar;
}
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
/// <returns></returns>
public string GetPageSQL(string tableName, string wheresql, string orderSQL)
{
return GetPageSQL("*", tableName, wheresql, orderSQL);
}
/// <summary>
///
/// </summary>
/// <param name="field"></param>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
/// <returns></returns>
public string GetPageSQL(string field, string tableName, string wheresql, string orderSQL)
{
string m_where = "";
if (wheresql != "")
{
m_where = " where " + wheresql;
}
string m_order = "(order by id)";
if (orderSQL != "")
{
m_order = "(" + orderSQL + ")";
}
return "select "+ field + " from (select *,(ROW_NUMBER() OVER" + m_order + ")as myrow from " + tableName + m_where + ") as t where t.myrow between {recordnum1} and {pageendnum1}";
}
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
/// <returns></returns>
public string GetPageSQL2(string tableName, string wheresql, string orderSQL)
{
return "";
}
/// <summary>
///
/// </summary>
/// <param name="field"></param>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
/// <returns></returns>
public string GetPageSQL2(string field, string tableName, string wheresql, string orderSQL)
{
return "";
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="Parameter"></param>
/// <returns></returns>
public bool ContainsData(string sql, object[] Parameter)
{
System.Data.DataSet ds = ReadData(sql, Parameter);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return true;
}
return false;
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="Parameter"></param>
/// <returns></returns>
public System.Data.DataSet ReadData(string sql, object[] Parameter)
{
try
{
DataCommand cmd = myDb.SQL_cn.CreateCommand();
cmd.Parameters.Clear();
if (Parameter != null)
cmd.Parameters.AddRange(Parameter);
cmd.CommandText = sql;
DataAdapter ad = new DataAdapter(cmd);
System.Data.DataSet ds = new System.Data.DataSet();
ad.Fill(ds);
ad.Dispose();
cmd.Parameters.Clear();
cmd.Dispose();
return ds;
}
catch { return new System.Data.DataSet(); }
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="mySQL"></param>
/// <returns></returns>
public System.Data.DataSet ReadData(string sql, RyQuickSQL mySQL)
{
return ReadData(sql,GetParameter(mySQL));
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public System.Data.DataSet ReadData(string sql)
{
object[] Parameter = null;
return ReadData(sql, Parameter);
}
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="id"></param>
/// <returns></returns>
public System.Data.DataSet ReadData(string tableName, string id)
{
object[] Parameter = null;
return ReadData("select * from " + tableName + " where id=" + id, Parameter);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="Parameter"></param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, object[] Parameter)
{
DataCommand cmd = myDb.SQL_cn.CreateCommand();
cmd.Parameters.Clear();
if(Parameter!=null)
cmd.Parameters.AddRange(Parameter);
cmd.CommandText = sql;
int i= cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();
return i;
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="mySQL"></param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, RyQuickSQL mySQL)
{
return ExecuteNonQuery(sql,GetParameter(mySQL));
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ExecuteNonQuery(string sql)
{
object[] pram = null;
return ExecuteNonQuery(sql, pram);
}
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="id"></param>
/// <returns></returns>
public int DelById(string tableName, string id)
{
object[] param = null;
return ExecuteNonQuery("delete from " + tableName + " where id=" + id, param);
}
/// <summary>
///
/// </summary>
/// <param name="mySQL"></param>
/// <returns></returns>
public int CreateDb(RyQuickSQL mySQL)
{
string tmpSQL = "CREATE TABLE " + mySQL.TableName + " ([ID] INTEGER PRIMARY KEY,";
for (int i = 0; i < mySQL.List.Count; i++)
{
SQLIitem item = (SQLIitem)mySQL.List[i];
if (item.value is string)
{
if (item.len == 0)
{
tmpSQL += "[" + item.Field + "] [nvarchar](max),";
}
else
{ tmpSQL += "[" + item.Field + "] [nvarchar]("+ item.len + "),"; }
}
else if (item.value is int || item.value is Int64)
{
tmpSQL += "[" + item.Field + "] [int] 0,";
}
else if (item.value is double || item.value is float)
{
tmpSQL += "[" + item.Field + "] [float] 0,";
}
else if (item.value is DateTime)
{
tmpSQL += "[" + item.Field + "] [DATETIME],";
}
}
object[] param = null;
return ExecuteNonQuery(tmpSQL.Substring(0, tmpSQL.Length - 1) + ")", param);
}
SqlTransaction tr;
/// <summary>
///
/// </summary>
public void BeginTransaction()
{
tr = myDb.SQL_cn.BeginTransaction();
}
/// <summary>
///
/// </summary>
public void Commit()
{
tr.Commit();
}
/// <summary>
///
/// </summary>
public void Free()
{
list_param.Clear();
myDb.CloseDb();
}
}
}

View File

@ -1,529 +0,0 @@
//--------------------------日期:2014-2-22
//--------------------------版本:1.0.0.0
//--------------------------作者:itrycn
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel;
namespace ryCommonDb
{
/// <summary>
///
/// </summary>
public class MSSQLDb : IDisposable
{
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="errorStr"></param>
/// <param name="errorId"></param>
public delegate void ErrorHandler(object sender, string errorStr,string errorId);
/// <summary>
///
/// </summary>
[Description("发生错误时发生")]
public event ErrorHandler OnError;
/// <summary>
///
/// </summary>
public SqlConnection SQL_cn;
/// <summary>
///
/// </summary>
public string fv_ConnStr = "";
/// <summary>
///
/// </summary>
public MSSQLDb()
{
}
/// <summary>
/// 连接数据库
/// </summary>
/// <param name="ConnStr">数据库连接字符串</param>
/// <returns></returns>
public MSSQLDb(string ConnStr)
{
fv_ConnStr = ConnStr;
}
/// <summary>
/// 连接数据库
/// </summary>
/// <param name="DataSource">数据源</param>
/// <param name="DbName">数据库名称</param>
/// <param name="uId">用户id</param>
/// <param name="pwd">用户密码</param>
public MSSQLDb(string DataSource, string DbName, string uId, string pwd)
{
if (uId == "")
{
fv_ConnStr = "Data Source=" + DataSource + ";database=" + DbName + ";Integrated Security=True;Pooling=False";
}
else
{
fv_ConnStr = "Data Source=" + DataSource + ";database=" + DbName + ";uid=" + uId + ";pwd=" + pwd;
}
}
/// <summary>
///
/// </summary>
~MSSQLDb()
{
CloseDb();
}
/// <summary>
/// 连接数据库
/// </summary>
/// <returns></returns>
public int ConnDb()
{
try
{
SQL_cn = new SqlConnection()
{
ConnectionString = fv_ConnStr,
};
SQL_cn.Open();
return 1;
}
catch(Exception ex)
{
OnError?.Invoke(this,ex.Message,"errorconn");
return -1;
}
}
/// <summary>
/// 关闭数据库
/// </summary>
/// <returns></returns>
public void CloseDb()
{
try
{
if (SQL_cn != null && SQL_cn.State != ConnectionState.Closed)
{
SQL_cn.Close();
}
}
catch
{
OnError?.Invoke(this, "关闭数据库出错", "errorclose");
}
}
/// <summary>
/// 运行SQL命令
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <param name="commandParameters">SQL命令参数</param>
/// <returns>运行失败,则返回-1否则返回影响的行数</returns>
public int ExecuteNonQuery(string SQLText, SqlParameter[] commandParameters)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
if (commandParameters.Length > 0)
{
foreach (SqlParameter parm in commandParameters)
{ cm.Parameters.Add(parm); }
}
cm.Connection = SQL_cn;
int i = cm.ExecuteNonQuery();
cm.Parameters.Clear();
cm.Dispose();
return i;
}
#endregion
}
catch (Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return -1;
}
}
/// <summary>
/// 运行SQL命令
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <returns>运行失败,则返回-1否则返回影响的行数</returns>
public int ExecuteNonQuery(string SQLText)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
cm.Connection = SQL_cn;
int i = cm.ExecuteNonQuery();
cm.Dispose();
return i;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this,ex.Message,"errrorconn");
return -1;
}
}
/// <summary>
/// 运行SQL命令,并返回结果
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <param name="commandParameters">SQL命令参数</param>
/// <returns>运行失败则返回null否则返回以数组显示的字符串</returns>
public string[] ExecuteSQL(string SQLText, SqlParameter[] commandParameters)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
if (commandParameters.Length > 0)
{
cm.Parameters.AddRange(commandParameters);
}
SqlDataReader reader = cm.ExecuteReader();
string[] resultStr = null;
while (reader.Read())
{
resultStr = new string[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
{
resultStr[i] = reader[i].ToString();
}
break;
}
reader.Close();
cm.Dispose();
return resultStr;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return null;
}
}
/// <summary>
/// 运行SQL命令,并返回结果
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <param name="commandParameters">SQL命令参数</param>
/// <param name="DefFristValue">数组第一个默认的值</param>
/// <returns>运行失败则返回null否则返回以数组显示的字符串</returns>
public string[] ExecuteSQL(string SQLText, SqlParameter[] commandParameters, string DefFristValue)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
if (commandParameters.Length > 0)
{
cm.Parameters.AddRange(commandParameters);
}
SqlDataReader reader = cm.ExecuteReader();
string[] resultStr = null;
while (reader.Read())
{
resultStr = new string[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
{
resultStr[i] = reader[i].ToString();
}
break;
}
if (resultStr == null)
{
resultStr = new string[1];
resultStr[0] = DefFristValue;
}
cm.Parameters.Clear();
reader.Close();
cm.Dispose();
return resultStr;
}
#endregion
}
catch(Exception ex)
{
string[] resultStr = null;
resultStr = new string[1];
resultStr[0] = DefFristValue;
OnError?.Invoke(this, ex.Message, "errorconn");
return resultStr;
}
}
/// <summary>
/// 运行SQL命令,并返回结果
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <returns>运行失败则返回null否则返回以数组显示的字符串</returns>
public string[] ExecuteSQL(string SQLText)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
SqlDataReader reader = cm.ExecuteReader();
string[] resultStr = null;
while (reader.Read())
{
resultStr = new string[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
{
resultStr[i] = reader[i].ToString();
}
break;
}
reader.Close();
cm.Dispose();
return resultStr;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return null;
}
}
/// <summary>
/// 运行SQL命令,并返回结果
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <param name="DefFristValue">数组第一个默认的值</param>
/// <returns>运行失败则返回DefFristValue否则返回以数组显示的字符串</returns>
public string[] ExecuteSQL(string SQLText, string DefFristValue)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
SqlDataReader reader = cm.ExecuteReader();
string[] resultStr = null;
while (reader.Read())
{
resultStr = new string[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
{
resultStr[i] = reader[i].ToString();
}
break;
}
reader.Close();
cm.Dispose();
if (resultStr == null)
{
resultStr = new string[1];
resultStr[0] = DefFristValue;
}
return resultStr;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
string[] resultStr = null;
resultStr = new string[1];
resultStr[0] = DefFristValue;
return resultStr;
}
}
/// <summary>
/// 清空指定表的所有数据
/// </summary>
/// <param name="TableName">表名</param>
/// <returns>运行失败,则返回-1否则返回影响的行数</returns>
public int ClearTableData(string TableName)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = "delete from " + TableName;
cm.Connection = SQL_cn;
int i = cm.ExecuteNonQuery();
cm.Dispose();
return i;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return -1;
}
}
/// <summary>
/// 判断指定值是否存在
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="valueField">指定值所属字段</param>
/// <param name="value">指定值</param>
/// <param name="curId">当前id如果是新增记录请填写-1</param>
/// <returns></returns>
public bool IsExistValue(string TableName, string valueField, string value, int curId)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = "select * from " + TableName + " where " + valueField + "=@tvalue";
cm.Parameters.AddWithValue("@tvalue", DbType.String);
cm.Parameters["@tvalue"].Value = value;
SqlDataReader reader = cm.ExecuteReader();
bool result = false;
while (reader.Read())
{
if (curId < 0)
{
result = true;
}
else
{
if (reader["id"].ToString() == curId.ToString())
{
result = false;
}
else
{
result = true;
}
}
break;
}
reader.Close();
cm.Dispose();
return result;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return false;
}
}
/// <summary>
/// 判断SQL语句是否有结果返回
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <param name="commandParameters">SQL命令参数</param>
/// <returns>运行失败,则返回-1存在结果返回1不存在结果返回0</returns>
public int ExecuteReadResult(string SQLText, SqlParameter[] commandParameters)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
if (commandParameters.Length > 0)
{
cm.Parameters.AddRange(commandParameters);
//foreach (SQLiteParameter parm in commandParameters)
//{ cm.Parameters.Add(parm); }
}
SqlDataReader reader = cm.ExecuteReader();
int i = 0;
while (reader.Read())
{
i = 1;
break;
}
reader.Close();
cm.Parameters.Clear();
cm.Dispose();
return i;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return -1;
}
}
/// <summary>
/// 判断SQL语句是否有结果返回
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <returns>运行失败,则返回-1存在结果返回1不存在结果返回0</returns>
public int ExecuteReadResult(string SQLText)
{
try
{
#region
{
SqlCommand cm = SQL_cn.CreateCommand();
cm.Parameters.Clear();
cm.CommandText = SQLText;
SqlDataReader reader = cm.ExecuteReader();
int i = 0;
while (reader.Read())
{
i = 1;
break;
}
reader.Close();
cm.Dispose();
return i;
}
#endregion
}
catch(Exception ex)
{
OnError?.Invoke(this, ex.Message, "errorconn");
return -1;
}
}
private bool disposed = false;
/// <summary>
///
/// </summary>
public virtual void Dispose()
{
if (!this.disposed)
{
try
{
CloseDb();
// release scarce resource here
}
finally
{
this.disposed = true;
GC.SuppressFinalize(this);
}
}
}
}
}

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2109.1501")]
[assembly: AssemblyFileVersion("3.0.2109.1501")]
[assembly: AssemblyVersion("3.0.2109.1601")]
[assembly: AssemblyFileVersion("3.0.2109.1601")]

View File

@ -255,6 +255,45 @@ namespace ryCommonDb
return i;
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
/// <param name="IsAdd">是新增还是更新</param>
/// <returns></returns>
public int ExecuteNonQuery(RyQuickSQL mySQL, string wheresql, bool IsAdd)
{
if (IsAdd)
{
return ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
else
{
if (wheresql.Length == 0) { return -1; }
return ExecuteNonQuery(mySQL.GetUpdateSQL() + " where " + wheresql, mySQL);
}
}
/// <summary>
/// 插入数据库
/// </summary>
/// <param name="mySQL"></param>
/// <returns></returns>
public int Insert(RyQuickSQL mySQL)
{
return ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
/// <summary>
/// 更新数据库
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">where 以后的sql语句</param>
/// <returns></returns>
public int Update(RyQuickSQL mySQL, string wheresql)
{
if (wheresql.Length == 0) { return -1; }
return ExecuteNonQuery(mySQL.GetUpdateSQL() + " where " + wheresql, mySQL);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2109.1501")]
[assembly: AssemblyFileVersion("3.0.2109.1501")]
[assembly: AssemblyVersion("3.0.2109.1601")]
[assembly: AssemblyFileVersion("3.0.2109.1601")]

View File

@ -262,6 +262,45 @@ namespace ryCommonDb
return i;
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
/// <param name="IsAdd">是新增还是更新</param>
/// <returns></returns>
public int ExecuteNonQuery(RyQuickSQL mySQL, string wheresql, bool IsAdd)
{
if (IsAdd)
{
return ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
else
{
if (wheresql.Length == 0) { return -1; }
return ExecuteNonQuery(mySQL.GetUpdateSQL() + " where " + wheresql, mySQL);
}
}
/// <summary>
/// 插入数据库
/// </summary>
/// <param name="mySQL"></param>
/// <returns></returns>
public int Insert(RyQuickSQL mySQL)
{
return ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
/// <summary>
/// 更新数据库
/// </summary>
/// <param name="mySQL"></param>
/// <param name="wheresql">where 以后的sql语句</param>
/// <returns></returns>
public int Update(RyQuickSQL mySQL, string wheresql)
{
if (wheresql.Length == 0) { return -1; }
return ExecuteNonQuery(mySQL.GetUpdateSQL() + " where " + wheresql, mySQL);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>

View File

@ -1,881 +0,0 @@
// 类说明HttpHelper类用来实现Http访问Post或者Get方式的直接访问带Cookie的带证书的等方式可以设置代理
// 重要提示:请不要自行修改本类,如果因为你自己修改后将无法升级到新版本。如果确实有什么问题请到官方网站提建议,
// 我们一定会及时修改
// 编码日期2011-09-20
// 编 码 人:苏飞
// 联系方式361983679
// 官方网址http://www.sufeinet.com/thread-3-1-1.html
// 修改日期2017-01-16
// 版 本 号1.8
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.IO.Compression;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Linq;
using System.Net.Cache;
namespace DotNet4.Utilities
{
/// <summary>
/// Http连接操作帮助类
/// </summary>
public class HttpHelper
{
#region
//默认的编码
private Encoding encoding = Encoding.Default;
//Post数据编码
private Encoding postencoding = Encoding.Default;
//HttpWebRequest对象用来发起请求
private HttpWebRequest request = null;
//获取影响流的数据对象
private HttpWebResponse response = null;
//设置本地的出口ip和端口
private IPEndPoint _IPEndPoint = null;
#endregion
#region Public
/// <summary>
///
/// </summary>
/// <param name="strcookie"></param>
/// <returns></returns>
public string GetSmallCookie(string strcookie)
{
string result;
if (string.IsNullOrWhiteSpace(strcookie))
{
result = string.Empty;
}
else
{
List<string> list = new List<string>();
string[] array = strcookie.ToString().Split(new string[]
{
",",
";"
}, StringSplitOptions.RemoveEmptyEntries);
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string text = array2[i];
string text2 = text.ToLower().Trim().Replace("\r\n", string.Empty).Replace("\n", string.Empty);
if (!string.IsNullOrWhiteSpace(text2))
{
if (text2.Contains("="))
{
if (!text2.Contains("path="))
{
if (!text2.Contains("expires="))
{
if (!text2.Contains("domain="))
{
if (!list.Contains(text))
{
list.Add(string.Format("{0};", text));
}
}
}
}
}
}
}
result = string.Join(";", list);
}
return result;
}
/// <summary>
/// 根据相传入的数据,得到相应页面数据
/// </summary>
/// <param name="item">参数类对象</param>
/// <returns>返回HttpResult类型</returns>
public HttpResult GetHtml(HttpItem item)
{
//返回参数
HttpResult result = new HttpResult();
try
{
//准备参数
SetRequest(item);
}
catch (Exception ex)
{
//配置参数时出错
return new HttpResult() { Cookie = string.Empty, Header = null, Html = ex.Message, StatusDescription = "配置参数时出错:" + ex.Message };
}
try
{
//请求数据
using (response = (HttpWebResponse)request.GetResponse())
{
GetData(item, result);
}
}
catch (WebException ex)
{
if (ex.Response != null)
{
using (response = (HttpWebResponse)ex.Response)
{
GetData(item, result);
}
}
else
{
result.Html = ex.Message;
}
}
catch (Exception ex)
{
result.Html = ex.Message;
}
if (item.IsToLower) result.Html = result.Html.ToLower();
return result;
}
#endregion
#region GetData
/// <summary>
/// 获取数据的并解析的方法
/// </summary>
/// <param name="item"></param>
/// <param name="result"></param>
private void GetData(HttpItem item, HttpResult result)
{
if (response == null)
{
return;
}
#region base
//获取StatusCode
result.StatusCode = response.StatusCode;
//获取StatusDescription
result.StatusDescription = response.StatusDescription;
//获取Headers
result.Header = response.Headers;
//获取最后访问的URl
result.ResponseUri = response.ResponseUri.ToString();
//获取CookieCollection
if (response.Cookies != null) result.CookieCollection = response.Cookies;
//获取set-cookie
if (response.Headers["set-cookie"] != null) result.Cookie = response.Headers["set-cookie"];
#endregion
#region byte
//处理网页Byte
byte[] ResponseByte = GetByte();
#endregion
#region Html
if (ResponseByte != null && ResponseByte.Length > 0)
{
//设置编码
SetEncoding(item, result, ResponseByte);
//得到返回的HTML
result.Html = encoding.GetString(ResponseByte);
}
else
{
//没有返回任何Html代码
result.Html = string.Empty;
}
#endregion
}
/// <summary>
/// 设置编码
/// </summary>
/// <param name="item">HttpItem</param>
/// <param name="result">HttpResult</param>
/// <param name="ResponseByte">byte[]</param>
private void SetEncoding(HttpItem item, HttpResult result, byte[] ResponseByte)
{
//是否返回Byte类型数据
if (item.ResultType == ResultType.Byte) result.ResultByte = ResponseByte;
//从这里开始我们要无视编码了
if (encoding == null)
{
string c = string.Empty;
var charset= result.Header["Content-Type"];
if (charset != null)
{
int pos = charset.IndexOf("charset=", StringComparison.OrdinalIgnoreCase);
if(pos>0)
{
c = charset.Substring(pos + "charset=".Length);
}
//System.IO.File.AppendAllText(@"G:\程序开发源码\QO流程管理\Bin\Debug\1122.txt", charset+" "+ c);
}
if(c== string.Empty)
{
Match meta = Regex.Match(Encoding.Default.GetString(ResponseByte), "<meta[^<]*charset=([^<]*)[\"']", RegexOptions.IgnoreCase);
if (meta != null && meta.Groups.Count > 0)
{
c = meta.Groups[1].Value.ToLower().Trim();
}
}
if (c == string.Empty)
{
if(item.URL.ToLower().Replace("https://","").IndexOf("http://api.dataoke.com/index.php")==0)
{
c = "gb2312";
}
}
if (c.Length > 2)
{
try
{
encoding = Encoding.GetEncoding(c.Replace("\"", string.Empty).Replace("'", "").Replace(";", "").Replace("iso-8859-1", "gbk").Trim());
}
catch
{
if (string.IsNullOrEmpty(response.CharacterSet))
{
encoding = Encoding.UTF8;
}
else
{
encoding = Encoding.GetEncoding(response.CharacterSet);
}
}
}
else
{
if (string.IsNullOrEmpty(response.CharacterSet))
{
encoding = Encoding.UTF8;
}
else
{
encoding = Encoding.GetEncoding(response.CharacterSet);
}
}
}
}
/// <summary>
/// 提取网页Byte
/// </summary>
/// <returns></returns>
private byte[] GetByte()
{
byte[] ResponseByte = null;
using (MemoryStream _stream = new MemoryStream())
{
//GZIIP处理
if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
{
//开始读取流并设置编码方式
new GZipStream(response.GetResponseStream(), CompressionMode.Decompress).CopyTo(_stream, 10240);
}
else
{
//开始读取流并设置编码方式
response.GetResponseStream().CopyTo(_stream, 10240);
}
//获取Byte
ResponseByte = _stream.ToArray();
}
return ResponseByte;
}
#endregion
#region SetRequest
/// <summary>
/// 为请求准备参数
/// </summary>
///<param name="item">参数列表</param>
private void SetRequest(HttpItem item)
{
// 验证证书
SetCer(item);
if (item.IPEndPoint != null)
{
_IPEndPoint = item.IPEndPoint;
//设置本地的出口ip和端口
request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
}
//设置Header参数
if (item.Header != null && item.Header.Count > 0) foreach (string key in item.Header.AllKeys)
{
request.Headers.Add(key, item.Header[key]);
}
// 设置代理
SetProxy(item);
if (item.ProtocolVersion != null) request.ProtocolVersion = item.ProtocolVersion;
request.ServicePoint.Expect100Continue = item.Expect100Continue;
//请求方式Get或者Post
request.Method = item.Method;
request.Timeout = item.Timeout;
request.KeepAlive = item.KeepAlive;
request.ReadWriteTimeout = item.ReadWriteTimeout;
if (!string.IsNullOrWhiteSpace(item.Host))
{
request.Host = item.Host;
}
if (item.IfModifiedSince != null) request.IfModifiedSince = Convert.ToDateTime(item.IfModifiedSince);
//Accept
request.Accept = item.Accept;
//ContentType返回类型
request.ContentType = item.ContentType;
//UserAgent客户端的访问类型包括浏览器版本和操作系统信息
request.UserAgent = item.UserAgent;
// 编码
encoding = item.Encoding;
//设置安全凭证
request.Credentials = item.ICredentials;
//设置Cookie
SetCookie(item);
//来源地址
request.Referer = item.Referer;
//是否执行跳转功能
request.AllowAutoRedirect = item.Allowautoredirect;
if (item.MaximumAutomaticRedirections > 0)
{
request.MaximumAutomaticRedirections = item.MaximumAutomaticRedirections;
}
//设置Post数据
SetPostData(item);
//设置最大连接
if (item.Connectionlimit > 0) request.ServicePoint.ConnectionLimit = item.Connectionlimit;
}
/// <summary>
/// 设置证书
/// </summary>
/// <param name="item"></param>
private void SetCer(HttpItem item)
{
if (!string.IsNullOrWhiteSpace(item.CerPath))
{
//这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
//初始化对像并设置请求的URL地址
request = (HttpWebRequest)WebRequest.Create(item.URL);
SetCerList(item);
//将证书添加到请求里
request.ClientCertificates.Add(new X509Certificate(item.CerPath));
}
else
{
//初始化对像并设置请求的URL地址
request = (HttpWebRequest)WebRequest.Create(item.URL);
SetCerList(item);
}
}
/// <summary>
/// 设置多个证书
/// </summary>
/// <param name="item"></param>
private void SetCerList(HttpItem item)
{
if (item.ClentCertificates != null && item.ClentCertificates.Count > 0)
{
foreach (X509Certificate c in item.ClentCertificates)
{
request.ClientCertificates.Add(c);
}
}
}
/// <summary>
/// 设置Cookie
/// </summary>
/// <param name="item">Http参数</param>
private void SetCookie(HttpItem item)
{
if (!string.IsNullOrEmpty(item.Cookie)) request.Headers[HttpRequestHeader.Cookie] = item.Cookie;
//设置CookieCollection
if (item.ResultCookieType == ResultCookieType.CookieCollection)
{
request.CookieContainer = new CookieContainer();
if (item.CookieCollection != null && item.CookieCollection.Count > 0)
request.CookieContainer.Add(item.CookieCollection);
}
}
/// <summary>
/// 设置Post数据
/// </summary>
/// <param name="item">Http参数</param>
private void SetPostData(HttpItem item)
{
//验证在得到结果时是否有传入数据
if (!request.Method.Trim().ToLower().Contains("get"))
{
if (item.PostEncoding != null)
{
postencoding = item.PostEncoding;
}
byte[] buffer = null;
//写入Byte类型
if (item.PostDataType == PostDataType.Byte && item.PostdataByte != null && item.PostdataByte.Length > 0)
{
//验证在得到结果时是否有传入数据
buffer = item.PostdataByte;
}//写入文件
else if (item.PostDataType == PostDataType.FilePath && !string.IsNullOrWhiteSpace(item.Postdata))
{
StreamReader r = new StreamReader(item.Postdata, postencoding);
buffer = postencoding.GetBytes(r.ReadToEnd());
r.Close();
} //写入字符串
else if (!string.IsNullOrWhiteSpace(item.Postdata))
{
buffer = postencoding.GetBytes(item.Postdata);
}
if (buffer != null)
{
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
}
else
{
request.ContentLength = 0;
}
}
}
/// <summary>
/// 设置代理
/// </summary>
/// <param name="item">参数对象</param>
private void SetProxy(HttpItem item)
{
bool isIeProxy = false;
if (!string.IsNullOrWhiteSpace(item.ProxyIp))
{
isIeProxy = item.ProxyIp.ToLower().Contains("ieproxy");
}
if (!string.IsNullOrWhiteSpace(item.ProxyIp) && !isIeProxy)
{
//设置代理服务器
if (item.ProxyIp.Contains(":"))
{
string[] plist = item.ProxyIp.Split(':');
WebProxy myProxy = new WebProxy(plist[0].Trim(), Convert.ToInt32(plist[1].Trim()))
{
//建议连接
Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd)
};
//给当前请求对象
request.Proxy = myProxy;
}
else
{
WebProxy myProxy = new WebProxy(item.ProxyIp, false)
{
//建议连接
Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd)
};
//给当前请求对象
request.Proxy = myProxy;
}
}
else if (isIeProxy)
{
//设置为IE代理
}
else
{
request.Proxy = item.WebProxy;
}
}
#endregion
#region private main
/// <summary>
/// 回调验证证书问题
/// </summary>
/// <param name="sender">流对象</param>
/// <param name="certificate">证书</param>
/// <param name="chain">X509Chain</param>
/// <param name="errors">SslPolicyErrors</param>
/// <returns>bool</returns>
private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; }
/// <summary>
/// 通过设置这个属性可以在发出连接的时候绑定客户端发出连接所使用的IP地址。
/// </summary>
/// <param name="servicePoint"></param>
/// <param name="remoteEndPoint"></param>
/// <param name="retryCount"></param>
/// <returns></returns>
private IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
return _IPEndPoint;//端口号
}
#endregion
}
#region public calss
/// <summary>
/// Http请求参考类
/// </summary>
public class HttpItem
{
/// <summary>
/// 请求URL必须填写
/// </summary>
public string URL { get; set; }
string _Method = "GET";
/// <summary>
/// 请求方式默认为GET方式,当为POST方式时必须设置Postdata的值
/// </summary>
public string Method
{
get { return _Method; }
set { _Method = value; }
}
int _Timeout = 100000;
/// <summary>
/// 默认请求超时时间
/// </summary>
public int Timeout
{
get { return _Timeout; }
set { _Timeout = value; }
}
int _ReadWriteTimeout = 30000;
/// <summary>
/// 默认写入Post数据超时间
/// </summary>
public int ReadWriteTimeout
{
get { return _ReadWriteTimeout; }
set { _ReadWriteTimeout = value; }
}
/// <summary>
/// 设置Host的标头信息
/// </summary>
public string Host { get; set; }
Boolean _KeepAlive = true;
/// <summary>
/// 获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接默认为true。
/// </summary>
public Boolean KeepAlive
{
get { return _KeepAlive; }
set { _KeepAlive = value; }
}
string _Accept = "text/html, application/xhtml+xml, */*";
/// <summary>
/// 请求标头值 默认为text/html, application/xhtml+xml, */*
/// </summary>
public string Accept
{
get { return _Accept; }
set { _Accept = value; }
}
string _ContentType = "text/html";
/// <summary>
/// 请求返回类型默认 text/html
/// </summary>
public string ContentType
{
get { return _ContentType; }
set { _ContentType = value; }
}
string _UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
/// <summary>
/// 客户端访问信息默认Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
/// </summary>
public string UserAgent
{
get { return _UserAgent; }
set { _UserAgent = value; }
}
/// <summary>
/// 返回数据编码默认为NUll,可以自动识别,一般为utf-8,gbk,gb2312
/// </summary>
public Encoding Encoding { get; set; }
private PostDataType _PostDataType = PostDataType.String;
/// <summary>
/// Post的数据类型
/// </summary>
public PostDataType PostDataType
{
get { return _PostDataType; }
set { _PostDataType = value; }
}
/// <summary>
/// Post请求时要发送的字符串Post数据
/// </summary>
public string Postdata { get; set; }
/// <summary>
/// Post请求时要发送的Byte类型的Post数据
/// </summary>
public byte[] PostdataByte { get; set; }
/// <summary>
/// Cookie对象集合
/// </summary>
public CookieCollection CookieCollection { get; set; }
/// <summary>
/// 请求时的Cookie
/// </summary>
public string Cookie { get; set; }
/// <summary>
/// 来源地址,上次访问地址
/// </summary>
public string Referer { get; set; }
/// <summary>
/// 证书绝对路径
/// </summary>
public string CerPath { get; set; }
/// <summary>
/// 设置代理对象不想使用IE默认配置就设置为Null而且不要设置ProxyIp
/// </summary>
public WebProxy WebProxy { get; set; }
private Boolean isToLower = false;
/// <summary>
/// 是否设置为全文小写,默认为不转化
/// </summary>
public Boolean IsToLower
{
get { return isToLower; }
set { isToLower = value; }
}
private Boolean allowautoredirect = false;
/// <summary>
/// 支持跳转页面,查询结果将是跳转后的页面,默认是不跳转
/// </summary>
public Boolean Allowautoredirect
{
get { return allowautoredirect; }
set { allowautoredirect = value; }
}
private int connectionlimit = 1024;
/// <summary>
/// 最大连接数
/// </summary>
public int Connectionlimit
{
get { return connectionlimit; }
set { connectionlimit = value; }
}
/// <summary>
/// 代理Proxy 服务器用户名
/// </summary>
public string ProxyUserName { get; set; }
/// <summary>
/// 代理 服务器密码
/// </summary>
public string ProxyPwd { get; set; }
/// <summary>
/// 代理 服务IP,如果要使用IE代理就设置为ieproxy
/// </summary>
public string ProxyIp { get; set; }
private ResultType resulttype = ResultType.String;
/// <summary>
/// 设置返回类型String和Byte
/// </summary>
public ResultType ResultType
{
get { return resulttype; }
set { resulttype = value; }
}
private WebHeaderCollection header = new WebHeaderCollection();
/// <summary>
/// header对象
/// </summary>
public WebHeaderCollection Header
{
get { return header; }
set { header = value; }
}
/// <summary>
/// 获取或设置用于请求的 HTTP 版本。返回结果:用于请求的 HTTP 版本。默认为 System.Net.HttpVersion.Version11。
/// </summary>
public Version ProtocolVersion { get; set; }
private Boolean _expect100continue = false;
/// <summary>
/// 获取或设置一个 System.Boolean 值,该值确定是否使用 100-Continue 行为。如果 POST 请求需要 100-Continue 响应,则为 true否则为 false。默认值为 true。
/// </summary>
public Boolean Expect100Continue
{
get { return _expect100continue; }
set { _expect100continue = value; }
}
/// <summary>
/// 设置509证书集合
/// </summary>
public X509CertificateCollection ClentCertificates { get; set; }
/// <summary>
/// 设置或获取Post参数编码,默认的为Default编码
/// </summary>
public Encoding PostEncoding { get; set; }
private ResultCookieType _ResultCookieType = ResultCookieType.String;
/// <summary>
/// Cookie返回类型,默认的是只返回字符串类型
/// </summary>
public ResultCookieType ResultCookieType
{
get { return _ResultCookieType; }
set { _ResultCookieType = value; }
}
private ICredentials _ICredentials = CredentialCache.DefaultCredentials;
/// <summary>
/// 获取或设置请求的身份验证信息。
/// </summary>
public ICredentials ICredentials
{
get { return _ICredentials; }
set { _ICredentials = value; }
}
/// <summary>
/// 设置请求将跟随的重定向的最大数目
/// </summary>
public int MaximumAutomaticRedirections { get; set; }
private DateTime? _IfModifiedSince = null;
/// <summary>
/// 获取和设置IfModifiedSince默认为当前日期和时间
/// </summary>
public DateTime? IfModifiedSince
{
get { return _IfModifiedSince; }
set { _IfModifiedSince = value; }
}
#region ip-port
private IPEndPoint _IPEndPoint = null;
/// <summary>
/// 设置本地的出口ip和端口
/// </summary>]
/// <example>
///item.IPEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1"),80);
/// </example>
public IPEndPoint IPEndPoint
{
get { return _IPEndPoint; }
set { _IPEndPoint = value; }
}
#endregion
}
/// <summary>
/// Http返回参数类
/// </summary>
public class HttpResult
{
/// <summary>
/// Http请求返回的Cookie
/// </summary>
public string Cookie { get; set; }
/// <summary>
/// Cookie对象集合
/// </summary>
public CookieCollection CookieCollection { get; set; }
private string _html = string.Empty;
/// <summary>
/// 返回的String类型数据 只有ResultType.String时才返回数据其它情况为空
/// </summary>
public string Html
{
get { return _html; }
set { _html = value; }
}
/// <summary>
/// 返回的Byte数组 只有ResultType.Byte时才返回数据其它情况为空
/// </summary>
public byte[] ResultByte { get; set; }
/// <summary>
/// header对象
/// </summary>
public WebHeaderCollection Header { get; set; }
/// <summary>
/// 返回状态说明
/// </summary>
public string StatusDescription { get; set; }
/// <summary>
/// 返回状态码,默认为OK
/// </summary>
public HttpStatusCode StatusCode { get; set; }
/// <summary>
/// 最后访问的URl
/// </summary>
public string ResponseUri { get; set; }
/// <summary>
/// 获取重定向的URl
/// </summary>
public string RedirectUrl
{
get
{
try
{
if (Header != null && Header.Count > 0)
{
if (Header.AllKeys.Any(k => k.ToLower().Contains("location")))
{
string baseurl = Header["location"].ToString().Trim();
string locationurl = baseurl.ToLower();
if (!string.IsNullOrWhiteSpace(locationurl))
{
bool b = locationurl.StartsWith("http://") || locationurl.StartsWith("https://");
if (!b)
{
baseurl = new Uri(new Uri(ResponseUri), baseurl).AbsoluteUri;
}
}
return baseurl;
}
}
}
catch { }
return string.Empty;
}
}
}
/// <summary>
/// 返回类型
/// </summary>
public enum ResultType
{
/// <summary>
/// 表示只返回字符串 只有Html有数据
/// </summary>
String,
/// <summary>
/// 表示返回字符串和字节流 ResultByte和Html都有数据返回
/// </summary>
Byte
}
/// <summary>
/// Post的数据格式默认为string
/// </summary>
public enum PostDataType
{
/// <summary>
/// 字符串类型这时编码Encoding可不设置
/// </summary>
String,
/// <summary>
/// Byte类型需要设置PostdataByte参数的值编码Encoding可设置为空
/// </summary>
Byte,
/// <summary>
/// 传文件Postdata必须设置为文件的绝对路径必须设置Encoding的值
/// </summary>
FilePath
}
/// <summary>
/// Cookie返回类型
/// </summary>
public enum ResultCookieType
{
/// <summary>
/// 只返回字符串类型的Cookie
/// </summary>
String,
/// <summary>
/// CookieCollection格式的Cookie集合同时也返回String类型的cookie
/// </summary>
CookieCollection
}
#endregion
}

View File

@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("RyWeb")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RyWeb")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("e64caa45-23b4-4417-b353-192beb675825")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2107.0101")]
[assembly: AssemblyFileVersion("3.0.2107.0101")]

View File

@ -1,293 +0,0 @@
using DotNet4.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RyWeb
{
/// <summary>
///
/// </summary>
public class QuickWeb
{
/// <summary>
/// 以post方式获取网页源码
/// </summary>
/// <param name="url"></param>
/// <param name="post"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public HttpResult Post(string url, string post, string cookie)
{
return Post(url, post, "application/x-www-form-urlencoded", cookie);
}
/// <summary>
/// 以post方式提交json内容
/// </summary>
/// <param name="url"></param>
/// <param name="post"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public HttpResult PostJson(string url, string post, string cookie)
{
return Post(url, post, "application/json", cookie);
}
/// <summary>
/// 以post方式提交json内容
/// </summary>
/// <param name="url"></param>
/// <param name="post"></param>
/// <returns></returns>
public HttpResult PostJson(string url, string post)
{
return Post(url, post, "application/json", "");
}
/// <summary>
/// 以post方式获取网页源码
/// </summary>
/// <param name="url"></param>
/// <param name="post"></param>
/// <param name="ContentType"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public HttpResult Post(string url, string post,string ContentType, string cookie)
{
try
{
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
URL = url,
Postdata = post,
ContentType = ContentType,
Method = "POST",
Timeout = Timeout,
ReadWriteTimeout = Timeout,
UserAgent = UserAgent,
Referer=Referer
};
if (cookie.Length > 0)
{
m.Cookie = cookie;
}
HttpResult r = t.GetHtml(m);
return r;
}
catch
{
HttpResult r = new HttpResult();
return r;
}
}
/// <summary>
/// 以post方式获取网页源码
/// </summary>
/// <param name="url"></param>
/// <param name="post"></param>
/// <returns></returns>
public HttpResult Post(string url, string post)
{
return Post(url, post, cookie);
}
/// <summary>
/// 获取网址对应的文件大小
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public long GetSize(string url)
{
try
{
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
URL = url,
Method = "HEAD",
Allowautoredirect = true,
Cookie = cookie,
Timeout = Timeout,
ReadWriteTimeout = Timeout,
UserAgent = UserAgent,
Referer = Referer
};
HttpResult r = t.GetHtml(m);
if (r.StatusCode == System.Net.HttpStatusCode.OK)
{
return Convert.ToInt64(r.Header["Content-Length"]);
}
else if (r.StatusCode == System.Net.HttpStatusCode.MethodNotAllowed)
{
System.Net.ServicePointManager.DefaultConnectionLimit = 512;
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
long totalBytes = response.ContentLength;
return totalBytes;
}
else
return 0;
}
catch
{
return 0;
}
}
/// <summary>
///
/// </summary>
public string UserAgent
{
get; set;
} = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
/// <summary>
/// 获取网页源码
/// </summary>
/// <param name="url"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public HttpResult Get(string url, string cookie)
{
try
{
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
URL = url,
ContentType= "application/x-www-form-urlencoded"
};
if (cookie.Length>0)
{
m.Cookie = cookie;
}
m.UserAgent = UserAgent;
m.Allowautoredirect = true;
m.Timeout = Timeout;
m.ReadWriteTimeout = Timeout;
m.Referer = Referer;
HttpResult r = t.GetHtml(m);
return r;
}
catch
{
HttpResult r = new HttpResult()
{
Html = ""
};
return r;
}
}
/// <summary>
/// 获取网页源码
/// </summary>
/// <param name="url"></param>
///<param name="encoding"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public HttpResult Get(string url,Encoding encoding, string cookie)
{
try
{
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
URL = url
};
if (cookie != "")
{
m.Cookie = cookie;
}
m.UserAgent = UserAgent;
m.Encoding = encoding;
m.Allowautoredirect = true;
m.Timeout = Timeout;
m.ReadWriteTimeout = Timeout;
m.Referer = Referer;
HttpResult r = t.GetHtml(m);
return r;
}
catch
{
HttpResult r = new HttpResult()
{
Html = ""
};
return r;
}
}
/// <summary>
/// 获取网页源码
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public HttpResult Get(string url)
{
return Get(url, cookie);
}
/// <summary>
///
/// </summary>
public string Cookie
{
get { return cookie; }
}
/// <summary>
///
/// </summary>
public string Referer
{
get;set;
}
/// <summary>
///
/// </summary>
public int Timeout { get; set; } = 10000;
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <param name="encode"></param>
/// <returns></returns>
public string UrlEncode(string str, Encoding encode)
{
StringBuilder sb = new StringBuilder();
byte[] byStr = encode.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
for (int i = 0; i < byStr.Length; i++)
{
var item = Convert.ToString(byStr[i], 16);
if (item.Length == 1) { item = "0" + item; }
sb.Append(@"%" + item);
}
return (sb.ToString());
}
private string cookie = "";
/// <summary>
/// 将相对网址转换成绝对网址
/// </summary>
/// <param name="rel_url">相对网址</param>
/// <param name="cur_pageUrl">当前页面地址</param>
/// <returns>转换后的绝对网址</returns>
public string ConvertUrl(string rel_url, string cur_pageUrl)
{
if (rel_url == "")
{
return cur_pageUrl;
}
try
{
string _rel_url = rel_url;
if (_rel_url.IndexOf("//")==0)
{
int iPos = cur_pageUrl.IndexOf(":");
if (iPos > 0)
{
_rel_url = cur_pageUrl.Substring(0,iPos)+ ":" + _rel_url;
}
}
Uri baseUri = new Uri(cur_pageUrl); //
Uri absoluteUri = new Uri(baseUri, _rel_url);//相对绝对路径都在这里转 这里的urlx ="../test.html"
return absoluteUri.AbsoluteUri.Replace("&amp;", "&");//
}
catch { return rel_url; }
}
}
}

View File

@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E64CAA45-23B4-4417-B353-192BEB675825}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>RyWeb</RootNamespace>
<AssemblyName>RyWeb</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Bin\Debug\CommonControls\.NET4\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\Bin\Debug\CommonControls\.NET4\RyWeb.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Bin\Release\CommonControls\.NET4\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\..\Bin\Release\CommonControls\.NET4\RyWeb.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="HttpHelper.cs" />
<Compile Include="QuickWeb.cs" />
<Compile Include="WebDecode.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>

View File

@ -1,467 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RyWeb
{
/// <summary>
///
/// </summary>
public class UrlDecoder
{
// Fields
private int _bufferSize;
private byte[] _byteBuffer;
private char[] _charBuffer;
private Encoding _encoding;
private int _numBytes;
private int _numChars;
internal UrlDecoder(int bufferSize, Encoding encoding)
{
this._bufferSize = bufferSize;
this._encoding = encoding;
this._charBuffer = new char[bufferSize];
}
internal void AddByte(byte b)
{
if (this._byteBuffer == null)
{
this._byteBuffer = new byte[this._bufferSize];
}
this._byteBuffer[this._numBytes++] = b;
}
internal void AddChar(char ch)
{
if (this._numBytes > 0)
{
this.FlushBytes();
}
this._charBuffer[this._numChars++] = ch;
}
internal string GetString()
{
if (this._numBytes > 0)
{
this.FlushBytes();
}
if (this._numChars > 0)
{
return new string(this._charBuffer, 0, this._numChars);
}
return string.Empty;
}
private void FlushBytes()
{
if (this._numBytes > 0)
{
this._numChars += this._encoding.GetChars(this._byteBuffer, 0, this._numBytes, this._charBuffer, this._numChars);
this._numBytes = 0;
}
}
}
/// <summary>
///
/// </summary>
public class WebDecode
{
private static int HexToInt(char h)
{
if ((h >= '0') && (h <= '9'))
{
return (h - '0');
}
if ((h >= 'a') && (h <= 'f'))
{
return ((h - 'a') + 10);
}
if ((h >= 'A') && (h <= 'F'))
{
return ((h - 'A') + 10);
}
return -1;
}
private static string UrlDecodeStringFromStringInternal(string s, Encoding e)
{
int length = s.Length;
UrlDecoder decoder = new UrlDecoder(length, e);
for (int i = 0; i < length; i++)
{
char ch = s[i];
if (ch == '+')
{
ch = ' ';
}
else if ((ch == '%') && (i < (length - 2)))
{
if ((s[i + 1] == 'u') && (i < (length - 5)))
{
int num3 = HexToInt(s[i + 2]);
int num4 = HexToInt(s[i + 3]);
int num5 = HexToInt(s[i + 4]);
int num6 = HexToInt(s[i + 5]);
if (((num3 < 0) || (num4 < 0)) || ((num5 < 0) || (num6 < 0)))
{
goto Label_0106;
}
ch = (char)((((num3 << 12) | (num4 << 8)) | (num5 << 4)) | num6);
i += 5;
decoder.AddChar(ch);
continue;
}
int num7 = HexToInt(s[i + 1]);
int num8 = HexToInt(s[i + 2]);
if ((num7 >= 0) && (num8 >= 0))
{
byte b = (byte)((num7 << 4) | num8);
i += 2;
decoder.AddByte(b);
continue;
}
}
Label_0106:
if ((ch & 0xff80) == 0)
{
decoder.AddByte((byte)ch);
}
else
{
decoder.AddChar(ch);
}
}
return decoder.GetString();
}
/// <summary>
/// url解密
/// </summary>
/// <param name="str"></param>
/// <param name="e"></param>
/// <returns></returns>
public static string UrlDecode(string str, Encoding e)
{
if (str == null)
{
return null;
}
return UrlDecodeStringFromStringInternal(str, e);
}
/// <summary>
/// url解密,按UTF8方式解密
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string UrlDecode(string s)
{
Encoding e = Encoding.UTF8;
return UrlDecode(s, e);
}
/// <summary>
/// Url加密
/// </summary>
/// <param name="str"></param>
/// <param name="encode"></param>
/// <returns></returns>
public static string UrlEncode(string str, Encoding encode)
{
StringBuilder sb = new StringBuilder();
byte[] byStr = encode.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
for (int i = 0; i < byStr.Length; i++)
{
sb.Append(@"%" + Convert.ToString(byStr[i], 16));
}
return (sb.ToString().Replace(" ", "+"));
}
/// <summary>
/// Url加密,按UTF8方式加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string UrlEncode(string str)
{
return UrlEncodeNonAscii(str,Encoding.UTF8).Replace(" ", "+");
}
private static int HexDigit(char c)
{
if ((c >= '0') && (c <= '9'))
{
return (c - '0');
}
if ((c >= 'A') && (c <= 'F'))
{
return (('\n' + c) - 0x41);
}
if ((c >= 'a') && (c <= 'f'))
{
return (('\n' + c) - 0x61);
}
return -1;
}
/// <summary>
/// 解密
/// </summary>
/// <param name="string"></param>
/// <returns></returns>
public static string Unescape(object @string)
{
string str = Convert.ToString(@string);
int length = str.Length;
StringBuilder builder = new StringBuilder(length);
int num6 = -1;
while (++num6 < length)
{
char ch = str[num6];
if (ch == '%')
{
int num2;
int num3;
int num4;
int num5;
if (((((num6 + 5) < length) && (str[num6 + 1] == 'u')) && (((num2 = HexDigit(str[num6 + 2])) != -1) && ((num3 = HexDigit(str[num6 + 3])) != -1))) && (((num4 = HexDigit(str[num6 + 4])) != -1) && ((num5 = HexDigit(str[num6 + 5])) != -1)))
{
ch = (char)((((num2 << 12) + (num3 << 8)) + (num4 << 4)) + num5);
num6 += 5;
}
else if ((((num6 + 2) < length) && ((num2 = HexDigit(str[num6 + 1])) != -1)) && ((num3 = HexDigit(str[num6 + 2])) != -1))
{
ch = (char)((num2 << 4) + num3);
num6 += 2;
}
}
builder.Append(ch);
}
return builder.ToString();
}
/// <summary>
/// 加密
/// </summary>
/// <param name="string"></param>
/// <returns></returns>
public static string Escape(object @string)
{
string str = Convert.ToString(@string);
string str2 = "0123456789ABCDEF";
int length = str.Length;
StringBuilder builder = new StringBuilder(length * 2);
int num3 = -1;
while (++num3 < length)
{
char ch = str[num3];
int num2 = ch;
if ((((0x41 > num2) || (num2 > 90)) && ((0x61 > num2) || (num2 > 0x7a))) && ((0x30 > num2) || (num2 > 0x39)))
{
switch (ch)
{
case '@':
case '*':
case '_':
case '+':
case '-':
case '.':
case '/':
goto Label_0125;
}
builder.Append('%');
if (num2 < 0x100)
{
builder.Append(str2[num2 / 0x10]);
ch = str2[num2 % 0x10];
}
else
{
builder.Append('u');
builder.Append(str2[(num2 >> 12) % 0x10]);
builder.Append(str2[(num2 >> 8) % 0x10]);
builder.Append(str2[(num2 >> 4) % 0x10]);
ch = str2[num2 % 0x10];
}
}
Label_0125:
builder.Append(ch);
}
return builder.ToString();
}
private static bool ValidateUrlEncodingParameters(byte[] bytes, int offset, int count)
{
if ((bytes == null) && (count == 0))
{
return false;
}
if (bytes == null)
{
throw new ArgumentNullException("bytes");
}
if ((offset < 0) || (offset > bytes.Length))
{
throw new ArgumentOutOfRangeException("offset");
}
if ((count < 0) || ((offset + count) > bytes.Length))
{
throw new ArgumentOutOfRangeException("count");
}
return true;
}
private static bool IsNonAsciiByte(byte b)
{
if (b < 0x7f)
{
return (b < 0x20);
}
return true;
}
/// <summary>
///
/// </summary>
/// <param name="bytes"></param>
/// <param name="offset"></param>
/// <param name="count"></param>
/// <param name="alwaysCreateNewReturnValue"></param>
/// <returns></returns>
public static byte[] UrlEncodeNonAscii(byte[] bytes, int offset, int count, bool alwaysCreateNewReturnValue)
{
if (!ValidateUrlEncodingParameters(bytes, offset, count))
{
return null;
}
int num = 0;
for (int i = 0; i < count; i++)
{
if (IsNonAsciiByte(bytes[offset + i]))
{
num++;
}
}
if (!alwaysCreateNewReturnValue && (num == 0))
{
return bytes;
}
byte[] buffer = new byte[count + (num * 2)];
int num3 = 0;
for (int j = 0; j < count; j++)
{
byte b = bytes[offset + j];
if (IsNonAsciiByte(b))
{
buffer[num3++] = 0x25;
buffer[num3++] = (byte)IntToHex((b >> 4) & 15);
buffer[num3++] = (byte)IntToHex(b & 15);
}
else
{
buffer[num3++] = b;
}
}
return buffer;
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <param name="e"></param>
/// <returns></returns>
public static string UrlEncodeNonAscii(string str, Encoding e)
{
if (string.IsNullOrEmpty(str))
{
return str;
}
if (e == null)
{
e = Encoding.UTF8;
}
byte[] bytes = e.GetBytes(str);
byte[] buffer2 = UrlEncodeNonAscii(bytes, 0, bytes.Length, false);
return Encoding.ASCII.GetString(buffer2);
}
/// <summary>
/// url加密,Unicode
/// </summary>
/// <param name="value"></param>
/// <param name="ignoreAscii"></param>
/// <returns></returns>
public static string UrlEncodeUnicode(string value, bool ignoreAscii)
{
if (value == null)
{
return null;
}
int length = value.Length;
StringBuilder builder = new StringBuilder(length);
for (int i = 0; i < length; i++)
{
char ch = value[i];
if ((ch & 0xff80) == 0)
{
if (ignoreAscii || IsUrlSafeChar(ch))
{
builder.Append(ch);
}
else if (ch == ' ')
{
builder.Append('+');
}
else
{
builder.Append('%');
builder.Append(IntToHex((ch >> 4) & '\x000f'));
builder.Append(IntToHex(ch & '\x000f'));
}
}
else
{
builder.Append("%u");
builder.Append(IntToHex((ch >> 12) & '\x000f'));
builder.Append(IntToHex((ch >> 8) & '\x000f'));
builder.Append(IntToHex((ch >> 4) & '\x000f'));
builder.Append(IntToHex(ch & '\x000f'));
}
}
return builder.ToString();
}
/// <summary>
///
/// </summary>
/// <param name="ch"></param>
/// <returns></returns>
public static bool IsUrlSafeChar(char ch)
{
if ((((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) || ((ch >= '0') && (ch <= '9')))
{
return true;
}
switch (ch)
{
case '(':
case ')':
case '*':
case '-':
case '.':
case '_':
case '!':
return true;
}
return false;
}
/// <summary>
///
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
public static char IntToHex(int n)
{
if (n <= 9)
{
return (char)(n + 0x30);
}
return (char)((n - 10) + 0x61);
}
/// <summary>
/// Html解码,将html里未转义成功的重新转义。
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ConvertHtmlInner(string str)
{
return System.Web.HttpUtility.HtmlDecode(str);
}
}
}

View File

@ -4328,7 +4328,7 @@ namespace BrightIdeasSoftware
}
/// <summary>
/// Remove all items from this list
/// 移除所有对象(线程安全)
/// </summary>
/// <remark>This method can safely be called from background threads.</remark>
public virtual void ClearObjects() {
@ -6073,13 +6073,13 @@ namespace BrightIdeasSoftware
if (first <= last) {
for (int i = first; i <= last; i++) {
string data = column.GetStringValue(this.GetNthItemInDisplayOrder(i).RowObject);
if (data.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))
if (data.IndexOf(text, StringComparison.CurrentCultureIgnoreCase)>=0)
return i;
}
} else {
for (int i = first; i >= last; i--) {
string data = column.GetStringValue(this.GetNthItemInDisplayOrder(i).RowObject);
if (data.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))
if (data.IndexOf(text, StringComparison.CurrentCultureIgnoreCase)>=0)
return i;
}
}

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2109.1301")]
[assembly: AssemblyFileVersion("3.0.2109.1301")]
[assembly: AssemblyVersion("3.0.2110.0101")]
[assembly: AssemblyFileVersion("3.0.2110.0101")]

View File

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30330.147
# Visual Studio Version 17
VisualStudioVersion = 17.0.31612.314
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ryUpdateV4", "ryUpdate\ryUpdateV4.csproj", "{11A63E24-0257-4C54-A109-F1A609A52A62}"
EndProject
@ -11,14 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDbV4", "MyDb\MyDbV4.cspro
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDb_SQLiteV4", "MyDb_SQLite\MyDb_SQLiteV4.csproj", "{6B969CE8-D723-4B2C-A8FD-FAD2FB28FF01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDb_MSSQLV4", "MyDb_MSSQL\MyDb_MSSQLV4.csproj", "{631290D3-7CB8-4B62-833E-361C20A5F2E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDb_MySQLV4", "MyDb_MySQL\MyDb_MySQLV4.csproj", "{DE092C43-1AB5-4229-8EC8-35C9936C4331}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Itrycn_Project", "Itrycn_Project\Itrycn_Project.csproj", "{62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RyWeb", "RyWeb\RyWeb.csproj", "{E64CAA45-23B4-4417-B353-192BEB675825}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RyPrint", "RyPrint\RyPrint.csproj", "{B6784652-825A-482C-8A21-08E2539AF2BF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Itrycn_Project2", "Itrycn_Project2\Itrycn_Project2.csproj", "{DC9FDB61-FEDD-4795-AFDC-8376AB781C56}"
@ -63,14 +59,6 @@ Global
{6B969CE8-D723-4B2C-A8FD-FAD2FB28FF01}.Release|Any CPU.Build.0 = Release|Any CPU
{6B969CE8-D723-4B2C-A8FD-FAD2FB28FF01}.Release|x86.ActiveCfg = Release|Any CPU
{6B969CE8-D723-4B2C-A8FD-FAD2FB28FF01}.Release|x86.Build.0 = Release|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Debug|x86.ActiveCfg = Debug|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Debug|x86.Build.0 = Debug|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Release|Any CPU.Build.0 = Release|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Release|x86.ActiveCfg = Release|Any CPU
{631290D3-7CB8-4B62-833E-361C20A5F2E0}.Release|x86.Build.0 = Release|Any CPU
{DE092C43-1AB5-4229-8EC8-35C9936C4331}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE092C43-1AB5-4229-8EC8-35C9936C4331}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE092C43-1AB5-4229-8EC8-35C9936C4331}.Debug|x86.ActiveCfg = Debug|Any CPU
@ -87,14 +75,6 @@ Global
{62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Release|Any CPU.Build.0 = Release|Any CPU
{62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Release|x86.ActiveCfg = Release|Any CPU
{62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Release|x86.Build.0 = Release|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Debug|x86.ActiveCfg = Debug|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Debug|x86.Build.0 = Debug|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Release|Any CPU.Build.0 = Release|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Release|x86.ActiveCfg = Release|Any CPU
{E64CAA45-23B4-4417-B353-192BEB675825}.Release|x86.Build.0 = Release|Any CPU
{B6784652-825A-482C-8A21-08E2539AF2BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6784652-825A-482C-8A21-08E2539AF2BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6784652-825A-482C-8A21-08E2539AF2BF}.Debug|x86.ActiveCfg = Debug|Any CPU