コード例 #1
0
        /// <summary>
        /// 如果解析数据并且插入成功,则将Status标记为1,作为事务使用
        /// </summary>
        /// <returns></returns>
        public static string GetUpdateStatusSQL(SourceDataHeader header)
        {
            string sql = string.Format(@"update GatewayData set Status=1 where BuildID='{0}' and GatewayID = '{1}' 
                            and CollectTime='{2}' and DatagramType='{3}';", header.BuildID, header.GatewayID,
                                       header.CollectTime, header.DatagramType);

            return(sql);
        }
コード例 #2
0
        /// <summary>
        /// 事务:将实时数据按照要求存入mysql数据库中,存储成功,则更新原始数据
        /// </summary>
        /// <param name="meters"></param>
        /// <param name="header"></param>
        public static void ExecuteInsertTransactions(MeterList meters,SourceDataHeader header)
        {
            
            List<string> insertSqls = Energy.Common.DAL.MySQLHelper.GetInsertSqls(GetEnergyData(meters),GetVoltageData(meters),
                GetCurrentData(meters),GetPowerData(meters),GetBaseElecData(meters));

            int count = 0;
            MySqlConnection connection = new MySqlConnection(Runtime.MySqlConnectString);
            SQLiteConnection sqliteConnection = new SQLiteConnection("Data Source=TempData;Version=3;");
            SQLiteCommand sQLiteCommand = new SQLiteCommand(SQLiteHelper.GetUpdateStatusSQL(header),sqliteConnection);

            connection.Open();
            sqliteConnection.Open();

            SQLiteTransaction sqliteTrans = sqliteConnection.BeginTransaction();
            MySqlTransaction mySqlTrans = connection.BeginTransaction();
            try
            {
                foreach (var sql in insertSqls)
                {
                    MySqlCommand mySqlCommand = new MySqlCommand(sql, connection, mySqlTrans);

                    count += mySqlCommand.ExecuteNonQuery();
                }
                count += sQLiteCommand.ExecuteNonQuery();

                sqliteTrans.Commit();
                mySqlTrans.Commit();

                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<" + Thread.CurrentThread.ManagedThreadId.ToString() + "> -> " + "事务执行成功,共影响{0}条数据。",count);
            }
            catch (Exception e)
            {
                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<" + Thread.CurrentThread.ManagedThreadId.ToString() + "> -> " + "事务执行失败,正在回滚操作,失败内容为:{0}。",e.Message);
                sqliteTrans.Rollback();
                mySqlTrans.Rollback();
                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<" + Thread.CurrentThread.ManagedThreadId.ToString() + "> -> " + "事务回滚成功!");
            }
            finally
            { 
                sQLiteCommand.Connection.Close();
                connection.Close();
                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<" + Thread.CurrentThread.ManagedThreadId.ToString() + "> -> " + "已关闭数据库连接!");
            }
        }
コード例 #3
0
        public static SourceData GetSourceByHeader(SourceDataHeader header)
        {
            string sql = "select * from {0}" + string.Format(@" where BuildID='{0}' 
                                    and GatewayID='{1}' and CollectTime='{2}' 
                                    and DatagramType='{3}' and Status={4};", header.BuildID, header.GatewayID, header.CollectTime, header.DatagramType, header.Status);

            SourceData       sourceData = new SourceData();
            SQLiteDataReader reader     = ExecuteReader("TempData", "GatewayData", sql);

            while (reader.Read())
            {
                sourceData.BuildID      = reader["BuildID"].ToString();
                sourceData.GatewayID    = reader["GatewayID"].ToString();
                sourceData.CollectTime  = reader["CollectTime"].ToString();
                sourceData.DatagramType = reader["DatagramType"].ToString();
                sourceData.Status       = Convert.ToInt32(reader["Status"]);
                sourceData.JsonData     = reader["JsonData"].ToString();
            }

            reader.Close();

            return(sourceData);
        }
コード例 #4
0
        public static List <SourceDataHeader> GetUnStoreList()
        {
            string sql = @"select BuildID,GatewayID,CollectTime,DatagramType,Status from {0} where Status=0 order by CollectTime ASC limit 0,1000;";

            SQLiteDataReader reader = ExecuteReader("TempData", "GatewayData", sql);

            List <SourceDataHeader> headerList = new List <SourceDataHeader>();

            while (reader.Read())
            {
                SourceDataHeader header = new SourceDataHeader();
                header.BuildID      = reader["BuildID"].ToString();
                header.GatewayID    = reader["GatewayID"].ToString();
                header.CollectTime  = DateTime.Parse(reader["CollectTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                header.DatagramType = reader["DatagramType"].ToString();
                header.Status       = Convert.ToInt32(reader["Status"]);

                headerList.Add(header);
            }

            reader.Close();

            return(headerList);
        }