티스토리 뷰
유니티 안드로이드 데이터베이스 SQLite
1. DB를 생성한다. Employer.db
2. File -> Build Setting -> Android Switch Platform
3. plugins를 다운받는다. Assets/Plugins
4. File -> Build Setting -> Player Setting -> Company Name, Product Name,
Player Setting -> Other Setting -> Identification -> Package Name 작성해야지 안드로이드에서 실행됨.
5. C# Android파일 만듬 꼭 추가해야할 사항
using Mono.Data.Sqlite;
using System;
using System.Data;
using System.IO;
using UnityEngine.UI;
6. android.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//References
using Mono.Data.Sqlite;
using System;
using System.Data;
using System.IO;
using UnityEngine.UI;
public class Android : MonoBehaviour
{
// interface enables you to implement a Connectionsclass
private string conn, sqlQuery;
IDbConnection dbconn;
IDbCommand dbcmd;
private IDataReader reader;
public InputField t_name, t_Address, t_id;
public Text data_staff;
string DatabaseName = "Employer.db";
// Start is called before the first frame update
void Start()
{
//Application database Path android
string filepath = Application.persistentDataPath + "/" + DatabaseName;
if (!File.Exists(filepath))
{
// If not found on android will create Tables and database
Debug.LogWarning("File \"" + filepath + "\" does not exist. Attempting to create from \"" +
Application.dataPath + "!/assets/Employer");
// UNITY_ANDROID
WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/Employer.db");
while (!loadDB.isDone) { }
// then save to Application.persistentDataPath
File.WriteAllBytes(filepath, loadDB.bytes);
}
conn = "URI=file:" + filepath;
Debug.Log("Stablishing connection to: " + conn);
dbconn = new SqliteConnection(conn);
dbconn.Open();
string query;
query = "CREATE TABLE Staff (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Address TEXT)";
try
{
dbcmd = dbconn.CreateCommand(); // create empty command
dbcmd.CommandText = query; // fill the command
reader = dbcmd.ExecuteReader(); // execute command which returns a reader
}
catch (Exception e)
{
Debug.Log(e);
}
// reader_function();
}
//Insert
public void insert_button()
{
insert_function(t_name.text, t_Address.text);
}
//Search
public void Search_button()
{
data_staff.text = "";
Search_function(t_id.text);
}
//Found to Update
public void F_to_update_button()
{
data_staff.text = "";
F_to_update_function(t_id.text);
}
//Update
public void Update_button()
{
update_function(t_id.text, t_name.text, t_Address.text);
}
//Delete
public void Delete_button()
{
data_staff.text = "";
Delete_function(t_id.text);
}
//Insert To Database
private void insert_function(string name, string Address)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("insert into Staff (name, Address) values (\"{0}\",\"{1}\")", name, Address);// table name
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
data_staff.text = "";
Debug.Log("Insert Done ");
reader_function();
}
//Read All Data For To Database
private void reader_function()
{
// int idreaders ;
string Namereaders, Addressreaders;
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT Name, Address " + "FROM Staff";// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
// idreaders = reader.GetString(1);
Namereaders = reader.GetString(0);
Addressreaders = reader.GetString(1);
data_staff.text += Namereaders + " - " + Addressreaders + "\n";
Debug.Log(" name =" + Namereaders + "Address=" + Addressreaders);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
// dbconn = null;
}
}
//Search on Database by ID
private void Search_function(string Search_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
string Name_readers_Search, Address_readers_Search;
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT name,address " + "FROM Staff where id =" + Search_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
// string id = reader.GetString(0);
Name_readers_Search = reader.GetString(0);
Address_readers_Search = reader.GetString(1);
data_staff.text += Name_readers_Search + " - " + Address_readers_Search + "\n";
Debug.Log(" name =" + Name_readers_Search + "Address=" + Address_readers_Search);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
}
//Search on Database by ID
private void F_to_update_function(string Search_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
string Name_readers_Search, Address_readers_Search;
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT name,address " + "FROM Staff where id =" + Search_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
Name_readers_Search = reader.GetString(0);
Address_readers_Search = reader.GetString(1);
t_name.text = Name_readers_Search;
t_Address.text = Address_readers_Search;
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
}
//Update on Database
private void update_function(string update_id, string update_name, string update_address)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("UPDATE Staff set name = @name ,address = @address where ID = @id ");
SqliteParameter P_update_name = new SqliteParameter("@name", update_name);
SqliteParameter P_update_address = new SqliteParameter("@address", update_address);
SqliteParameter P_update_id = new SqliteParameter("@id", update_id);
dbcmd.Parameters.Add(P_update_name);
dbcmd.Parameters.Add(P_update_address);
dbcmd.Parameters.Add(P_update_id);
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
Search_function(t_id.text);
}
// SceneManager.LoadScene("home");
}
//Delete
private void Delete_function(string Delete_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "DELETE FROM Staff where id =" + Delete_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
data_staff.text = Delete_by_id + " Delete Done ";
}
}
// Update is called once per frame
void Update()
{
}
}
For all platform
string filepath = Application.dataPath + "/Plugins/" + DatabaseName;
Application database Path android
string filepath = Application.persistentDataPath + "/" + DatabaseName;
DatabBase Path for Android
// If not found on android will create Tables and database
Debug.LogWarning("File \"" + filepath + "\" does not exist. Attempting to create from \"" +
Application.dataPath + "!/assets/Employers");
// #UNITY_ANDROID
WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/Employer.db");
while (!loadDB.isDone) { }
// then save to Application.persistentDataPath
File.WriteAllBytes(filepath, loadDB.bytes);
Databasde SQLite Path IOS
// #UNITY_IOS
var loadDb = Application.dataPath + "/Raw/" + DatabaseName;
// this is the path to your StreamingAssets in iOS
// then save to Application.persistentDataPath
File.Copy(loadDb, filepath);
DatabBase Path for Windows Phone :
// #UNITY_WP8
var loadDb = Application.dataPath + "/StreamingAssets/" + DatabaseName;
// this is the path to your StreamingAssets in iOS
//then save to Application.persistentDataPath
File.Copy(loadDb, filepath);
DatabBase Path for WINRT
// #UNITY_WINRT
var loadDb = Application.dataPath + "/StreamingAssets/" + DatabaseName;
// this is the path to your StreamingAssets in iOS
// then save to Application.persistentDataPath
File.Copy(loadDb, filepath)
open Database SQlite Unity connection
conn = "URI=file:" + filepath;
Debug.Log("Stablishing connection to: " + conn);
dbconn = new SqliteConnection(conn);
dbconn.Open();
To Create Table Sqlite
This Example:
Table Name (Staff) Have ID is PRIMARY KEY , Name, Address
string query;
query = "CREATE TABLE Staff (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name varchar(100), Address varchar(200))";
try
{
dbcmd = dbconn.CreateCommand(); // create empty command
dbcmd.CommandText = query; // fill the command
reader = dbcmd.ExecuteReader(); // execute command which returns a reader
}
catch (Exception e)
{
Debug.Log(e);
}
To Select Sqlite
string Name_readers, Address_readers;
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT Name, Address " + "FROM Staff";// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
Name_readers = reader.GetString(0);
Address_readers = reader.GetString(1);
Debug.Log(" name =" + Name_readers + "Address=" + Address_readers);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
To Insert Sqlite
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("insert into Staff (name, Address) values (\"{0}\",\"{1}\")", name, Address);// table name
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
Debug.Log("Insert Done ");
To Update Sqlite
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("UPDATE Staff set name = @name ,address = @address where ID = @id ");
SqliteParameter P_update_name = new SqliteParameter("@name", update_name);
SqliteParameter P_update_address = new SqliteParameter("@address", update_address);
SqliteParameter P_update_id = new SqliteParameter("@id", update_id);
dbcmd.Parameters.Add(P_update_name);
dbcmd.Parameters.Add(P_update_address);
dbcmd.Parameters.Add(P_update_id);
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
Search_function(t_id.text);
}
To Search By ID
using (dbconn = new SqliteConnection(conn))
{
string Name_readers_Search, Address_readers_Search;
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT name,address " + "FROM Staff where id =" + Search_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
Name_readers_Search = reader.GetString(0);
Address_readers_Search = reader.GetString(1);
data_staff.text += Name_readers_Search + " - " + Address_readers_Search + "\n";
Debug.Log(" name =" + Name_readers_Search + "Address=" + Address_readers_Search);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
7. screens.cs C# 파일을 만든다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Screens : MonoBehaviour
{
public GameObject Canvas_Insert, Canvas_Search, Canvas_Update, Canvas_Delete;
// Start is called before the first frame update
void Start()
{
Canvas_Insert.SetActive(true);
Canvas_Delete.SetActive(false);
Canvas_Search.SetActive(false);
Canvas_Update.SetActive(false);
}
public void insert()
{
Canvas_Insert.SetActive(true);
Canvas_Delete.SetActive(false);
Canvas_Search.SetActive(false);
Canvas_Update.SetActive(false);
}
public void Delete()
{
Canvas_Insert.SetActive(false);
Canvas_Delete.SetActive(true);
Canvas_Search.SetActive(false);
Canvas_Update.SetActive(false);
}
public void Search()
{
Canvas_Insert.SetActive(false);
Canvas_Delete.SetActive(false);
Canvas_Search.SetActive(true);
Canvas_Update.SetActive(false);
}
public void Updates()
{
Canvas_Insert.SetActive(false);
Canvas_Delete.SetActive(false);
Canvas_Search.SetActive(false);
Canvas_Update.SetActive(true);
}
// Update is called once per frame
void Update()
{
}
}
8. unity.cs C# 파일을 만든다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//References
using Mono.Data.Sqlite;
using System;
using System.Data;
using System.IO;
using UnityEngine.UI;
public class Unity : MonoBehaviour
{
private string conn, sqlQuery;
IDbConnection dbconn;
IDbCommand dbcmd;
private IDataReader reader;
public InputField t_name, t_Address, t_id;
public Text data_staff;
string DatabaseName = "Employer.db";
void Start()
{
string filepath = Application.dataPath + "/Plugins/" + DatabaseName;
//open db connection
conn = "URI=file:" + filepath;
Debug.Log("Stablishing connection to: " + conn);
dbconn = new SqliteConnection(conn);
dbconn.Open();
// reader_function();
}
//Insert
public void insert_button()
{
insert_function(t_name.text, t_Address.text);
}
//Search
public void Search_button()
{
data_staff.text = "";
Search_function(t_id.text);
}
//Found to Update
public void F_to_update_button()
{
data_staff.text = "";
F_to_update_function(t_id.text);
}
//Update
public void Update_button()
{
update_function(t_id.text, t_name.text, t_Address.text);
}
//Delete
public void Delete_button()
{
data_staff.text = "";
Delete_function(t_id.text);
}
//Insert To Database
private void insert_function(string name, string Address)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("insert into Staff (name, Address) values (\"{0}\",\"{1}\")", name, Address);// table name
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
data_staff.text = "";
Debug.Log("Insert Done ");
reader_function();
}
//Read All Data For To Database
private void reader_function()
{
// int idreaders ;
string Namereaders, Addressreaders;
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT Name, Address " + "FROM Staff";// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
// idreaders = reader.GetString(1);
Namereaders = reader.GetString(0);
Addressreaders = reader.GetString(1);
data_staff.text += Namereaders + Addressreaders + "\n";
Debug.Log(" name =" + Namereaders + "Address=" + Addressreaders);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
// dbconn = null;
}
}
//Search on Database by ID
private void Search_function(string Search_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
string Name_readers_Search, Address_readers_Search;
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT name,address " + "FROM Staff where id =" + Search_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
// string id = reader.GetString(0);
Name_readers_Search = reader.GetString(0);
Address_readers_Search = reader.GetString(1);
data_staff.text += Name_readers_Search + " - " + Address_readers_Search + "\n";
Debug.Log(" name =" + Name_readers_Search + "Address=" + Address_readers_Search);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
}
//Search on Database by ID
private void F_to_update_function(string Search_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
string Name_readers_Search, Address_readers_Search;
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT name,address " + "FROM Staff where id =" + Search_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
Name_readers_Search = reader.GetString(0);
Address_readers_Search = reader.GetString(1);
t_name.text = Name_readers_Search;
t_Address.text = Address_readers_Search;
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
}
//Update on Database
private void update_function(string update_id, string update_name, string update_address)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("UPDATE Staff set name = @name ,address = @address where ID = @id ");
SqliteParameter P_update_name = new SqliteParameter("@name", update_name);
SqliteParameter P_update_address = new SqliteParameter("@address", update_address);
SqliteParameter P_update_id = new SqliteParameter("@id", update_id);
dbcmd.Parameters.Add(P_update_name);
dbcmd.Parameters.Add(P_update_address);
dbcmd.Parameters.Add(P_update_id);
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
Search_function(t_id.text);
}
// SceneManager.LoadScene("home");
}
//Delete
private void Delete_function(string Delete_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "DELETE FROM Staff where id =" + Delete_by_id;// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
data_staff.text = Delete_by_id + " Delete Done ";
}
}
// Update is called once per frame
void Update()
{
}
}
'프로그래밍 > 유니티' 카테고리의 다른 글
유니티 플래피버드 게임 만들기 #2 (0) | 2022.05.17 |
---|---|
유니티 플래피버드 게임 만들기 #1 (0) | 2022.05.15 |
유니티 사운드 여러개 출력하는 방법 (0) | 2022.01.05 |
유니티에서 SQLite 안드로이드에서 실행해보기 (0) | 2021.12.29 |
초딩도 따라할 수 있는 유니티로 퀴즈 앱 만들기 (0) | 2021.09.13 |