⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlprotocol.cs

📁 Gibphone is CSharp Program, it can tell you how to design p2p chat.
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using FirebirdSql.Data.FirebirdClient;

namespace SqlGibphone
{
    public class IProtocol
    {
        public string Username;
        public string Password;
        public object[] Args;

    }
    public static class SqlProtocolList  
    {
        
        #region IList<IProtocol> Members

        public static int IndexOf(IProtocol item)
        {
            int i = -1;
            Sql.ExecuteReader(new Sql.ActOnReadQuery(delegate(FbDataReader read)
            {
                while (read.Read())
                    i = read.GetInt32(0);
                return true;
            }), "Select ProtocolID from Protocols where Username = '{0}', ProtocolType = '{1}'", item.Username, item.GetType().ToString());
            return i;
        }
        
        public static void RemoveAt(int index)
        {
            Sql.ExecuteNonQuery("Delete from Protocols where ProtocolID = {0}", index);
        }

        #endregion

        #region ICollection<IProtocol> Members

        public static void Add(IProtocol item)
        {
            Add(item, false);
        }
        public static void Add(IProtocol item,bool autoload)
        {
            Sql.ExecuteNonQuery("Insert into Protocols (Username, Password, ProtocolType,OtherInformation, AutoLoad) values ('{0}','{1}','{2}',{3})", item.Username, item.Password, item.GetType().FullName, item.Args,(autoload == true ? 1 : 0));
        }

        public static void Clear()
        {
            Sql.ExecuteNonQuery("Delete from Protocols where ProtocolID > -1");
        }

        public static bool Contains(IProtocol item)
        {
            bool exists = false;
            Sql.ExecuteReader(new Sql.ActOnReadQuery(delegate(FbDataReader read)
            {
                while (read.Read())
                    exists = true;
                return true;
            }), "select * from Protocols where ProtocolID = {0}", IndexOf(item));
            return exists;
        }


        public static int Count
        {
            get
            {
                int i = 0;
                Sql.ExecuteReader(new Sql.ActOnReadQuery(delegate(FbDataReader read)
                {
                    while (read.Read())
                        i = read.GetInt32(0);
                    return true;
                }), "Select count(ProtocolID) from Protocols");
                return i;
            }
        }


        public static void Remove(IProtocol item)
        {
            RemoveAt(IndexOf(item));
        }

        #endregion

        #region IEnumerator<IProtocol> GetEnumerator()

        public static IEnumerator<IProtocol> GetEnumerator()
        {
            
                FbCommand com = Sql.SqlDatabase.CreateCommand();
                com.CommandText = "Select Username, ProtocolType from Protocols";
                FbDataReader read = com.ExecuteReader();
                while (read.Read())
                {
                    string un = read.GetString(0);
                    string pt = read.GetString(1);
                    yield return new IProtocol();
                }
                read.Close();
                com.Transaction.Commit();
            
        }

        #endregion

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -