Unity3d Android Sqlite 显示中文

来源:互联网 发布:ipad淘宝hd不能横屏 编辑:程序博客网 时间:2024/05/23 11:09

本文参考自:Unity3D研究院之使用C#语言建立本地数据库(二十三)

http://www.xuanyusong.com/archives/831



以下脚本可简化数据库操作且不需要挂在任何物体上

using UnityEngine;using System.Collections;using System;using Mono.Data.Sqlite;//using System.Collections.Generic;public class DbAccess{private SqliteConnection dbConnection;private SqliteCommand dbCommand;private SqliteDataReader dbReader;public DbAccess(){}public DbAccess(string connectionString){OpenDB (connectionString);}/// <summary>/// Opens the D./// </summary>/// <param name="connectionString">Connection string.</param>public void OpenDB(string connectionString){try{dbConnection = new SqliteConnection(connectionString);dbConnection.Open();Debug.Log("connect to db successfully");}catch( Exception e ){Debug.Log(e.ToString());Debug.Log(e.Message);}}/// <summary>/// Closes the sql connection./// </summary>public void CloseSqlConnection(){if ( dbCommand != null ){dbCommand.Dispose();}dbCommand = null;if ( dbReader != null ){dbReader.Dispose();}dbReader = null;if ( dbConnection != null ){dbConnection.Dispose();}dbConnection = null;Debug.Log ("Disconnected from db");}/// <summary>/// Executes the query./// </summary>/// <returns>The query.</returns>/// <param name="sqlQuery">Sql query.</param>public SqliteDataReader ExecuteQuery(string sqlQuery){dbCommand = dbConnection.CreateCommand ();dbCommand.CommandText = sqlQuery;dbReader = dbCommand.ExecuteReader ();return dbReader;}/// <summary>/// Reads the full table./// </summary>/// <returns>The full table.</returns>/// <param name="tableName">Table name.</param>public SqliteDataReader ReadFullTable(string tableName){string query = "select * from " + tableName;return ExecuteQuery (query);}/// <summary>/// Inserts the into./// </summary>/// <returns>The into.</returns>/// <param name="tableName">Table name.</param>/// <param name="values">Values.</param>public SqliteDataReader InsertInto(string tableName, string[] values){string query = "insert into " + tableName + " values (" + values[0];for ( int i = 1; i < values.Length; i++ ){query += ", " + values[i];}query += ")";return ExecuteQuery (query);}/// <summary>/// Updates the into./// </summary>/// <returns>The into.</returns>/// <param name="tableName">Table name.</param>/// <param name="colNames">Col names.</param>/// <param name="colValues">Col values.</param>/// <param name="selectKey">Select key.</param>/// <param name="selectKeyValue">Select key value.</param>public SqliteDataReader UpdateInto(string tableName, string[] colNames, string[] colValues, string selectKey, string selectKeyValue){string query = "update " + tableName + " set " + colNames [0] + " = " + colValues [0];for( int i = 1; i < colNames.Length; i++ ){query += ", " + colNames[i] + " = " + colValues[i];}query += " where " + selectKey + " = " + selectKeyValue;return ExecuteQuery (query);}/// <summary>/// Delete the specified tableName, colNames and colValues./// </summary>/// <param name="tableName">Table name.</param>/// <param name="colNames">Col names.</param>/// <param name="colValues">Col values.</param>public SqliteDataReader Delete(string tableName, string[] colNames, string[] colValues){string query = "delete from " + tableName + " where " + colNames [0] + " = " + colValues [0];for ( int i = 0; i < colNames.Length; i++ ){query += " or " + colNames[i] + " = " + colValues[i];//" and "?????}return ExecuteQuery (query);}/// <summary>/// Inserts the into specific./// </summary>/// <returns>The into specific.</returns>/// <param name="tableName">Table name.</param>/// <param name="colNames">Col names.</param>/// <param name="colValues">Col values.</param>public SqliteDataReader InsertIntoSpecific(string tableName, string[] colNames, string[] colValues){if ( colNames.Length != colValues.Length ){throw new SqliteException("columns.Lenght != values.Length");return null;}string query = "insert into " + tableName + " (" + colNames[0];for ( int i = 1; i < colNames.Length; i++ ){query += ", " + colNames[i];}query += ") values (" + colValues[0];for ( int i = 1; i < colNames.Length; i++ ){query += ", " + colValues[i];}query += ")";return ExecuteQuery (query);}/// <summary>/// Deletes the contents./// </summary>/// <returns>The contents.</returns>/// <param name="tableName">Table name.</param>public SqliteDataReader DeleteContents(string tableName){string query = "delete from " + tableName;return ExecuteQuery (query);}/// <summary>/// Creates the table./// </summary>/// <returns>The table.</returns>/// <param name="tableName">Table name.</param>/// <param name="colNames">Col names.</param>/// <param name="colTypes">Col types.</param>public SqliteDataReader CreateTable(string tableName, string[] colNames, string[] colTypes){if ( colNames.Length != colTypes.Length ){throw new SqliteException("columns.Length != columnsTypes.Length");return null;}string query = "create table " + tableName + "(" + colNames[0] + " " + colTypes[0];for ( int i = 1; i < colNames.Length; i++ ){query += ", " + colNames[i] + " " + colTypes[i];}query += ")";return ExecuteQuery (query);}/// <summary>/// Selects the where./// </summary>/// <returns>The where.</returns>/// <param name="tableName">Table name.</param>/// <param name="items">Items.</param>/// <param name="colNames">Col names.</param>/// <param name="opration">Opration.</param>/// <param name="colVaules">Col vaules.</param>public SqliteDataReader SelectWhere(string tableName, string[] items, string[] colNames, string[] opration, string[] colVaules){if ( colNames.Length != opration.Length || opration.Length != colVaules.Length ){throw new SqliteException("columns.Length != opratio.Length != columnsValues.Length");return null;}string query = "select " + items[0];for( int i = 1; i < items.Length; i++ ){query += ", " + items[i];}query += " from " + tableName + " where " + colNames [0] + opration [0] + "'" + colVaules [0] + "' ";for(int i = 1; i < colNames.Length; i++){query += " and " + colNames[i] + opration[i] + "'" + colVaules[i] + "' ";}return ExecuteQuery (query);}}











