public void InsertData(FilePosData data) { /* * INSERT OR REPLACE INTO FilePosData * (FullPath, Position, ...) * VALUES * ('c:\xxx\xx', 123456, ...) */ string cmdInsert = "INSERT OR REPLACE INTO " + nameof(FilePosData) + " (" + nameof(data.FullPath) + ", " + nameof(data.Position) + ", " + nameof(data.Name) + ", " + nameof(data.FileSize) + ", " + nameof(data.AudioTrack) + ", " + nameof(data.Subtitle) + ")" + " VALUES " + "(" + "\"" + data.FullPath + "\"" + ", " + data.Position + ", " + "\"" + data.Name + "\"" + ", " + data.FileSize + ", " + data.AudioTrack + ", " + data.Subtitle + ")"; _dbConnectiong.Execute(cmdInsert); }
public void Init() { if (!File.Exists(_dbFilePath)) { using (var cn = new SQLiteConnection(_sourceStr)) { FilePosData tmp = new FilePosData(); /* * @"CREATE TABLE FilePosData ( * FullPath TEXT, * Position INTEGER, * ... * CONSTRAINT FilePosData_PK PRIMARY KEY (FullPath) * )" */ string cmdStr = @"CREATE TABLE " + nameof(FilePosData) + "(" + nameof(tmp.FullPath) + " TEXT," + nameof(tmp.Position) + " INTEGER," + nameof(tmp.Name) + " TEXT," + nameof(tmp.FileSize) + " INTERGER," + nameof(tmp.AudioTrack) + " INTERGER," + nameof(tmp.Subtitle) + " INTERGER," + "CONSTRAINT FilePosData_PK PRIMARY KEY (FullPath)" + ")"; cn.Execute(cmdStr); } } _dbConnectiong = new SQLiteConnection(_sourceStr); }
public void RemoveDataByFullPath(string fullPath) { FilePosData tmp = new FilePosData(); /* * DELETE FROM FilePosData WHERE FullPath LIKE "C:\xx\oo" */ string cmdRm = "DELETE FROM " + nameof(FilePosData) + " WHERE " + nameof(tmp.FullPath) + " LIKE " + String.Format($"\"{fullPath}\""); _dbConnectiong.Execute(cmdRm); }
/// <summary> /// MPC-BE關閉後,讀取Registry資訊並儲存置資料庫 /// </summary> private static void SaveMpcBeFileHistoryToDB(string savePath) { //讀取MPC-BE登錄檔Recent File [x]資料 Tuple <FilePosData, int> tuple = RegMethod.GetMpcBeRecentFileByPath(savePath); if (tuple.Item2 == -1) { return; } FilePosData saveData = tuple.Item1; FileInfo fileInfo = new FileInfo(savePath); saveData.FileSize = fileInfo.Length; saveData.Name = fileInfo.Name; //寫入資料庫 _sqlCtrl.InsertData(saveData); }
public FilePosData GetDataByFullPath(string path) { FilePosData tmp = new FilePosData(); /* * SELECT * FROM FilePosData WHERE FullPath LIKE "c:\xxx\" */ string cmdGet = "SELECT * FROM " + nameof(FilePosData) + " WHERE " + (nameof(tmp.FullPath)) + " LIKE " + "\"" + path + "\""; try { tmp = _dbConnectiong.QueryFirst <FilePosData>(cmdGet); } catch (Exception e) { Debug.WriteLine($"[GetDataByFullPath] {e.Message}"); return(null); } return(tmp); }
public List <FilePosData> GetDataByName(string name) { List <FilePosData> ret; FilePosData tmp = new FilePosData(); /* * SELECT * FROM FilePosData WHERE FullPath LIKE "c:\xxx\" */ string cmdGet = "SELECT * FROM " + nameof(FilePosData) + " WHERE " + (nameof(tmp.Name)) + " LIKE " + "\"" + name + "\""; try { ret = _dbConnectiong.Query <FilePosData>(cmdGet).ToList(); } catch (Exception e) { Debug.WriteLine(String.Format($"[GetDataByName] {e.Message}")); return(null); } return(ret); }
private static void Main(string[] args) { Console.WriteLine(args[0]); Console.WriteLine(args[1]); Console.OutputEncoding = System.Text.Encoding.Unicode; if (args.Length == 0) { //無參數 nothing to do. return; } else if (args.Length == 1) { //只有一個參數,直接執行該參數 Process.Start(args[0]); return; } else if (args.Length == 2) { //取出各參數 String mpcbeExePath = args[0]; String filePath = args[1]; String fileName = Path.GetFileName(filePath); if (mpcbeExePath != null && mpcbeExePath != "" && filePath != null && filePath != "") { //初始化資料庫 string launcherPath = Assembly.GetEntryAssembly().Location; _sqlCtrl = new SqliteCtrl(Path.GetDirectoryName(launcherPath)); _sqlCtrl.Init(); _regWatcher = new RegWatcher(); _regWatcher.RegRecentFileChanged += On_MpcBe_RegChanged; //讀取資料庫是否存在該檔案紀錄 FilePosData curData = _sqlCtrl.GetDataByFullPath(filePath); if (curData != null) { //資料庫存在該檔案紀錄 //插入MPC-BE登錄檔歷史資料 RegMethod.SetMpcBeRecentFile(curData.FullPath, curData.Position, curData.AudioTrack, curData.Subtitle); } else { //讀取資料庫是否存在同檔名紀錄 List <FilePosData> nameList = _sqlCtrl.GetDataByName(fileName); if (nameList != null && nameList.Count > 0) { //比對檔案大小 long fileSize = (new FileInfo(filePath).Length); foreach (FilePosData data in nameList) { if (data.FileSize == fileSize) { //替換資料庫該檔案紀錄 _sqlCtrl.RemoveDataByFullPath(data.FullPath); data.FullPath = filePath; _sqlCtrl.InsertData(data); //相同檔名、相同檔案大小 //插入MPC-BE登陸檔歷史資料 RegMethod.SetMpcBeRecentFile(data.FullPath, data.Position, data.AudioTrack, data.Subtitle); break; } } } else { //無歷史資料 直接啟動MPC-BE //Nothing to do. } } } //啟動MPC-BE _regWatcher.Start(); _mpcbeProcess = StartMpcBe(mpcbeExePath, filePath); //等待MPC-BE關閉 _mpcbeProcess.WaitForExit(); _regWatcher.Stop(); } }