Newer
Older
IRIS_COLLECT / IOM_cs / irisDb / service / sqliteImpl / DeviceService_SqliteImpl.cs
yangqianqian on 29 Dec 2020 9 KB first
using IOM_cs.irisDb.model;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SQLite;
using System.Reflection;
using System.Windows.Forms;

namespace IOM_cs.irisDb.service.sqliteImpl
{
    public class DeviceService_SqliteImpl : IDeviceService
    {
        /// <summary>
        /// 新增设备
        /// </summary>
        public int AddDevice(Device device)
        {
            int re = -1;
            SQLiteTransaction tx = null;
            try
            {
                
                tx = _SqliteHelper.sqliteConnection.BeginTransaction();
                string sQry =
                    "INSERT INTO sys_device (device_code,ip,port,remarks)" +
                    "values (@var0,@var1,@var2,@var3)";
                SQLiteCommand aCommand = new SQLiteCommand(sQry, _SqliteHelper.sqliteConnection);
                aCommand.CommandTimeout = 0;
                //绑定事务
                aCommand.Transaction = tx;
                
                aCommand.Parameters.Add(new SQLiteParameter("@var0", DbType.String));
                aCommand.Parameters.Add(new SQLiteParameter("@var1", DbType.String));
                aCommand.Parameters.Add(new SQLiteParameter("@var2", DbType.String));
                aCommand.Parameters.Add(new SQLiteParameter("@var3", DbType.String));

                aCommand.Parameters[0].Value = device.DeviceCode;
                aCommand.Parameters[1].Value = device.Ip;
                aCommand.Parameters[2].Value = device.Port;
                aCommand.Parameters[3].Value = device.Remarks;

                aCommand.ExecuteNonQuery();
                tx.Commit();
                aCommand.Dispose();

                re = 0;
            }
            catch (SQLiteException ex)
            {
                tx.Rollback();
                re = -1;
                if (_SqliteHelper.sqliteConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("数据库连接断开,请重启软件!");
                    return -1;
                }
                MessageBox.Show("EXCEPTION: " + ex.Message);
            }
            finally
            {
                tx.Dispose();
            }
            return re;
        }

