=================================
=================================
=================================
파일>IOS대응, 안드로이드32,64bit대응
SQLite에 필요DLL과 안드로이드 SO
새로나온 플러그인 DLL도 SQL 여기 파일 경로 대로 하면된다.. android 라이브러리는 android 폴더 만들고
따로 압축에 있는 경로대로 하면된다. 경로를 따로 지정한 이유는 그경로대로 해야 유니티자체에서 셋팅설정을 해준다.
따로 다른 셋팅을 또 해주고 싶으면 유니티 에디터에서 애셋경로에서 해당DLL파일을
직접 누루면 왼쪽에 설정이나오는데 여기에서 다르게 셋팅하면된다.
안드로이드와 유니티가 업데이트 될때마다 달라질수도 있으니.
이게되면 이거대로 하고 안되면 다른것들도 많이 참고하도록 하자.
(DLL,SO 파일도 또 버전업되면 바꾸어야 될수도 있다.)
(아직 아이폰은 이걸로 테스트 않해보았네요.)
=================================
=================================
=================================
출처: https://forum.unity.com/threads/system-data-sqlite-dllnotfoundexception.139323/
For communicate with sqlite DB u required below references in ur code:
using System.IO;
using System.Data;
using Mono.Data.SqliteClient;
and u have to change in Edit>>Project settings>>player setting : Optimization : API Compitability Level to .Net 2.0.
=================================
=================================
=================================
출처: https://forum.unity.com/threads/cant-load-system-data-dll.523131/
I'm pretty new to Unity but starting to understand how it works.
I've downloaded the last Unity (2018.1) and changed the scripting runtime version to 4.x.
But I can't find which System.Data.dll I should include in my project (I need it for my System.Data.SQLite library that I compiled).
If I check in Unity's folders There are a lot of folders in MonoBleedingEdge/lib/mono : 4.0, 4.0-api, 4.5, 4.5.1-api ...
I tried with a few System.Data.dll found in those folders and made sure to use a dll with the same version as the one used to compile my System.Data.SQLite library.
But I always get that "Loading script assembly "Assets/Plugins/System.Data.dll" failed!" when I run my game. Do you know why ? Or is there a possibility to have more details (like version of the dll expected)
Thank you for your help
------------------------------------------------------------------------------------------------------------------------------------------------------
I got it working a few minutes ago, I had to take the System.Data.dll from this path:
"C:\Program Files\Unity\Editor\Data\MonoBleedingEdge\lib\mono\unityjit"
The System.Data.dll in this path tagets 4.X .net and can be added to unity Plugins folder
=================================
=================================
=================================
다른 자료들 보면 dll을 왕창 추가해서 최종 바이나리 용량이 증가하기 때문에 용량을 줄이고자 만든 라이브러리& 샘플입니다.
아이폰, 윈 or 맥의 editor에서는 플러그인 필요없고 android 폰에서만 플러그인 사용합니다.
윈, 맥, 아이폰, 안드로이드폰에서 정상 작동합니다.
*주의사항
1. 안드로이드 setting에서 Write Access는 External(SDCard)로 할것
2. 확장자는 꼭 .bytes를 사용하셔야 합니다
아래 사이트는 ios에 대해서만 있어서 안드로이드에서 작동하게하고 샘플 만듬
참조 :
http://gamesforsoul.com/2012/03/sqlite-unity-and-ios-a-rocky-relationship/
--------------------------------------------------------------------------------------------------------------------------------------------------------------
http://forum.unity3d.com/threads/using-plugins-for-x86-and-x86_64-architectures-issue-with-sqlite3-dll-in-beta-9-solved.276719/
유니티5에서 64bit를 지원하기 때문에 sqlite3.dll을 32bit, 64bit를 구분해서 알맞은 폴더에 넣어줘야 함
=================================
=================================
=================================
출처: https://nopublisher.dev/archives/270
https://www.sqlite.org/download.html
여기에서 컴파일된 바이너리 64비트를 다운, 유니티 폴더
Program Files\Unity\Editor\Data\Mono\lib\mono\2.0
여기에서 Mono.Data.sqlite 랑 System.Data를 유니티 Asset폴더 안에 Plugins 폴더를 생성 뒤 박는다.
StreamingAssets 폴더를 asset 폴더 안에 만들고 그 안에다가 만든 db를 박는다.
using Mono.Data.Sqlite;
using System.Data;
인클루드하고
static string conn = "URI=file:" + Application.streamingAssetsPath + "/DB.db";
static IDbConnection dbconn = (IDbConnection)new SqliteConnection(conn);
static IDbCommand dbcmd = dbconn.CreateCommand();
하고 오픈
=================================
=================================
=================================
Unity 5 (유니티 5) 에서 SQLite DB (데이터베이스) 연동하기
1. SQLITE를 설치하자 (생략) (오라클로 치면 오라클 본체)
2. DB Browser for SQLite를 설치하자 (생략) (오라클의 토드에 해당하는 툴)
3. 데이터베이스 Database DB 를 작성한다.
4. SQLite와 Unity 연동을 위한 dll 파일들을 다운로드 받자.
https://forum.unity3d.com/threads/tutorial-how-to-integrate-sqlite-in-c.192282/
5. 압축을 풀고 자기가 작업하는 유니티 프로젝트 디렉토리에
~~/Assets/Plugins 라고 애셋 폴더 밑에 Plugins 라는 이름으로 폴더를 하나 만든 후
(윈도우에서 만들지 말고 유니티 안에서 만든다)
dll 파일들을 애셋 형태로 Import 한다.
6. 프로젝트 디렉토리에
[db이름].db 파일을 생성(붙여넣기)한다. .db 파일은 아까 2번에서 새 데이터베이스 파일을 생성할 수 있다.
mystudy1.db 파일이 보이는가?
7. 테스트용 소스 코드를 입력한다.
using UnityEngine;
using System.Collections;
using System.Data;
using Mono.Data.SqliteClient;
public class DBManager : MonoBehaviour {
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
}
public void testFunc()
{
string result = "";
string _constr = "URI=file:" + "mystudy1.db";
IDbConnection _dbc;
IDbCommand _dbcm;
IDataReader _dbr;
_dbc = new SqliteConnection(_constr);
_dbc.Open();
_dbcm = _dbc.CreateCommand();
_dbcm.CommandText = "SELECT txt FROM mymytable WHERE id='" + "4" + "'"; // mymytable 테이블의 txt 칼럼의 값을 가져오는데, 조건은 id 칼럼의 값이 4이다.
_dbr = _dbcm.ExecuteReader();
//while (_dbr.Read())
if (_dbr.Read()) // 결과 row가 하나일 때는 _dbr.Read() 한 번으로 끝난다.
{
//result = _dbr.GetInt16(0);
result = _dbr.GetString(0); // 이제 현재 row의 0번째 칼럼의 값 결과물을 문자열로 받아온 것을 result 에 넣어준다.
}
//_dbr.NextResult(); // 만일 결과 row가 여러 줄일 때는 .NextResult() 메서드를 사용하여 다음 row를 다루도록 하자.
내라벨.text = result; // 유니티 UI 라벨 () 의 캡션에 방금 받아온 스트링을 쏴준다.
//+ 추가 (DB 닫는 용도)
dbr.Close ();
dbr = null;
dbcm.Dispose ();
dbcm = null;
dbc.Close ();
dbc = null;
}
}
8. 끝!! ^^*
=================================
=================================
=================================
출처: https://teqoo.tistory.com/193
일단 Sqlite 파일을 받는다
http://www.sqlite.org/download.html
나는 이걸로 받았다.
64-bit DLL (x64) for SQLite version 3.18.0.
받은 sqlite 압축파일의 압축을 풀어준다.
폴더안에 들어있는
sqlite3.def
sqlite3.dll
파일을
유니티 프로젝트 폴더 Assets/Plugins 안에 넣어준다.
Plugins폴더가 없으면 새 Plugins폴더를 만들면 된다. 이름은 같게 해서 ㅇㅇ
DB관리를 위해
sqlitebrowser를 다운 받는다
https://github.com/sqlitebrowser/sqlitebrowser
DB 생성과정 사진
전 단계에서 받은 DB Browser for SQLite 프로그램을 이용해서
Unity 프로젝트 Assets폴더에 DB를 생성해준다.
C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0 ( 설치된 유니티 폴더 내 Editor\Data\Mono\lib\mono\2.0 )
폴더 안에 들은
System.Data.dll
Mono.Data.Sqlite.dll
두 파일을 찾아서 유니티 프로젝트 Assets/Plugins 폴더안에 복사 붙여넣기 해준다.
이제 스크립트를 작성할 시간이다.
C# 스크립트 파일을 만들어주자
나는 DBAccess라는 C# 스크립트 파일을 만들었다.
using System;
using System.Data;
using Mono.Data.Sqlite;
네임스페이스에 using Mono.Data.Sqlite; using System.Data; using System; 를 추가해준다.
DBAccess
using UnityEngine;
using System;
using System.Data;
using Mono.Data.Sqlite;
public class DBAccess : MonoBehaviour
{
void Start ()
{
// conn = "URI=file:" + Application.dataPath + "/DB Browser로 만든 데이터베이스 이름.s3db";
string conn = "URI=file:" + Application.dataPath + "/BoxDB.s3db";
// IDbConnection
IDbConnection dbconn;
dbconn = (IDbConnection) new SqliteConnection(conn);
dbconn.Open(); //Open connection to the database.
// IDbCommand
IDbCommand dbcmd = dbconn.CreateCommand();
// sql문장 = "SELECT 조회할 컬럼 FROM 조회할 테이블";
string sqlQuery = "SELECT Box_id,Box_name FROM BOX";
dbcmd.CommandText = sqlQuery;
// IDataReader
IDataReader reader = dbcmd.ExecuteReader();
while ( reader.Read() )
{
// 변수타입은 컬럼 데이터 타입에 맞추면 된다.
int Box_id = reader.GetInt32(0);
string Box_name = reader.GetString(1);
Debug.Log("Box_id= " + Box_id + " Box_name =" + Box_name);
}
// 닫아주고 초기화 시켜주는 곳
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
dbconn = null;
}
}
Start() 함수 내에서
DB conn객체를 생성하고
원하는 작업을 할 수 있게 스크립트를 작성해준다.
//
SqliteException: SQLite error
no such table: Capsule
/DB Browser로 만든 데이터베이스 이름.s3db 로 스크립트를 작성했더니
테이블을 못 찾겠다는 오류가 발생했다.
이유는 왜인지 모르겠는데
확장자를 .s3db에서 .db로 바꾸니 실행이 되고
Box 테이블에서 데이터를 읽는다.
추가로 지금 작성한 DBAccess 스크립트는
Main Camera에 넣어줬다
참고
Database (SQLite) Setup for Unity ( C# )
http://answers.unity3d.com/questions/743400/database-sqlite-setup-for-unity.html
SQLite and Unity ( JS )
http://wiki.unity3d.com/index.php/SQLite
SQLite4Unity3d ( C# )
http://codecoding.github.io/SQLite4Unity3d/
출처: https://teqoo.tistory.com/193 [테쿠의 개발 일기장]
=================================
=================================
=================================
테이블을 만들고 sqlite로 db를 PC상에서 읽고 하는데는 문제가없습니다.
하지만 안드로이드로 빌드할때는 db를 못읽어오더라구요..
pc 에서는 URI=file:C:/Users/jude/AppData/LocalLow/DefaultCompany/sqlite4/ttt.db 기본적으로 이 path로 읽어옵니다.
현재사용중인dll은 (Mono.Data.Sqlite)
openDB 의 코드는
string connection = "URI=file:" + Application.persistentDataPath + "/" + connectionString;
string filepath = Application.persistentDataPath + "/" + connectionString;
이와 같습니다.
여기서질문 안드로이드 및 아이폰디바이스에서 db를 읽어오고싶은데 안되는 문제가있습니다. db자체를 찾지못하더라구요.
빌드할때 db파일은 어디에 위치해야하는지... db파일 자체를 따로 유니티 프로젝트에서 강제로 읽어올수있는지 궁금합니다.
제작환경
unity4.0
Mono.Data.Sqlite.dll 사용중
도움을 요청합니다. ㅜㅜ
----------------------------------------------------------------------------------------------------------------------------------------------
http://stackoverflow.com/questions/15700556/unity3d-iphone-sqlite-database-is-empty-when-launch-the-app-in-ios-device비슷한 글이 있네요. | 2013-05-03 10:00:07 |
저도 지금 같은 문제에 봉착했는데...혹시 해결하셨어요?? | 2015-12-29 17:59:43 |
--------------------------------------------------------------------------------------------------------------------------------------------
다른 자료들 보면 dll을 왕창 추가해서 최종 바이나리 용량이 증가하기 때문에 용량을 줄이고자 만든 라이브러리& 샘플입니다.
아이폰, 윈 or 맥의 editor에서는 플러그인 필요없고 android 폰에서만 플러그인 사용합니다.
윈, 맥, 아이폰, 안드로이드폰에서 정상 작동합니다.
*주의사항
1. 안드로이드 setting에서 Write Access는 External(SDCard)로 할것
2. 확장자는 꼭 .bytes를 사용하셔야 합니다
아래 사이트는 ios에 대해서만 있어서 안드로이드에서 작동하게하고 샘플 만듬
참조 :
http://gamesforsoul.com/2012/03/sqlite-unity-and-ios-a-rocky-relationship/
=================================
=================================
=================================
출처: http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=59712
일단 해당 프로젝트의 Plugins 폴더 내에 있는 파일 리스트
Mono.Data.Sqlite.dll
Mono.Data.SqliteClient.dll
MySql.Data.dll
sqlite3.dll
System.Data.dll
입니다.
빌드셋팅에서 쓰기권한 External로 했고, Api Compatibility Level도 .net2.0으로 바꿨습니다.
하나의 소스파일에 대하여 컴퓨터에서는 무리 없이 모든 기능이 되는데,
이것을 안드로이드(갤2)로 옮기면 문제가 발생합니다.
문제를 UI에 출력해본 결과는 다음과 같습니다.
SelectWhere(함수이름) Error : System.DllNotFoundException.sqlite3 at (wrapper managed to native)
Mono.Data.SqliteClient.Sqlite:sqlite3_prepare16(intptr,intptr,int,intptr&,intptr&) at Mono.Data.SqliteClient.SqliteCommand.GetNextStatement (IntPtr pzStart, System.IntPtr& pzTail, System.IntPtr& pStmt) [0x00000] in <filename unknown>:0 ...
아래로 더 있으나 무의미하다 판단하여 적지 않습니다.
찾아보니 필요한 dll 파일을 찾지 못한다고 하는데, 해결법을 알려주셨으면 합니다.
------------------------------------------------------------------------------------------------------------------------------------------------------
AtoZ 님이 남겨주신 링크를 보시면 모든 해결법이 나와 있는데;;;
libsqlite3.so 이게 필요하실겁니다. 필요한 라이브러리도 안쓰고 계신데 되실리가 없죠
AtoZ 님이 남겨주신 http://answers.unity3d.com/questions/872068/dllnotfoundexception-sqlite3.html
여기 링크 다시 정독 해보셔요
=================================
=================================
=================================
출처: https://smilejsu.tistory.com/977
언제 또 SQLite를 사용할지 모르겠지만.. 일단 적어 둔다.
SQLite3 dll 을 찾을수 없다는 문구가 보이면 아래 링크에서 다운받으면댐.
https://sourceforge.net/projects/cyqlite/?source=typ_redirect
안드로이드 armeabi-v7a
안드로이드 x86
윈도우 x64
윈도우 x86
출처: https://smilejsu.tistory.com/977 [{ 일등하이 :Unity3D }]
=================================
=================================
=================================
* 기타관련링크
- https://westwoodforever.blogspot.com/2014/01/unity3d-android-sqlite.html
- https://dreamzelkova.tistory.com/entry/Unity%EC%99%80-SQLite%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0
- https://huiyoi.tistory.com/98
- https://www.youtube.com/watch?v=BN1i4WvB8BY
=================================
=================================
=================================
'게임엔진관련 > 유니티 엔진' 카테고리의 다른 글
[Unity] 유니티 사운드, 소리 관련 (0) | 2019.07.08 |
---|---|
[Unity] 유니티 압축파일(zip등등) 풀기 읽기 관련 (0) | 2019.07.06 |
[Unity] 유니티 애니매이션(스프라이트, 오브젝트) 관련 (1) | 2019.07.05 |
[Unity] 유니티 InputField 컨텐츠 타입 패스워드 관련 (0) | 2019.07.04 |
[Unity] 유니티 특정 오브젝트 찾기 가져오기 관련 (0) | 2019.07.01 |
댓글 영역