using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace Analyse2
{
class AnalyseMSSql
{
protected SqlConnection _connection = null;
protected DateTime _interval_start;
protected DateTime _interval_end;
public AnalyseMSSql(string ConnectionString, DateTime startDate, DateTime endDate)
{
_connection = new SqlConnection(ConnectionString);
_interval_start = startDate;
_interval_end = endDate;
}
public bool OpenConnection()
{
_connection.Open();
return true;
}
public bool CloseConnection()
{
_connection.Close();
return true;
}
public ConnectionState StateConnection
{
get { return _connection.State; }
}
// public SensorInformation GetSensorInformation(int id)
// {
// if (this.StateConnection != ConnectionState.Open)
// this.OpenConnection();
// OracleCommand command = _connection.CreateCommand();
// command.CommandText = String.Format(@"select * from sensor where sensor_id={0}", id);
// SensorInformation res = new SensorInformation();
// try
// {
// OracleDataReader reader = command.ExecuteReader();
// if (reader != null)
// {
// while (reader.Read())
// {
// res.ID = reader["sensor_id"].ToString();
// res.Oldcode = reader["sensor_oldcode"].ToString();
// res.Description = reader["sensor_descr"].ToString();
// }
// }
// }
// catch
// {
// return null;
// }
// command.CommandText = String.Format(@"select /*+ INDEX_DESC (t idx$measure$measure_date) */
// max(t.measure_id) from measure t where sensor_id={2} and t.measure_date between '{0}' and '{1}'",
// _interval_start.ToShortDateString(),
// _interval_end.ToShortDateString(),
// id);
// try
// {
// double measure_id = (double)(OracleNumber)command.ExecuteOracleScalar();
// command.CommandText = String.Format("select measure_date from measure where measure_id={0}", measure_id);
// res.LastMeasure = command.ExecuteOracleScalar().ToString();
// command.CommandText = String.Format(@"select count(*) as count_lane from (
// select t.sensor_lane_num from measure_values t where measure_id = {0} group by t.sensor_lane_num) tmp", measure_id);
// res.LineCount = command.ExecuteOracleScalar().ToString();
// }
// catch { }
// return res;
// }
// public int GetOldcode(int id)
// {
// //select sensor_oldcode from measure where sensor_id={0}
// if (this.StateConnection != ConnectionState.Open)
// this.OpenConnection();
// OracleCommand command = _connection.CreateCommand();
// command.CommandText = String.Format(@"select sensor_oldcode from measure where sensor_id={0}", id);
// try
// {
// return (int)(OracleNumber)command.ExecuteOracleScalar();
// }
// catch
// {
// return -1;
// }
// }
public string GetMeasureCount(int id)
{
//select /*+ INDEX_DESC (t idx$measure$measure_date) */ count(distinct(measure_date)) from measure t where t.sensor_id={0} and t.measure_date between '{1}' and '{2}'
if (this.StateConnection != ConnectionState.Open)
this.OpenConnection();
SqlCommand command = _connection.CreateCommand();
command.CommandText = String.Format("select /*+ INDEX_DESC (t idx$sensordata$datetime_) */ count(*) from sensordata t where sensor_id={0} and t.datetime_ between '{1}' and '{2}'",
id,
_interval_start.ToString("yyyy-MM-dd"),
_interval_end.ToString("yyyy-MM-dd"));
try
{
return command.ExecuteScalar().ToString();
}
catch(Exception e)
{
return e.Message;
}
}
}
}