예제 #1
0
        // hien thi ban theo ma -- form nhan vien
        public List <BanDB> ban_timkiem(string tukhoa, string tim_theo, string tang)
        {
            List <BanDB> bandb = new List <BanDB>();

            try
            {
                SqlConnection cn = new SqlConnection(ketnoi.cn);
                cn.Open();
                string        sql = "select * from ban where " + tim_theo + " like '%" + tukhoa + "%' and ma_tang = '" + tang + "'";
                SqlCommand    cmd = new SqlCommand(sql, cn);
                SqlDataReader rd  = cmd.ExecuteReader();

                while (rd.Read())
                {
                    BanDB ban = new BanDB();
                    ban.ma_ban     = rd.GetString(0);
                    ban.ten_ban    = rd.GetString(1);
                    ban.trang_thai = rd.GetBoolean(2);
                    ban.matang     = rd.GetString(3);
                    bandb.Add(ban);
                }
                rd.Close();
            }
            catch
            { }
            return(bandb);
        }
예제 #2
0
        // load ds ban
        public List <BanDB> tang()
        {
            List <BanDB> tang = new List <BanDB>();

            try
            {
                SqlConnection cn = new SqlConnection(ketnoi.cn);
                cn.Open();
                string        sql = "select * from ban";
                SqlCommand    cmd = new SqlCommand(sql, cn);
                SqlDataReader rd  = cmd.ExecuteReader();

                while (rd.Read())
                {
                    BanDB ban = new BanDB();
                    ban.ma_ban     = rd.GetString(0);
                    ban.ten_ban    = rd.GetString(1);
                    ban.trang_thai = rd.GetBoolean(2);
                    ban.matang     = rd.GetString(3);
                    tang.Add(ban);
                }
                rd.Close();
            }
            catch
            { }
            return(tang);
        }
예제 #3
0
        /// <summary>
        /// Initiate the legacy NoSQL Freelancer storage.
        /// </summary>
        /// <param name="dbPath">Path to the SQLite database file. DB will be created if file is nonexistent.</param>
        /// <param name="accPath">Path to accounts' directory.</param>
        /// <param name="log"></param>
        public NoSQLDB(string dbPath, string accPath, LogDispatcher.LogDispatcher log)
        {
            //One-shot event assignment; NoSQLDB-Retriever
            Logger.LogDisp = log;
            //Retriever = new MetaRetriever(this);
            AccPath = accPath;

            if (!File.Exists(dbPath))
            {
                SQLiteConnection.CreateFile(dbPath);

                _conn = new SQLiteConnection();
                var conString = new SQLiteConnectionStringBuilder
                {
                    DataSource = dbPath
                };
                _conn.ConnectionString = conString.ToString();
                    try
                    {
                        _conn.Open();
                    }
                    catch (Exception e)
                    {
                        Logger.LogDisp.NewMessage(LogType.Fatal, "NoSQLDB: Can't connect to new player DB. Reason: " + e.Message);
                        throw;
                    }

                    // Create data base structure
                    var createDataBase = _conn.CreateCommand();    // Useful method
                createDataBase.CommandText = CreateDBString.Replace("@Table", "Accounts");
                createDataBase.ExecuteNonQuery();

                createDataBase.CommandText = CreateDBString.Replace("@Table", "DelAccounts");
                createDataBase.ExecuteNonQuery();

                    createDataBase.CommandText = @"CREATE TABLE LoginIP(
             AccID TEXT NOT NULL,
             IP TEXT NOT NULL,
             LogTime DATETIME NOT NULL,
             PRIMARY KEY (AccID, IP) ON CONFLICT REPLACE
            );";
                    createDataBase.ExecuteNonQuery();

                    createDataBase.CommandText = @"CREATE TABLE LoginID(
             AccID TEXT NOT NULL,
             ID1 TEXT NOT NULL,
             ID2 TEXT NOT NULL
            );";
                    createDataBase.ExecuteNonQuery();

                    createDataBase.CommandText = @"CREATE TABLE Bans(
             AccID TEXT NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
             Reason TEXT NOT NULL,
             DateStarting DATETIME NOT NULL,
             DateFinishing DATETIME NOT NULL
            );";
                    createDataBase.ExecuteNonQuery();

                    createDataBase.CommandText = "CREATE INDEX AccLookup ON LoginIP(AccID ASC);";
                    createDataBase.ExecuteNonQuery();

                    createDataBase.CommandText = "CREATE INDEX CharLookup ON Accounts(CharName ASC);";
                    createDataBase.ExecuteNonQuery();

                    _conn.Close();
                    Logger.LogDisp.NewMessage(LogType.Warning, "Created new player DB.");

            }

            // Base created fo sho
            _conn = new SQLiteConnection();
            var cs = new SQLiteConnectionStringBuilder {DataSource = dbPath};
            _conn.ConnectionString = cs.ToString();
            _conn.Open();
            Logger.LogDisp.NewMessage(LogType.Info, "NoSQLDB: Connected.");

            Queue = new DBQueue(_conn,  "NoSQLDB.Main");

            LoginDB = new LoginDatabase( _conn, Queue);

            Bans = new BanDB(this);
            //TODO: might need to use non-hardcoded paths
            BansID = new IniBan(accPath + @"\loginidbans.ini");
            BansIP = new IniBan(accPath + @"\ipbans.ini");

            Scan = new Scanner(_conn,this);

            Retriever = new DBCrawler(_conn);

            Scan.StateChanged += Scan_StateChanged;

            if (StateChanged != null)
                StateChanged(DBStates.Ready);
        }