下面这个脚本挂在主摄像机上即可

using UnityEngine;using System.Collections;using Mono.Data.Sqlite;public class Test : MonoBehaviour {public string strName = null;public string strEmail = null;public string appDBPath = null;public GUISkin mySkin;public DbAccess db;void Start () {//数据库文件储存地址appDBPath = Application.persistentDataPath  + "/xuanyusong.db";//DbAccess db = new DbAccess(@"Data Source=" + appDBPath);if ( !System.IO.File.Exists(appDBPath) ){db = new DbAccess("URI=file:" + appDBPath);//请注意 插入字符串是 已经要加上'宣雨松' 不然会报错db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});//我在数据库中连续插入三条数据db.InsertInto("momo", new string[]{"'宣雨松'","'289187120'","'xuanyusong@gmail.com'","'www.xuanyusong.com'"});db.InsertInto("momo", new string[]{"'雨松MOMO'","'289187120'","'000@gmail.com'","'www.xuanyusong.com'"});db.InsertInto("momo", new string[]{"'哇咔咔'","'289187120'","'111@gmail.com'","'www.xuanyusong.com'"});//然后在删掉两条数据db.Delete("momo",new string[]{"email","email"}, new string[]{"'xuanyusong@gmail.com'","'000@gmail.com'"});}else{db = new DbAccess("URI=file:" + appDBPath);}using (SqliteDataReader sqReader = db.SelectWhere("momo",new string[]{"name","email"},new string[]{"qq"},new string[]{"="},new string[]{"289187120"})){while (sqReader.Read())      { strName = sqReader.GetString(sqReader.GetOrdinal("name"));strEmail = sqReader.GetString(sqReader.GetOrdinal("email"));      Debug.Log("name:" + strName.ToString());Debug.Log("email" + strEmail.ToString());    } sqReader.Close();}db.CloseSqlConnection();}void Update(){if (Input.GetKeyDown(KeyCode.Escape) ||Input.GetKeyDown(KeyCode.Home) )        {            Application.Quit();        }}void OnGUI(){if ( mySkin != null ){GUI.skin = mySkin;}if ( appDBPath !=  null ){GUILayout.Label("path: " + appDBPath.ToString());}if ( strName != null ){GUILayout.Label("name: " + strName.ToString());}if ( strEmail != null ){GUILayout.Label("email: " + strEmail.ToString());}}}



项目中的资源及其结构


0 0
原创粉丝点击