zoukankan      html  css  js  c++  java
  • Unity3d 5.3.5使用sqlite3

    http://blog.csdn.net/glunoy/article/details/52037598



    国内讲的乱七八糟,更有故作神秘提供Mono.Data.Sqlite.dll System.Data.dll的,就是不告诉你这两文件在哪里。。我很无语。

    看国外的,多靠谱。
    http://answers.unity3d.com/questions/743400/database-sqlite-setup-for-unity.html


    中文版如下。
    1.先在Assets下新建Plugins文件夹。将C:Program FilesUnityEditorDataMonoBleedingEdgelibmono2.0
    下的Mono.Data.Sqlite.dll System.Data.dll拷贝至刚才新建的文件夹Plugins 下。
    2.到https://www.sqlite.org/download.html 下载最新版的sqlite Precompiled Binaries版本。或者你喜欢折腾下源码自己编也行。
    记住windows64 32位的区别。里面解压出来会有sqlite3.def sqlite3.dll 也拷贝到上面的Plugins下。
    3.要在Android底下使用sqlite3 必须到这个帖子下http://forum.unity3d.com/threads/sqlite-for-android-help-please.97043/#post-705960下载一个附件。里面包含了libsqlite3.so这个文件。然后将它放到Assets/Android下。
    我不知道它和安卓系统里面的system/lib/libsqlite.so有啥区别。。因为我拿不出来那个文件。所以没有尝试。

    3.5,在Player Setting里的 OtherSettings里有个Optimization 下边的API Compatbility Level 选择.NET 2.0。--这步漏了,补上

    4.连接字符串.conn = "URI=file:" + Application.persistentDataPath + "/test.db";  不管什么版本,都必须是这个目录。不推荐什么streaming asset 什么aseet。因为跨平台的版本,只有这个目录拥有可读写权限。

    哪怕因此带来一些麻烦也没关系。(至于那些datasource=什么什么,我没有去试,也不想去弄清楚他们的区别)
    这个值 windows下目录对应为:C:Users你的用户名AppDataLocalLow公司名项目名
    而在安卓下 对应为/data/data/包名/files 发布的时候必须注意。
    至于ios....首先我得先有个ios再说吧.穷人装不起那个逼。
    5.代码示例。从上面的老外连接照抄。不推荐什么sqllite hleper.cs当然,你要用我也没意见。代码如下:防止天草哪天心情不好又不给访问了。
       string conn = "URI=file:" + Application.dataPath + "/PickAndPlaceDatabase.s3db"; //Path to database.
         SqliteConnection dbconn;
         dbconn =  new SqliteConnection(conn);
         dbconn.Open(); //Open connection to the database.
         SqliteCommand dbcmd = dbconn.CreateCommand();
         string sqlQuery = "SELECT value,name, randomSequence " + "FROM PlaceSequence";
         dbcmd.CommandText = sqlQuery;
         SqliteDataReader reader = dbcmd.ExecuteReader();
         while (reader.Read())
         {
             int value = reader.GetInt32(0);
             string name = reader.GetString(1);
             int rand = reader.GetInt32(2);
            
             Debug.Log( "value= "+value+"  name ="+name+"  random ="+  rand);
         }
         reader.Close();
         reader = null;
         dbcmd.Dispose();
         dbcmd = null;
         dbconn.Close();
         dbconn = null;
     }


    如果一定要用什么什么helper,推荐使用http://www.xuanyusong.com/archives/831 或者http://www.w2bc.com/Article/49868 这里的。其实没啥区别...
    另外我能吐槽一下么。。。你们两个在构造函数里打开数据库,酱紫真的好处理返回值么?里面throw了异常,外面的包装函数又不处理异常,又不抛出异常,你们这是坑爹造不?
    当然,上面的示例调用也没有处理异常...


    附带一些多余的话.
    Debug.log有时候中文会乱码。只要将.cs文件的编码改成utf-8 无bom即可。用VS的话来讲 叫:utf8-无签名。为了跨平台,推荐都使用UTF-8。具体请自行搜索..

    sqlite3 管理工具 推荐使用SQLite Expert Personal

  • 相关阅读:
    Linux工具-curl
    常用工具-Postman
    HTTP头部信息
    HTTP状态码
    HTTP/HTTP2协议
    HTTP协议
    常用的服务端口
    三次握手,四次挥手和抓包工具
    路由表
    TCP/IP协议详解
  • 原文地址:https://www.cnblogs.com/nafio/p/9137104.html
Copyright © 2011-2022 走看看