SuperDesign/Source/RySmartEditor/API/Itrycn_Info.cs
zilinsoft 993f1ca1a9 ### 2024-12-20 星期五更新
------
#### SuperDesign    V3.0.2412.2001
- *.[新增]新增程序更新日志设置和自动发布功能。
- *.[修复]修复Post数据格式不正确时双击文本框会导致软件闪退的BUG。
2024-12-20 08:15:19 +08:00

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();
}
}
}
}