thieumao

SQLiteKitScript

Aug 5th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 17.25 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. using System;
  5. using System.IO;
  6. using System.Threading;
  7. using System.Diagnostics;
  8. using System.Collections.Generic;
  9. using Debug = UnityEngine.Debug;
  10.  
  11. public class SQLiteKitScript : MonoBehaviour
  12. {
  13.     //
  14.     // DataUser
  15.     //
  16.     private string DataUser = "DataUser0";
  17.  
  18.     // Query Create DataUser
  19.     private string tbl_HeroUser =
  20.         "CREATE TABLE IF NOT EXISTS tbl_HeroUser (id_hero INTEGER, id_unlockhero INTEGER, id_skill INTEGER, level_hero INTEGER, attack INTEGER, unlock INTEGER);";
  21.     private string tbl_LevelUser =
  22.             "CREATE TABLE IF NOT EXISTS tbl_LevelUser (id_level INTEGER, play INTEGER, unlock INTEGER, top_dame INTEGER, top_move INTEGER);";
  23.  
  24.     // Query Select DataUser
  25.     private string tbl_HeroUserSelect = "SELECT * FROM tbl_HeroUser;";
  26.     private string tbl_LevelUserSelect = "SELECT * FROM tbl_LevelUser;";
  27.  
  28.     // Query Insert DataUser
  29.     private string tbl_HeroUserInsert =
  30.         "INSERT INTO tbl_HeroUser (id_hero,id_unlockhero,id_skill,level_hero,attack,unlock) VALUES(?,?,?,?,?,?);";
  31.     private string tbl_LevelUserInsert =
  32.         "INSERT INTO tbl_LevelUser (id_level,play,unlock,top_dame,top_move) VALUES(?,?,?,?,?);";
  33.  
  34.     //
  35.     // DataGame
  36.     //
  37.     private string DataGame = "DataGame0";
  38.  
  39.     // Query Create DataGame
  40.     private string tbl_Boss =
  41.             "CREATE TABLE IF NOT EXISTS tbl_Boss (id_boss INTEGER, type INTEGER, id_level INTEGER, name_boss VARCHAR, blood INTEGER, resist INTEGER, special INTEGER, move INTEGER, blood_special INTEGER, num_special INTEGER, img VARCHAR);";
  42.     private string tbl_Draw =
  43.             "CREATE TABLE IF NOT EXISTS tbl_Draw (id INTEGER, note INTEGER, food_percent VARCHAR, food INTEGER, soul_percent VARCHAR, soul INTEGER, cube_percent VARCHAR, cube INTEGER, cube_buy INTEGER);";
  44.     private string tbl_Energy =
  45.             "CREATE TABLE IF NOT EXISTS tbl_Energy (buy INTEGER, note INTEGER, energy INTEGER, energy_buy INTEGER, buy_cube INTEGER, energy_refill VARCHAR);";
  46.     private string tbl_Hero =
  47.             "CREATE TABLE IF NOT EXISTS tbl_Hero (id_hero INTEGER, map_open INTEGER, map_gift INTEGER, type_hero INTEGER, id_skill INTEGER, name_hero VARCHAR, des VARCHAR, food INTEGER, p_food VARCHAR, soul INTEGER, p_soul VARCHAR, cube INTEGER, p_cube VARCHAR, shop_food INTEGER, shop_soul INTEGER, shop_cube INTEGER);";
  48.     private string tbl_Level =
  49.             "CREATE TABLE IF NOT EXISTS tbl_Level (id_level INTEGER, chapter INTEGER, name_level VARCHAR, energy INTEGER DEFAULT (0), w_crystal INTEGER DEFAULT (0), w_food INTEGER DEFAULT (0), w_soul INTEGER, w_energy INTEGER, w_ticket INTEGER, w_hero INTEGER, q_move INTEGER, q_h1 INTEGER, q_h2 INTEGER, q_h3 INTEGER, q_h4 INTEGER, q_h5 INTEGER, q_box INTEGER, q_boss INTEGER, q_food INTEGER, q_soul INTEGER, q_ticket INTEGER, q_crystal INTEGER, q_hero INTEGER, q_bom INTEGER, log_win VARCHAR, log_lose VARCHAR);";
  50.     private string tbl_Skill =
  51.             "CREATE TABLE IF NOT EXISTS tbl_Skill (id_skill INTEGER, type_skill INTEGER, name_skill INTEGER, level_skill INTEGER, num_gem INTEGER, dame INTEGER, range INTEGER, des VARCHAR);";
  52.     private string tbl_UnlockHero =
  53.             "CREATE TABLE IF NOT EXISTS tbl_UnlockHero (id_unlockhero INTEGER, id_hero INTEGER, level_hero INTEGER, attack INTEGER, soul INTEGER, food INTEGER, crystal INTEGER, img VARCHAR);";
  54.  
  55.     // Query Select DataGame
  56.     private string tbl_BossSelect = "SELECT * FROM tbl_Boss;";
  57.     private string tbl_DrawSelect = "SELECT * FROM tbl_Draw;";
  58.     private string tbl_EnergySelect = "SELECT * FROM tbl_Energy;";
  59.     private string tbl_HeroSelect = "SELECT * FROM tbl_Hero;";
  60.     private string tbl_LevelSelect = "SELECT * FROM tbl_Level;";
  61.     private string tbl_SkillSelect = "SELECT * FROM tbl_Skill;";
  62.     private string tbl_UnlockHeroSelect = "SELECT * FROM tbl_UnlockHero;";
  63.  
  64.     // Query Insert DataGame
  65.     private string tbl_BossInsert =
  66.         "INSERT INTO tbl_Boss (id_boss,type,id_level,name_boss,blood,resist,special,special,move,blood_special,num_special,img) VALUES(?,?,?,?,?,?,?,?,?,?,?);";
  67.     private string tbl_DrawInsert =
  68.         "INSERT INTO tbl_Draw (id,note,food_percent,food,soul_percent,soul,cube_percent,cube,cube_buy) VALUES(?,?,?,?,?,?,?,?,?);";
  69.     private string tbl_EnergyInsert =
  70.         "INSERT INTO tbl_Energy (buy,note,energy,energy_buy,buy_cube,energy_refill) VALUES(?,?,?,?,?,?);";
  71.     private string tbl_HeroInsert =
  72.         "INSERT INTO tbl_Hero (id_hero,map_open,map_gift,type_hero,id_skill,name_hero,des,food,p_food,soul,p_soul,cube,p_cube,shop_food,shop_soul,shop_cube) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
  73.     private string tbl_LevelInsert =
  74.         "INSERT INTO tbl_Level (id_level,chapter,name_level,energy,w_crystal,w_food,w_soul,w_energy,w_ticket,w_hero,q_move,q_h1,q_h2,q_h3,q_h4,q_h5,q_box,q_boss,q_food,q_soul,q_ticket,q_crystal,q_hero,q_bom,log_win,log_lose) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
  75.     private string tbl_SkillInsert =
  76.         "INSERT INTO tbl_Skill (id_skill,type_skill,name_skill,level_skill,num_gem,dame,range,des) VALUES(?,?,?,?,?,?,?,?);";
  77.     private string tbl_UnlockHeroInsert =
  78.         "INSERT INTO tbl_UnlockHero (id_unlockhero,id_hero,level_hero,attack,soul,food,crystal,img) VALUES(?,?,?,?,?,?,?,?);";
  79.  
  80.     //
  81.     // Other
  82.     //
  83.     private string password = "thieumao";
  84.     private SQLiteDB db = null;
  85.  
  86.     // Use this for initialization
  87.     void Start()
  88.     {
  89.         createDataUser(password);
  90.         createDataGame(password);
  91.         //GetHeroesUserData();
  92.         //tbl_HeroUser,tbl_LevelUser
  93.         //tbl_Boss tbl_Draw tbl_Energy tbl_Hero tbl_Level lbl_Skill tbl_UnlockHero
  94. //        converttbl_HeroUser();
  95. //        converttbl_LevelUser();
  96. //
  97. //        converttbl_Boss();
  98. //        converttbl_Draw();
  99. //        converttbl_Energy();
  100. //        converttbl_Hero();
  101. //        converttbl_Level();
  102. //        converttbl_Skill();
  103. //        converttbl_UnlockHero();
  104.  
  105.     }
  106.  
  107.     // Update is called once per frame
  108.     void Update()
  109.     {
  110.     }
  111.  
  112.     private void createDataUser(string password)
  113.     {
  114.         string heykey = Md5Sum(password);
  115.         string pass = "PRAGMA hexkey=\"0x" + heykey + "\";";
  116.         // tat ma hoa
  117.         pass = "PRAGMA hex";
  118.  
  119.         try
  120.         {
  121.             SQLiteDB db2 = null;
  122.  
  123.             db2 = new SQLiteDB();
  124.             string filename = Application.persistentDataPath + "/" + DataUser;
  125.             File.Delete(filename);
  126.             db2.Open(filename);
  127.  
  128.             //
  129.             // set ENCRYPTION
  130.             //
  131.             SQLiteQuery qr = new SQLiteQuery(db2, pass);
  132.             qr.Step();
  133.             qr.Release();
  134.  
  135.             //
  136.             // create table
  137.             //
  138.             qr = new SQLiteQuery(db2, tbl_HeroUser);
  139.             qr.Step();
  140.             qr.Release();
  141.             qr = new SQLiteQuery(db2, tbl_LevelUser);
  142.             qr.Step();
  143.             qr.Release();
  144.  
  145.             //
  146.             // insert table
  147.             //
  148.             converttbl_HeroUser(db2);
  149.             converttbl_LevelUser(db2);
  150.  
  151.             // close
  152.             db2.Close();
  153.         }
  154.         catch (Exception e)
  155.         {
  156.         }
  157.     }
  158.  
  159.     private void createDataGame(string password)
  160.     {
  161.         string heykey = Md5Sum(password);
  162.         string pass = "PRAGMA hexkey=\"0x" + heykey + "\";";
  163.         // tat ma hoa
  164.         pass = "PRAGMA hex";
  165.  
  166.         try
  167.         {
  168.             SQLiteDB db3 = null;
  169.  
  170.             db3 = new SQLiteDB();
  171.             string filename = Application.persistentDataPath + "/" + DataGame;
  172.             File.Delete(filename);
  173.             db3.Open(filename);
  174.  
  175.             //
  176.             // set ENCRYPTION
  177.             //
  178.             SQLiteQuery qr = new SQLiteQuery(db3, pass);
  179.             qr.Step();
  180.             qr.Release();
  181.  
  182.             //
  183.             // create table
  184.             //
  185.             qr = new SQLiteQuery(db3, tbl_Boss);
  186.             qr.Step();
  187.             qr.Release();
  188.             qr = new SQLiteQuery(db3, tbl_Draw);
  189.             qr.Step();
  190.             qr.Release();
  191.             qr = new SQLiteQuery(db3, tbl_Energy);
  192.             qr.Step();
  193.             qr.Release();
  194.             qr = new SQLiteQuery(db3, tbl_Hero);
  195.             qr.Step();
  196.             qr.Release();
  197.             qr = new SQLiteQuery(db3, tbl_Level);
  198.             qr.Step();
  199.             qr.Release();
  200.             qr = new SQLiteQuery(db3, tbl_Skill);
  201.             qr.Step();
  202.             qr.Release();
  203.             qr = new SQLiteQuery(db3, tbl_UnlockHero);
  204.             qr.Step();
  205.             qr.Release();
  206.  
  207.             //tbl_Boss tbl_Draw tbl_Energy tbl_Hero tbl_Level lbl_Skill tbl_UnlockHero
  208.  
  209.             //
  210.             // insert table
  211.             //
  212.             converttbl_Boss(db3);
  213.             converttbl_Draw(db3);
  214.             converttbl_Energy(db3);
  215.             converttbl_Hero(db3);
  216.             converttbl_Level(db3);
  217.             converttbl_Skill(db3);
  218.             converttbl_UnlockHero(db3);
  219.  
  220.             // close
  221.             db3.Close();
  222.         }
  223.         catch (Exception e)
  224.         {
  225.         }
  226.     }
  227.  
  228.     //tbl_HeroUser,tbl_LevelUser
  229.     //tbl_Boss tbl_Draw tbl_Energy tbl_Hero tbl_Level lbl_Skill tbl_UnlockHero
  230.     private void converttbl_HeroUser(SQLiteDB db2)
  231.     {
  232.         LoadDatabase("DataUser");
  233.         SQLiteQuery qr = new SQLiteQuery(db, tbl_HeroUserSelect);        
  234.         while (qr.Step())
  235.         {
  236.             SQLiteQuery qr2 = new SQLiteQuery(db, tbl_HeroUserInsert);
  237.             qr2.Bind(qr.GetInteger("id_hero"));
  238.             qr2.Bind(qr.GetInteger("id_unlockhero"));
  239.             qr2.Bind(qr.GetInteger("id_skill"));
  240.             qr2.Bind(qr.GetInteger("level_hero"));
  241.             qr2.Bind(qr.GetInteger("attack"));
  242.             qr2.Bind(qr.GetInteger("unlock"));
  243.             qr2.Step();
  244.             qr2.Release();
  245.         }
  246.     }
  247.  
  248.     private void converttbl_LevelUser(SQLiteDB db2)
  249.     {
  250.         LoadDatabase("DataUser");
  251.         SQLiteQuery qr = new SQLiteQuery(db, tbl_LevelUserSelect);
  252.         while (qr.Step())
  253.         {
  254.             SQLiteQuery qr2 = new SQLiteQuery(db, tbl_LevelUserInsert);
  255.             qr2.Bind(qr.GetInteger("id_level"));
  256.             qr2.Bind(qr.GetInteger("play"));
  257.             qr2.Bind(qr.GetInteger("unlock"));
  258.             qr2.Bind(qr.GetInteger("top_dame"));
  259.             qr2.Bind(qr.GetInteger("top_move"));
  260.             qr2.Step();
  261.             qr2.Release();
  262.         }
  263.     }
  264.  
  265.     private void converttbl_Boss(SQLiteDB db3)
  266.     {
  267.         LoadDatabase("DataGame");
  268.  
  269.         SQLiteQuery qr = new SQLiteQuery(db, tbl_BossSelect);
  270.         while (qr.Step())
  271.         {
  272.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  273.         }
  274.     }
  275.  
  276.     private void converttbl_Draw(SQLiteDB db3)
  277.     {
  278.         LoadDatabase("DataGame");
  279.  
  280.         SQLiteQuery qr = new SQLiteQuery(db, tbl_DrawSelect);
  281.         while (qr.Step())
  282.         {
  283.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  284.         }
  285.     }
  286.  
  287.     private void converttbl_Energy(SQLiteDB db3)
  288.     {
  289.         LoadDatabase("DataGame");
  290.  
  291.         SQLiteQuery qr = new SQLiteQuery(db, tbl_EnergySelect);
  292.         while (qr.Step())
  293.         {
  294.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  295.         }
  296.     }
  297.  
  298.     private void converttbl_Hero(SQLiteDB db3)
  299.     {
  300.         LoadDatabase("DataGame");
  301.  
  302.         SQLiteQuery qr = new SQLiteQuery(db, tbl_HeroSelect);
  303.         while (qr.Step())
  304.         {
  305.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  306.         }
  307.     }
  308.  
  309.     private void converttbl_Level(SQLiteDB db3)
  310.     {
  311.         LoadDatabase("DataGame");
  312.  
  313.         SQLiteQuery qr = new SQLiteQuery(db, tbl_LevelSelect);
  314.         while (qr.Step())
  315.         {
  316.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  317.         }
  318.     }
  319.  
  320.     private void converttbl_Skill(SQLiteDB db3)
  321.     {
  322.         LoadDatabase("DataGame");
  323.  
  324.         SQLiteQuery qr = new SQLiteQuery(db, tbl_SkillSelect);
  325.         while (qr.Step())
  326.         {
  327.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  328.         }
  329.     }
  330.  
  331.     private void converttbl_UnlockHero(SQLiteDB db3)
  332.     {
  333.         LoadDatabase("DataGame");
  334.  
  335.         SQLiteQuery qr = new SQLiteQuery(db, tbl_UnlockHeroSelect);
  336.         while (qr.Step())
  337.         {
  338.             //heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  339.             print("mao " + qr.GetInteger("id_unlockhero"));
  340.         }
  341.     }
  342.  
  343.     //Data User
  344.     public List<HeroUser> heroesUserData;
  345.  
  346.     public List<HeroUser> GetHeroesUserData()
  347.     {
  348.         LoadDatabase("DataUser");
  349.  
  350.         heroesUserData = new List<HeroUser>();
  351.         SQLiteQuery qr = new SQLiteQuery(db, "Select * FROM tbl_HeroUser");
  352.         print("truoc");
  353.         while (qr.Step())
  354.         {
  355.             HeroUser heroUserData = new HeroUser();
  356.             heroUserData.ID = qr.IsNULL("id_hero") ? 0 : qr.GetInteger("id_hero");
  357.             heroUserData.Level = qr.IsNULL("level_hero") ? 0 : qr.GetInteger("level_hero");
  358.             heroUserData.State = qr.IsNULL("unlock") ? 0 : qr.GetInteger("unlock");
  359.             heroUserData.SkillID = qr.IsNULL("id_skill") ? 0 : qr.GetInteger("id_skill");
  360.             heroUserData.UnlockHeroID = qr.IsNULL("id_unlockhero") ? 0 : qr.GetInteger("id_unlockhero");
  361.             heroUserData.AttackPower = qr.IsNULL("attack") ? 0 : qr.GetInteger("attack");
  362.  
  363.             print("ID=" + heroUserData.ID + " Level=" + heroUserData.Level + " AttackPower= " + heroUserData.AttackPower);
  364.  
  365.             heroesUserData.Add(heroUserData);
  366.         }
  367.         print("sau");
  368.         return heroesUserData;
  369.  
  370.     }
  371.  
  372.     public void LoadDatabase(String nameDb)
  373.     {
  374.         db = new SQLiteDB();
  375.  
  376.         String filename = Application.persistentDataPath + "/" + nameDb;
  377.  
  378.         // check if database already exists.
  379.         if (!File.Exists(filename))
  380.         {
  381.             UnityEngine.Debug.Log("file does not exist");
  382.             // ok , this is first time application start!
  383.             // so lets copy prebuild dtabase from StreamingAssets and load store to persistancePath with Test2
  384.             byte[] bytes = null;
  385. #if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX
  386.             string dbpath = "file://" + Application.streamingAssetsPath + "/" + nameDb;
  387.             WWW www = new WWW(dbpath);
  388.             StartCoroutine(Download(www));
  389.             bytes = www.bytes;
  390. #elif UNITY_WEBPLAYER
  391.                             string dbpath = "StreamingAssets/" + nameDb;
  392.                             WWW www = new WWW(dbpath);
  393.                             StartCoroutine(Download(www));
  394.                             bytes = www.bytes;
  395. #elif UNITY_IPHONE
  396.                             string dbpath = Application.dataPath + "/Raw/" + nameDb;           
  397.                             try{   
  398.                                 using ( FileStream fs = new FileStream(dbpath, FileMode.Open, FileAccess.Read, FileShare.Read) ){
  399.                                     bytes = new byte[fs.Length];
  400.                                     fs.Read(bytes,0,(int)fs.Length);
  401.                                 }          
  402.                             } catch (Exception e){
  403.                    
  404.                             }
  405. #elif UNITY_ANDROID
  406.            
  407.                             UnityEngine.Debug.Log("UNITY_ANDROID");
  408.                             string dbpath = Application.streamingAssetsPath + "/" + nameDb;  
  409.                             UnityEngine.Debug.Log(dbpath); 
  410.                             WWW www = new WWW(dbpath);
  411.                             StartCoroutine(Download(www));
  412.                             while(!www.isDone){}
  413.                             bytes = www.bytes;
  414. #endif
  415.  
  416.             if (bytes != null)
  417.             {
  418.                 try
  419.                 {
  420.                     // copy database to real file into cache folder
  421.                     using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write))
  422.                     {
  423.                         fs.Write(bytes, 0, bytes.Length);
  424.                     }
  425.  
  426.                     // initialize database
  427.                     db.Open(filename);
  428.                 }
  429.                 catch (Exception e)
  430.                 {
  431.                     Debug.Log("ERROR: " + e);
  432.                 }
  433.             }
  434.         }
  435.         else
  436.         {
  437.             // it mean we already download prebuild data base and store into persistantPath
  438.             // lest update, I will call Test
  439.  
  440.             try
  441.             {
  442.                 // initialize database
  443.                 db.Open(filename);
  444.             }
  445.             catch (Exception e)
  446.             {
  447.                 Debug.Log("ERROR: " + e);
  448.             }
  449.  
  450.         }
  451.     }
  452.  
  453.     IEnumerator Download(WWW www)
  454.     {
  455.         yield return www;
  456.     }
  457.  
  458.     private string Md5Sum(string strToEncrypt)
  459.     {
  460.         System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();
  461.         byte[] bytes = ue.GetBytes(strToEncrypt);
  462.  
  463.         // encrypt bytes
  464.         System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
  465.         byte[] hashBytes = md5.ComputeHash(bytes);
  466.  
  467.         // Convert the encrypted bytes back to a string (base 16)
  468.         string hashString = "";
  469.  
  470.         for (int i = 0; i < hashBytes.Length; i++)
  471.         {
  472.             hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');
  473.         }
  474.  
  475.         return hashString.PadLeft(32, '0');
  476.     }
  477. }
Advertisement
Add Comment
Please, Sign In to add comment