        /// <summary>
        /// 编辑
        /// </summary>
        /// <returns></returns>
        public int EditDevice(Int64 id, String deviceCode, String ip, String port, String remarks)
        {
            int iRetval = 0;
            try
            {
                // sys_person表
                string sQry = "UPDATE sys_device set device_code='" + deviceCode + "',ip='" + ip +
                    "',port='" + port + "', remarks = '" + remarks + "' WHERE id=" + id;

                SQLiteCommand aCommand = new SQLiteCommand(sQry, _SqliteHelper.sqliteConnection);
                aCommand.CommandTimeout = 0;
                aCommand.ExecuteNonQuery();
                aCommand.Dispose();
            }
            catch (SQLiteException exSqlDb)
            {
                iRetval = exSqlDb.ErrorCode;
                if (_SqliteHelper.sqliteConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("数据库连接断开,请重启软件!");
                    return -1;
                }
                MessageBox.Show("Update EXCEPTION: " + exSqlDb.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Update EXCEPTION: " + ex.Message);
                iRetval = -1;
            }

            return iRetval;
        }

       
        /// <summary>
        /// 获取同ip设备
        /// </summary>
        /// <returns></returns>
        public int GetDeviceByIp(string ip)
        {
            int count = 0;
            try
            {
                SQLiteDataReader aReader = null;

                string sQry = "SELECT COUNT(*) FROM sys_device where ip = '" + ip + "'";
                SQLiteCommand cmd = new SQLiteCommand(sQry, _SqliteHelper.sqliteConnection);
                cmd.CommandTimeout = 0;
                aReader = cmd.ExecuteReader(CommandBehavior.Default);

                if (aReader.Read())
                {
                    count = aReader.GetInt32(0);
                }
                aReader.Close();
            }
            catch (SQLiteException s)
            {
                MessageBox.Show(s.Message.ToString());
            }

            return count;

        }

        /// <summary>
        /// 获取设备详情
        /// </summary>
        /// <returns></returns>
        public Device GetDetailById(Int64 id)
        {
            Device device = new Device();
            try
            {
                SQLiteDataReader aReader = null;

                string sQry = "SELECT id,device_code,ip,port,remakrs FROM sys_device where id = '" + id + "'";
                SQLiteCommand cmd = new SQLiteCommand(sQry, _SqliteHelper.sqliteConnection);
                cmd.CommandTimeout = 0;
                aReader = cmd.ExecuteReader(CommandBehavior.Default);

                if (aReader.Read())
                {
                    if (!aReader.IsDBNull(0)) device.Id = aReader.GetInt32(0);
                    if (!aReader.IsDBNull(1)) device.DeviceCode = aReader.GetString(1);
                    if (!aReader.IsDBNull(2)) device.Ip = aReader.GetString(2);
                    if (!aReader.IsDBNull(3)) device.Port = aReader.GetString(3);
                    if (!aReader.IsDBNull(4)) device.Remarks = aReader.GetString(4);
                }
                aReader.Close();
            }
            catch (SQLiteException s)
            {
                MessageBox.Show(s.Message.ToString());
            }

            return device;

        }
       

        /// <summary>
        /// 删除
        /// </summary>
        public int Delete(Int64 id)
        {
            int iRetval = 0;
            try
            {
                // sys_person表
                string sQry = "DELETE FROM sys_device  WHERE id=" + id;
                SQLiteCommand aCommand = new SQLiteCommand(sQry, _SqliteHelper.sqliteConnection);
                aCommand.CommandTimeout = 0;
                aCommand.ExecuteNonQuery();
                aCommand.Dispose();

            }
            catch (SqlException exSqlDb)
            {
                iRetval = exSqlDb.ErrorCode;
                if (_SqliteHelper.sqliteConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("数据库连接断开,请重启软件!");
                    return -1;
                }
                MessageBox.Show("Delete EXCEPTION: " + exSqlDb.Message);
            }
            catch (Exception ex)
            {
                iRetval = -1;
                MessageBox.Show("Delete EXCEPTION: " + ex.Message);
            }

            return iRetval;
        }


        /// <summary>
        /// 分批获取设备
        /// </summary>
        /// <param name="baseNum"></param>每次获取人数
        /// <param name="i"></param>本次获取第 baseNum*(i-1) 到第 baseNum*i 条 
        /// <returns></returns>
        public DataTable GetDevices(int baseNum, int i, string searchStr)
        {

            String strSql = "select id, device_code, ip, port, remarks from sys_device ";
            if (searchStr != "")
                strSql += searchStr;

            strSql += "limit " + baseNum * (i - 1) + "," + baseNum;

            SQLiteCommand aCommand = new SQLiteCommand(strSql, _SqliteHelper.sqliteConnection);
            aCommand.CommandTimeout = 0;

            SQLiteDataAdapter adapter = new SQLiteDataAdapter();
            adapter.SelectCommand = aCommand;
            DataTable dt = new DataTable();

            try
            {
                adapter.Fill(dt);                
            }
            catch (SQLiteException exSqlDb)
            {
                if (_SqliteHelper.sqliteConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("数据库连接断开,请重启软件!");
                    return dt;
                }
                MessageBox.Show("GetUsersEXCEPTION: " + exSqlDb.Message);
            }
            catch (Exception ex)
            {
                if (_SqliteHelper.sqliteConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("数据库连接断开,请重启软件!");
                    return dt;
                }
                MessageBox.Show("GetUsersEXCEPTION: " + ex.Message);
            }

            return dt;
        }

        /// <summary>
        /// 获取总数
        /// </summary>
        /// <returns></returns>
        public int GetCount(string searchStr)
        {
            int count = 0;
            try
            {
                SQLiteDataReader aReader = null;

                string sQry = "SELECT COUNT(*) FROM sys_device " + searchStr;

                SQLiteCommand cmd = new SQLiteCommand(sQry, _SqliteHelper.sqliteConnection);
                cmd.CommandTimeout = 0;
                aReader = cmd.ExecuteReader(CommandBehavior.Default);

                if (aReader.Read())
                {
                    count = aReader.GetInt32(0);
                }
                aReader.Close();
            }
            catch (SQLiteException s)
            {
                if (_SqliteHelper.sqliteConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("数据库连接断开,请重启软件!");
                    return count;
                }
                MessageBox.Show(s.Message.ToString());
            }

            return count;

        }
      
    }
}