------ #### SuperDesign V3.0.2412.2001 - *.[新增]新增程序更新日志设置和自动发布功能。 - *.[修复]修复Post数据格式不正确时双击文本框会导致软件闪退的BUG。
365 lines
14 KiB
C#
365 lines
14 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 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("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("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 FavGroup表
|
|
mySQL.Clear();
|
|
mySQL.TableName = "FavGroup";
|
|
mySQL.AddField("name", "");
|
|
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("FindText", "");
|
|
mySQL.AddField("GroupId", 1);
|
|
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 = "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();
|
|
}
|
|
}
|
|
}
|
|
}
|