zoukankan      html  css  js  c++  java
  • 创建DOTA2本地数据库(一)

    在APP中,用本地数据库好于频繁的联网去获取相关数据。我使用SQLite作为本地的数据库,比较轻巧。

    英雄

    首先先建立英雄的数据库,暂时我先只设置ID,name,loaclized_name这三种,我这是在窗体应用程序里写的,不要在意那些细节,其实我们只是要先创建这么一个.db文件

            public Form1()
            {
                InitializeComponent();
                databaseInit();
                String url = "https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=<key>&language=zh_cn";
                WebClient web = new WebClient();
                web.Encoding = System.Text.Encoding.UTF8;
                String html = web.DownloadString(url);
                load(html);
            }
    
            private void load(String json)
            {
                JObject jo = JObject.Parse(JObject.Parse(json)["result"].ToString());
                JArray ja = JArray.Parse(jo["heroes"].ToString());
                for (int i = 0; i < ja.Count; i++)
                {
                    String name = ja[i]["name"].ToString();
                    String id = ja[i]["id"].ToString();
                    String local = ja[i]["localized_name"].ToString();
    
                    String sql = "INSERT INTO heroes(id,name,localized_name)VALUES(" + id + ",'" + name
                        + "','" + local + "')";
                    cmdInit(sql).ExecuteNonQuery();
                }
            }
    
            //数据库初始化
            public void databaseInit()
            {
                //数据库文件地址
                String datasource = System.Windows.Forms.Application.StartupPath  + "\\dota.db";
                //连接数据
                conString.DataSource = datasource;
                //可添加设置密码 constr.Password="";
                sqlCon.ConnectionString = conString.ToString();
                //创建数据库文件并连接
                sqlCon.Open();
                //创建表
                try
                {
                    String friendsql = "CREATE TABLE heroes (id integer PRIMARY KEY AUTOINCREMENT not null,name VARCHAR(64) not null," +
                                " localized_name VARCHAR(64));";
                    cmdInit(friendsql).ExecuteNonQuery();
                }
                catch (Exception)
                {
                }
            }
            //SQLiteCommand初始化配置
            private SQLiteCommand cmdInit(String sql)
            {
                SQLiteCommand sqlCmd = new SQLiteCommand();
                sqlCmd.Connection = sqlCon;
                sqlCmd.CommandText = sql;
                return sqlCmd;
            }

    用软件打开后:

    至于英雄的图像,根据之前VPK导出的IMAGE

    横版图标在heroes目录下,文件为上方name去掉开头的“npc_dota_hero_”的png文件

    纵版图标在heroes\selection目录下,文件是与上方name相同的png文件

  • 相关阅读:
    在 tornado 中异步无阻塞的执行耗时任务
    django在nginx uwsgi和tornado异步方案在项目中的体验
    使用tornado让你的请求异步非阻塞
    转:Parameter Server 详解
    转:复杂网络分析总结
    从SDCard获取的图片按分辨率处理的方法
    胡振亮:原来这就是非常多站点百度权重做不上去的原因
    c语言函数---I
    [LeetCode] Single Number III
    hdu 5389 Zero Escape (dp)
  • 原文地址:https://www.cnblogs.com/Scohura/p/3615542.html
Copyright © 2011-2022 走看看