博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity3d连接Sqlite并打包发布Android
阅读量:4987 次
发布时间:2019-06-12

本文共 4882 字,大约阅读时间需要 16 分钟。

连接Sqlite首先要把dll程序集导入到unity3d工程里面。安装好的unity中可以找到

其实发布PC端有这个就可以了。但如果是发布android的话。则需要这些。

在工程中创建一个文件夹,Plugins,Plugins文件夹中创建一个Android文件夹

Android文件夹放一个so文件libsqlite3,Plugins文件夹放一些sqlite需要的dll文件,如:

Plugins文件下载:

因为Anidoid的文件夹是不固定的。所以数据库和表需要动态创建,

我这来写了一个测试的代码。来创建库,写入数据和读取数据

 

创建表代码:

1 using UnityEngine; 2 using System.Collections; 3 using Mono.Data.Sqlite; 4 using System.IO; 5 public class createTable : MonoBehaviour 6 { 7     string path; 8     string source; 9 10     SqliteConnection connect;11     SqliteCommand command;12 13     string error;14 15     // Use this for initialization16     void Start()17     {18         Debug.Log(Application.dataPath);19         try20         {21             /*1:Application.persistentDataPath用法:22              * PC端,Android端通用23             //persistentDataPath 表示持久化数据,24              * 25              * Android路径:/data/data/com.company.productnameyy/files/file5.db26              * pc路径:C:/User/user/AppData/LocalLow/SqiteDemo/flie9.db(ty是发布的时候设置的公司名字,SqiteDemo是工程名)27              * 必须andorid注意:Plugins文件下必须有一个Android文件夹,里面有一个libsqlite3.so文件。这个libsqlite3.so文件是干什么的呢?28             */29             path = Application.persistentDataPath + @"/file9515.db";30             source = @"Data source=" + path; //发布android和pc都可以这样写31             //source = "URI=file:" + path;  //发布android和pc都可以这样写32 33 34             /*35              *2:Application.dataPath:获取当前工程的目录(D:/project/SqiteDemo/Assets)36              Application.dataPath 不能发布Android,只能发布PC37             */38             //path = Application.dataPath + @"/file121.db";39             //source = @"Data source=" + path; //PC可以这样写40             //source = "URI=file:" + path;  //PC也可以这样写41 42 43             /*44              3:Application.streamingAssetsPath:获取当前工程的目录(D:/project/SqiteDemo/Asseets/StreamingAssets)45              * Application.streamingAssetsPath不能发布Android,可以发布PC46              * 必须在工程目录下已经有该文件夹(StreamingAssets)47              * 发布的时候工程里面streamingAssetsPath里面的文件会一起打包发布48              */49             //path = Application.streamingAssetsPath + @"/file5611.db";50             //source = @"Data source=" + path;//PC也可以这样写51             //source = "URI=file:" + path;  //PC也可以这样写52 53 54             //数据库不存在,创建55             if (!File.Exists(path))56             {57                 //可以手动创建数据库58                 //SqliteConnection.CreateFile(path);59 60                 //连接的时候。在没有数据库的时候,会自动创建61                 connect = new SqliteConnection(source);62                 connect.Open();63 64                 //创建表65                 string sql = "create table hero(name nvarchar(30))";66                 command = new SqliteCommand(sql, connect);67                 command.ExecuteNonQuery();68             }69         }70         catch (System.Exception ex)71         {72             error = ex.Message;73         }74     }75 76     void OnGUI()77     {78         GUILayout.Label(error);79         GUILayout.Label(path);80     }81 82     // Update is called once per frame83     void Update()84     {85 86     }87 }

插入数据和读取数据代码

1 using UnityEngine; 2 using System.Collections; 3 using Mono.Data.Sqlite; 4 using UnityEngine.UI; 5 public class AddDate : MonoBehaviour 6 { 7  8     public InputField input; 9     string path;10     string source;11 12     string msg;13 14     // Use this for initialization15     void Start()16     {17         path = Application.persistentDataPath + @"/file9515.db";18         //source = @"Data source=" + path; //PC19 20         source = "URI=file:" + path;  //21     }22 23     // Update is called once per frame24     void Update()25     {26 27     }28 29     public void Add(bool i)30     {31         if (i) //插入数据,其实每次插入也需要判断表或者库是否存在32         {33             string text = input.text;34             if (!string.IsNullOrEmpty(text))35             {36                 try37                 {38                     SqliteConnection conn = new SqliteConnection(source);39                     conn.Open();40                     SqliteCommand comm = new SqliteCommand("insert into hero(name)values('" + text + "')", conn);41                     comm.ExecuteNonQuery();42                 }43                 catch (System.Exception ex)44                 {45                     //msg = ex.Message + "~";46                 }47             }48         }49         else //读取数据,50         {51             SqliteConnection conn = new SqliteConnection(source);52             conn.Open();53             SqliteCommand comm = new SqliteCommand("select * from hero", conn);54 55             SqliteDataReader read = comm.ExecuteReader();56 57             msg = string.Empty;58 59             while (read.Read())60             {61                 msg += read["name"] + "~";62             }63         }64     }65 66     void OnGUI()67     {68         GUILayout.Label(msg);69     }70 }

 

主要代码就是这些。大家可以自己打包测试下。

 

转载于:https://www.cnblogs.com/nsky/p/4656875.html

你可能感兴趣的文章
shell第四篇(上)
查看>>
Leetcode题解(26)
查看>>
C# ASP.NET MVC HtmlHelper用法大全
查看>>
Orcale and 逻辑运算符的特殊情况
查看>>
python学习笔记-学习大纲
查看>>
Java中File类中方法应用的两个例子
查看>>
Datagrid自动增加编号列
查看>>
配置同时使用 Gitlab 和 Github 的开发环境
查看>>
深入理解java虚拟机第五部分高效并发
查看>>
在try{}里面有一个return语句,那么紧跟在后面的finally{}里面的code还会执行吗?...
查看>>
openstack 流量控制
查看>>
Linux开放端口允许网络连接
查看>>
使用SharePoint Designer 2010新建外部内容类型,并解决访问被拒绝问题
查看>>
手工改变Quartus II软件的编译速度[转载]
查看>>
密码加密&&动手动脑
查看>>
多项式求和
查看>>
AIM Tech Round 5 (rated, Div. 1 + Div. 2)
查看>>
[Machine Learning & Algorithm] 朴素贝叶斯算法(Naive Bayes)
查看>>
ssh框架遇到的问题总结
查看>>
电脑桌面文件图标经常显示异常&&右键桌面文件属性不显示
查看>>