您的位置:首页 > 移动开发 > Unity3D

unity sqlite数据库(二)——具体使用,坑爹的路径

2016-08-10 15:39 399 查看
声明断代码片段:

//数据库连接池
private static SqliteConnection dbConnection;

//数据库语句执行器
private static SqliteCommand dbCommand;

//数据库数据读取器
private static SqliteDataReader dbReader;


打开数据库:

private static string connectionStr;<pre name="code" class="csharp">dbConnection = new SqliteConnection(connectionStr);
dbConnection.Open();



现在到了最坑爹的时段:

#region 不同平台下获取数据库文件路径
#if UNITY_EDITOR || UNITY_STANDALONE_WIN
connectionStr = "URI=file:" + UriUtils.GetDBPath;
#elif UNITY_ANDROID
//移动端在沙盒中才有访问权限
string filepath = Application.persistentDataPath  +  androidDbTo;
if(!File.Exists(filepath))// if it doesn't ->
{
#region 文件拷贝方法1 在ios下似乎存在死循环的问题(待确定)
// 从StreamingAssets directory中加载数据库文件
WWW loadDB = new WWW(Application.streamingAssetsPath +  androidDb);
while(!loadDB.isDone) {}  // 注意,不要死循环了
//数据库文件
File.WriteAllBytes(filepath, loadDB.bytes);
#endregion
}
connectionStr = "URI=file:" + filepath;
#elif  UNITY_IOS

string filepath = Application.persistentDataPath+iosDbTo;
#region //文件拷贝方法2
FileInfo t = new FileInfo(Application.streamingAssetsPath+iosDb);
t.CopyTo(filepath, true);
#endregion
#region //文件拷贝方法3
//			File.WriteAllBytes(filepath, File.ReadAllBytes(Application.streamingAssetsPath + "//" + "3dh_all.db"));
#endregion

#region //文件拷贝方法4
//			TextAsset txt = Resources.Load("3dh_all" , typeof(TextAsset)) as TextAsset ;
//			File.WriteAllBytes(filepath,txt.bytes) ;
#endregion
#region //文件拷贝方法5
//在Resources文件家中load出来,然后拷贝到persistentDataPath路径下
#endregion
connectionStr = @"Data Source=" + filepath;
#endif
#endregion


注意:connectionStr = "URI=file:" + UriUtils.GetDBPath;
<span style="background-color: rgb(255, 255, 102);">connectionStr = @"Data Source=" + filepath</span><span style="background-color: rgb(255, 0, 0);">;</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: