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 = "\\SysDb\\Tools.dat|"; public static string User_SQLConn = "\\UserDb\\MyDb.dat|"; public static string History_SQLConn = "\\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; } } /// /// 判断WinSCP是否在运行 /// /// 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 // } } /// /// 获取设置 /// /// /// /// 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; } /// /// 设置设置 /// /// /// /// 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 } } /// /// 添加历史记录 /// /// /// 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(); } } } }