• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • unity之SQLite學習總結

    SQLite學習:

    ★語法:(建增刪改查)

    ☆建:create table 表名(列名1 數據類型,列名2 數據類型,……) ->數據類型要符合SQLite的語法規定,與c#等不同。

    ☆增:1.insert into 表名 values(該列值,該列值,……)        

        2.insert into 表名(列1,列2,……)values(列1值,列2值,……)

    ☆刪:1.delete from 表名                          ->刪除整個表的內容

        2.delet from 表名 where 列=該列值                -> 刪除 列=該列值 的

    ☆改:update 表名 set 列名=新值 where 列名=舊值

    ☆查:1.select 列名 from 表名                       ->查找列名對應的值

        2.select * from 表名 where 列名=某值              -> 查找某值所在的整行數據

        3.select 列1,列2…… from 表名 where 某列名=某值      ->查找某值所在行的列1,列2甚至更多

    ★數據庫在Editor和Android的應用:

    平臺路徑:


    聲明數據庫鏈接對象(Connection)以及聲明數據庫指令(Command)在實例中表達。

    執行SQL語句的三種方式:


    ☆準備工作:

    1.發布到Android 、PC以及在Editor的應用:



    Editor下:Plugins沒有Android的文件夾;

    2.引用命名空間:using.Mono.Data.Sqlite;

    ☆實例:

    Editor:


    Android:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using UnityEngine.SceneManagement;
    using Mono.Data.Sqlite;
    using System;
    using System.IO;
    
    
    public class MenuUI : MonoBehaviour {
    
        public InputField UserName;
        public InputField PassWord;
        public Button Regist;
        public Button Login;
        public Text Tips;
        //創建一個數據庫鏈接對象
        SqliteConnection con;
        string path;
        int id;
        //sqlite語句對象、數據庫命令/指令,它是sql語句的載體
        SqliteCommand command;
    	// Use this for initialization
    	void Awake () {
    #if UNITY_EDITOR
            path = "Data Source = " + Application.streamingAssetsPath + "/SQLData/user.sqlite";
    #elif UNITY_ANDROID
            string localPath = "jar:file://" + Application.dataPath + "!/assets" + "/SQLData/user.sqlite";
            string newPath = Application.persistentDataPath + "/user.sqlite";
            //判斷新目錄的文件是否存在,存在的話直接對數據庫進行操作,不存在的話,需要將localPath中的數據庫文件拷貝到newPath中
            if (!File.Exists(newPath))
            {
                WWW www = new WWW(localPath);
                while (!www.isDone) {  }
                //在手機沙盒中創建新的文件
                File.WriteAllBytes(newPath, www.bytes);
            }
            path = "URI=file:" + newPath;
    #endif
    
            //通過路徑創建鏈接對象
            con = new SqliteConnection(path);
            con.Open();
            //創建數據庫指令
            command = con.CreateCommand();
            id=PlayerPrefs.GetInt("ID",1000);
        }
        void ClickLogin()
        {
            command.CommandText = "select password from UserData where name = '"+UserName.text+"'";
            object obj = command.ExecuteScalar();
            if (obj == null)
            {
                ShowTips("密碼不能為空");
            }
            else if (obj.ToString() != PassWord.text)
            {
                ShowTips("密碼錯誤");
            }
            else
            {
                ShowTips("登錄成功");
                command.CommandText = "select id from UserData where name = '" + UserName.text + "'";
                obj = command.ExecuteScalar();
                int id = System.Convert.ToInt32(obj);
                UserData.ID = id;
                UserData.NAME = UserName.text;
                SceneManager.LoadScene("18_1_4_2");
    
            }
        }
        private void ClickRegist()
        {
            command.CommandText = "select name from UserData where name = '" + UserName.text + "'";
            object obj = command.ExecuteScalar();
            if (obj!= null)
            {
                ShowTips("用戶名已被占用");
            }
            else 
            {
                if (PassWord.text == "")
                {
                    ShowTips("密碼不能為空");
                }
                else
                {
                    print(111);
                    id++;
                    PlayerPrefs.SetInt("ID",id);
                    int num;
                    command.CommandText = "insert into UserData values(" + id + ",'" + UserName.text + "','" + PassWord.text + "')";
                                 //string.Format("insert into UserData values({0},'{1}','{2}')",id,UserName.text,PassWord.text);
                    num=command.ExecuteNonQuery();
                    print(num);
                    ShowTips("注冊成功");
                }
            }
        }
        private void ShowTips(string v)
        {
            Tips.text = v;
        }
        
        private void OnEnable()
        {
            Login.onClick.AddListener(ClickLogin);
            Regist.onClick.AddListener(ClickRegist);
        }
        private void OnDisable()
        {
            Login.onClick.RemoveListener(ClickLogin);
            Regist.onClick.RemoveListener(ClickRegist);
        }
        private void OnDestroy()
        {
            
            //銷毀數據庫命令
            command.Dispose();
            //關閉數據庫
            con.Close();
            //銷毀鏈接對象
            con.Dispose();
        }
    }
    


    版權聲明:本文為TL_1203原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/TL_1203/article/details/78997719

    智能推薦

    sqlite學習(1)編譯sqlite

      Sqlite數據庫簡介 SQLite是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統。 它很小,只有sqlite3.h、sqlite3ext.h、sqlite3.c三個C語言文件。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,我...

    unity DOTS的學習總結之Job System應用——繪制曼德勃羅集合

    接上回:DOTS的學習總結之Job System的介紹,這次就利用之前了解知識來做點效果。 上回在這:unity DOTS的學習總結之Job System 說到并行處理,那最適合拿來做實驗的就是一些分形集合。每個點的計算都是獨立的很適合用于并行處理。對于曼德勃羅集合的介紹參看百度百科和維基百科: 曼德勃羅集(百度百科) 曼德勃羅集(維基百科) 簡單來說就是在一個復數平面上,選取任意一點c,帶入到遞...

    Android SQLite總結(一)

    Android SQLite總結(一) 鄭海波 2012-08-21 轉載請聲明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 對于Android平臺來說,系統內置了豐富的API來供開發人員操作SQLite,我們可以輕松的完成對數據的存取。下面就向大家介紹一下SQLite常用的操作方法。本篇文章主要用到SQLiteDataba...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