using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Txgy.EWS.Client.IDAL; namespace Txgy.EWS.Client.DAL { public class RemoteMySqlDownload : IRemoteMySqlDownload { public MySqlConnection RemoteConn { get; set; } public MySqlCommand Comm { get; set; } public MySqlDataAdapter Adap { get; set; } public MySqlDataReader DataReader { get; set; } /// /// 下载Json文件 /// /// 事件时间 /// 保存路径 /// 保存名称 /// 表名 /// public int DownLoadJsonData(string eventTime, string savePath, string saveName, string tableName) { string courseSql = @"select JsonFile from " + tableName + " where EventTime=@eventTime"; try { if (DBConnection()) { Comm = new MySqlCommand(courseSql, RemoteConn); Comm.Parameters.AddWithValue("@eventTime", eventTime); DataReader = Comm.ExecuteReader(); List jsonList = new List(); //开始读数据 while (DataReader.Read()) { byte[] blob; blob = (byte[])DataReader["JsonFile"]; if (blob.Length == 0) break; jsonList.AddRange(blob); } string jsonPath = savePath + saveName ; if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } int len = SaveBinaryFile(jsonPath, jsonList.ToArray()); if (len == jsonList.Count) { return jsonList.Count; } return -1; } } catch (Exception ex) { throw ex; } finally { this.Dispose(); } return -1; } /// /// 下载波形文件 /// /// 事件时间 /// 保存路径 /// 保存名称 /// 表名 /// public int DownLoadWavedata(string eventTime, string savePath, string saveName, string tableName) { string courseSql = @"select WaveData from " + tableName + " where EventTime=@eventTime"; try { if (DBConnection()) { Comm = new MySqlCommand(courseSql, RemoteConn); Comm.Parameters.AddWithValue("@eventTime", eventTime); DataReader = Comm.ExecuteReader(); List wds = new List(); //开始读数据 while (DataReader.Read()) { byte[] blob; blob = (byte[])DataReader["wavedata"]; //Console.WriteLine(blob.Length); if (blob.Length == 0) break; wds.AddRange(blob); } string mseedPath = savePath + saveName; if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } int len = SaveBinaryFile(mseedPath, wds.ToArray()); if (len == wds.Count) { return wds.Count; } return -1; } } catch (Exception ex) { throw ex; } finally { this.Dispose(); } return -1; } /// /// 保存二级制文件 /// /// /// /// public int SaveBinaryFile(string fn, byte[] datas) { FileStream fs = new FileStream(fn, FileMode.OpenOrCreate); BinaryWriter binWriter = new BinaryWriter(fs); binWriter.Write(datas); binWriter.Close(); fs.Close(); return (int)new FileInfo(fn).Length; } private bool DBConnection() { string connStr = ConfigurationManager.ConnectionStrings["TencetnMySQL"].ConnectionString; if (RemoteConn == null) RemoteConn = new MySqlConnection(connStr); try { if (RemoteConn.State != ConnectionState.Open) { RemoteConn.Open(); } return true; } catch { return false; } } private void Dispose() { if (Adap != null) { Adap.Dispose(); Adap = null; } if (DataReader != null) { DataReader.Dispose(); DataReader = null; } if (Comm != null) { Comm.Dispose(); Comm = null; } if (RemoteConn != null) { RemoteConn.Close(); RemoteConn.Dispose(); RemoteConn = null; } } } }