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();
}
}
智能推薦
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...
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 以上述例子,判斷一個生產出...