You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.8 KiB
C#

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;
namespace Txgy.EWS.Client.PageModule.Services
{
public class DownloadJsonFile
{
public int Download(string eventTime, string savePath, string saveName, string tableName)
{
string connStr = ConfigurationManager.ConnectionStrings["TencetnMySQL"].ConnectionString;
MySqlConnection RemoteConn = new MySqlConnection(connStr);
string courseSql = @"select JsonFile from " + tableName + " where EventTime=@eventTime";
MySqlCommand Comm = new MySqlCommand(courseSql, RemoteConn);
MySqlDataReader DataReader = null;
try
{
if (RemoteConn.State != ConnectionState.Open)
{
RemoteConn.Open();
}
Comm.Parameters.AddWithValue("@eventTime", eventTime);
DataReader = Comm.ExecuteReader();
List<byte> wds = new List<byte>();
//开始读数据
while (DataReader.Read())
{
byte[] blob;
blob = (byte[])DataReader["JsonFile"];
if (blob.Length == 0)
break;
wds.AddRange(blob);
}
string jsonPath = savePath + saveName;
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
int len = -1;
using (FileStream fs = new FileStream(jsonPath, FileMode.OpenOrCreate))
{
using (BinaryWriter binWriter = new BinaryWriter(fs))
{
binWriter.Write(wds.ToArray());
len = (int)new FileInfo(jsonPath).Length;
}
}
if (len == wds.Count)
{
return wds.Count;
}
return -1;
}
catch(Exception ex)
{
throw ex;
}
finally
{
if (DataReader != null)
{
DataReader.Dispose();
DataReader = null;
}
if (Comm != null)
{
Comm.Dispose();
Comm = null;
}
if (RemoteConn != null)
{
RemoteConn.Close();
RemoteConn.Dispose();
RemoteConn = null;
}
}
}
}
}