### RySmartEditor V1.0.2501.2701 - *.[改进]FTP上传时限制300毫秒内只能刷新一次UI进度。 ### SuperDesign V3.0.2501.2701 - *.[新增]新增支持在线升级功能。 #### 项目功能->项目管理 - *.[新增]FTP上传文件列表和打包文件列表支持在软件里直接编辑。 - *.[改进]更新dll版本将比对版本号,只更新版本号更新或者更新日期更新的dll。 #### 项目功能->更新日志 - *.[新增]新增支持自动记录过的分组信息,然后可以进行选择快速插入。 - *.[新增]记录使用过的项目信息到总数据库,以方便总览。 - *.[改进]右键插入日志时直接对富文本框进行编辑,而不是替换内容,从而具备撤销功能。 - *.[改进]改进MD日志输出的样式设计。 - *.[修复]修复《确认日志覆盖》窗口里的按钮,随着窗口大小变化,按钮会错乱的BUG。 - *.[修复]修复双击日志列表显示日志时,针对本周的时间显示不正确的BUG。 - *.[修复]修复右键新增日志时,如果没有分组,插入的行可能不正确的BUG。 - *.[修复]修复设为开发日志后,鼠标指针变到文本开头的问题。 #### 网页抓取工具 - *.[新增]新增多个常用UA。 - *.[新增]切换Url时如果存在Cookie和Header时,则提示是否清空。 - *.[新增]保存记录时新增支持保存UA。 - *.[新增]Url列表支持图标展示。
382 lines
15 KiB
C#
382 lines
15 KiB
C#
using ryCommon;
|
|
using ryCommonDb;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
using static ryCommonDb.DataProvider;
|
|
|
|
namespace 开发辅助工具.Manager
|
|
{
|
|
public class Itrycn_Db
|
|
{
|
|
public static bool IsCloseConfirm = true;
|
|
public static string Sys_SQLConn = "<app>\\SysDb\\Tools.dat|";
|
|
public static string User_SQLConn = "<app>\\UserDb\\MyDb.dat|";
|
|
public static string History_SQLConn = "<app>\\UserDb\\history.dat|";
|
|
public static string last_clip_text = "";
|
|
public static ryCommonDb.DataProvider.DataProviderType dataType = ryCommonDb.DataProvider.DataProviderType.SQLiteDataProvider;
|
|
public static IDbInterface CreateDataProvider(DataProviderType dataProviderType)
|
|
{
|
|
switch (dataProviderType)
|
|
{
|
|
//case DataProviderType.OdbcDataProvider:
|
|
// return new OdbcDataProvider();
|
|
//case DataProviderType.OleDbDataProvider:
|
|
// return new OleDbDataProvider();
|
|
//case DataProviderType.OracleDataProvider:
|
|
// return new OracleDataProvider();
|
|
case DataProviderType.SQLiteDataProvider:
|
|
return new SQLiteDataProvider();
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 判断WinSCP是否在运行
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static bool WinSCP_IsRunning() {
|
|
var exist = false;
|
|
try {
|
|
var proc_list = Process.GetProcessesByName("WinSCP");
|
|
for (int i = 0; i < proc_list.Length; i++) {
|
|
var path = proc_list[i].GetPath();
|
|
if (path.Length > 0) {
|
|
if (path.IndexOfEx(Application.StartupPath) < 0) {
|
|
exist = true; break;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
catch {
|
|
|
|
}
|
|
if (!exist) {
|
|
//RyForm.get
|
|
}
|
|
return exist;
|
|
}
|
|
public static void DeleteFiles(string dir, string filter)
|
|
{
|
|
var files = System.IO.Directory.GetFiles(dir, filter);
|
|
for (int i = 0; i < files.Length; i++)
|
|
{
|
|
ryCommon.RyFiles.DeleteFile(files[i]);
|
|
}
|
|
ryCommon.RyFiles.DeleteFile(dir + "\\" + filter);
|
|
var dirs = System.IO.Directory.GetDirectories(dir);
|
|
for (int i = 0; i < dirs.Length; i++)
|
|
{
|
|
DeleteFiles(dirs[i], filter);
|
|
}
|
|
}
|
|
public static void CreateSysTable()
|
|
{
|
|
IDbInterface db = CreateDataProvider(dataType);
|
|
if (db.ConnDb(Sys_SQLConn) == 1)
|
|
{
|
|
#region 工具表
|
|
RyQuickSQL mySQL = new RyQuickSQL("Tools");
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("Des", "");
|
|
mySQL.AddField("Keys", "");
|
|
mySQL.AddField("Addr", "");
|
|
mySQL.AddField("PY", "");
|
|
mySQL.AddField("Sort", 0);
|
|
mySQL.AddField("addTime",DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
//
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取设置
|
|
/// </summary>
|
|
/// <param name="name"></param>
|
|
/// <param name="defValue"></param>
|
|
/// <returns></returns>
|
|
public static string GetSetting(string name, string defValue)
|
|
{
|
|
var result = defValue;
|
|
IDbInterface db = CreateDataProvider(dataType);
|
|
if (db.ConnDb(User_SQLConn) == 1)
|
|
{
|
|
RyQuickSQL mySQL = new RyQuickSQL("Settings");
|
|
mySQL.AddField("Name", name);
|
|
var ds = db.ReadData("select * from Settings where Name=@Name", mySQL);
|
|
if (ds.HaveData())
|
|
{
|
|
result = ds.GetRow(0)["Value"].ToString();
|
|
}
|
|
ds.Dispose();
|
|
}
|
|
db.Free();
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// 设置设置
|
|
/// </summary>
|
|
/// <param name="name"></param>
|
|
/// <param name="defValue"></param>
|
|
/// <returns></returns>
|
|
public static int SetSetting(string name, string value)
|
|
{
|
|
var result = 0;
|
|
IDbInterface db = CreateDataProvider(dataType);
|
|
if (db.ConnDb(User_SQLConn) == 1)
|
|
{
|
|
RyQuickSQL mySQL = new RyQuickSQL("Settings");
|
|
mySQL.AddField("Name", name);
|
|
mySQL.AddField("Value", value);
|
|
result= db.ExecuteNonQuery(mySQL.GetUpdateSQL()+ " where Name=@Name", mySQL);
|
|
if (result==0)
|
|
{
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
result = db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
|
|
}
|
|
}
|
|
db.Free();
|
|
return result;
|
|
}
|
|
public static void CreateDb()
|
|
{
|
|
CreateSysTable();
|
|
CreateUserTable();
|
|
CreateHistoryTable();
|
|
}
|
|
public static void CreateUserTable()
|
|
{
|
|
IDbInterface db = CreateDataProvider(dataType);
|
|
if (db.ConnDb(User_SQLConn) == 1)
|
|
{
|
|
#region Url表
|
|
RyQuickSQL mySQL = new RyQuickSQL("Urls");
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("Url", "");
|
|
mySQL.AddField("Cookie", "");
|
|
mySQL.AddField("Postdata", "");
|
|
mySQL.AddField("Method", "");
|
|
mySQL.AddField("UserAgent", "");
|
|
mySQL.AddField("Header", "");
|
|
mySQL.AddField("Referer", "");
|
|
mySQL.AddField("ContentType", "");
|
|
mySQL.AddField("Encoding", "");
|
|
mySQL.AddField("IsFav", 0);
|
|
mySQL.AddField("Des", "");
|
|
mySQL.AddField("ClickCount", 0);//点击次数
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region 启动表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "Starts"; ;
|
|
mySQL.AddField("Addr", "");
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("ClickCount", 0);//点击次数
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region 变量表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "VarInfo"; ;
|
|
mySQL.AddField("VarName", "");
|
|
mySQL.AddField("VarValue", "");
|
|
mySQL.AddField("Des", "");//备注
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region API表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "api";
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("Url", "");
|
|
mySQL.AddField("APIName", "");
|
|
mySQL.AddField("Postdata", "");
|
|
mySQL.AddField("desc", "");
|
|
mySQL.AddField("ClickCount", 0);//点击次数
|
|
mySQL.AddField("AddUser", "");
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
if (db.CreateDb(mySQL) == 1)
|
|
{
|
|
db.ExecuteNonQuery("CREATE INDEX index_APIName ON api(APIName); ");
|
|
db.ExecuteNonQuery("CREATE INDEX index_APIUrl ON api(Url); ");
|
|
}
|
|
#endregion
|
|
#region FTP表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "FTP";
|
|
mySQL.AddField("name", "");
|
|
mySQL.AddField("ip", "");
|
|
mySQL.AddField("port", 0);
|
|
mySQL.AddField("remoteDir", "");
|
|
mySQL.AddField("username", "");
|
|
mySQL.AddField("pwd", "");
|
|
mySQL.AddField("encrypt", 0);
|
|
mySQL.AddField("des", "");
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region Site表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "Site";
|
|
mySQL.AddField("name", "");
|
|
mySQL.AddField("localPath", "");
|
|
mySQL.AddField("ftpId", 0);
|
|
mySQL.AddField("ftpDir", "");
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region FavFiles表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "FavFiles";
|
|
mySQL.AddField("name", "");
|
|
mySQL.AddField("FilePath", "");
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region 设置表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "Settings";
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("Value", "");//值
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
if (db.CreateDb(mySQL) == 1)
|
|
{
|
|
db.ExecuteNonQuery("CREATE INDEX index_Name ON Settings(Name); ");
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
public static void CreateHistoryTable()
|
|
{
|
|
IDbInterface db = CreateDataProvider(dataType);
|
|
if (db.ConnDb(History_SQLConn) == 1)
|
|
{
|
|
#region 标签文件表
|
|
RyQuickSQL mySQL = new RyQuickSQL("Files");
|
|
mySQL.AddField("FilePath", "");
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
if (db.CreateDb(mySQL) == 1)
|
|
{
|
|
db.ExecuteNonQuery("CREATE INDEX index_FilePath ON Files(FilePath); ");
|
|
}
|
|
#endregion
|
|
#region 历史记录表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "History"; ;
|
|
mySQL.AddField("fileid", 0);
|
|
mySQL.AddField("name", "");
|
|
mySQL.AddField("size", 0L);
|
|
mySQL.AddField("content", "");
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
db.CreateDb(mySQL);
|
|
#endregion
|
|
#region 历史记录表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "HistoryUrl"; ;
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("Url", "");
|
|
mySQL.AddField("Cookie", "");
|
|
mySQL.AddField("Postdata", "");
|
|
mySQL.AddField("Method", "");
|
|
mySQL.AddField("Header", "");
|
|
mySQL.AddField("Referer", "");
|
|
mySQL.AddField("ContentType", "");
|
|
mySQL.AddField("Encoding", "");
|
|
mySQL.AddField("IsFav", 0);
|
|
mySQL.AddField("Des", "");
|
|
mySQL.AddField("MD5", "");
|
|
mySQL.AddField("ClickCount", 0);//点击次数
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
if (db.CreateDb(mySQL) == 1)
|
|
{
|
|
db.ExecuteNonQuery("CREATE INDEX index_H_Url ON HistoryUrl(Url); ");
|
|
db.ExecuteNonQuery("CREATE INDEX index_H_MD5 ON HistoryUrl(MD5); ");
|
|
}
|
|
#endregion
|
|
#region 设置表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "Settings";
|
|
mySQL.AddField("Name", "");
|
|
mySQL.AddField("Value", "");//值
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
if (db.CreateDb(mySQL) == 1)
|
|
{
|
|
db.ExecuteNonQuery("CREATE INDEX index_Name ON Settings(Name); ");
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 添加历史记录
|
|
/// </summary>
|
|
/// <param name="path"></param>
|
|
/// <param name="content"></param>
|
|
public static void AddHistory(string path, string content)
|
|
{
|
|
new Thread(Start).Start();
|
|
void Start()
|
|
{
|
|
IDbInterface db = CreateDataProvider(dataType);
|
|
if (db.ConnDb(History_SQLConn) == 1)
|
|
{
|
|
var isadd = false;
|
|
RyQuickSQL mySQL = new RyQuickSQL("Files");
|
|
mySQL.AddField("FilePath", path);
|
|
mySQL.AddField("editTime", DateTime.Now);
|
|
if (db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where FilePath=@FilePath", mySQL) == 0)
|
|
{
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
db.Insert(mySQL);
|
|
isadd = true;
|
|
}
|
|
var ds = db.ReadData("select * from Files where FilePath=@FilePath", mySQL);
|
|
if (ds.HaveData())
|
|
{
|
|
var fileid = ds.GetFirstRowData()["id"].ToInt();
|
|
var issame = false;
|
|
if (!isadd)
|
|
{
|
|
var ds_his = db.ReadData("select * from History where fileid=" + fileid + " order by addTime desc limit 1");
|
|
if (ds_his.HaveData())
|
|
{
|
|
if (ds_his.GetFirstRowData()["content"].ToString() == content)
|
|
{
|
|
issame = true;
|
|
}
|
|
}
|
|
ds_his.Dispose();
|
|
}
|
|
if (!issame)
|
|
{
|
|
mySQL.Clear();
|
|
mySQL.TableName = "History";
|
|
mySQL.AddField("fileid", fileid);
|
|
mySQL.AddField("size", content.Length);
|
|
mySQL.AddField("content", content);
|
|
mySQL.AddField("addTime", DateTime.Now);
|
|
db.Insert(mySQL);
|
|
}
|
|
}
|
|
ds.Dispose();
|
|
}
|
|
db.Free();
|
|
}
|
|
}
|
|
}
|
|
}
|