一、思路如下:先将数据导出到DataTable,然后再放到缓存字典
①编写Sqlite数据库连接帮助类
public class SqliteHelper
{
/// <summary>
/// 数据库连接定义
/// </summary>
public SqliteConnection dbConnection;
/// <summary>
/// SQL命令定义
/// </summary>
private SqliteCommand dbCommand;
/// <summary>
/// 数据读取定义
/// </summary>
private SqliteDataReader dataReader;
/// <summary>
/// 数据库连接字符串定义
/// </summary>
private SqliteConnectionStringBuilder dbConnectionstr;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="connectionString">连接Sqlite数据库的路径</param>
/// <param name="sqliteDatabasePwd">Sqlite数据库密码</param>
public SqliteHelper(string connectionString, string sqliteDatabasePwd="")
{
try
{
dbConnection = new SqliteConnection();
dbConnectionstr = new SqliteConnectionStringBuilder();
dbConnectionstr.DataSource = connectionString;
if (!string.IsNullOrEmpty(sqliteDatabasePwd))
{
dbConnectionstr.Password = sqliteDatabasePwd; //设置密码,SQLite ADO.NET实现了数据库密码保护
dbConnection.ConnectionString = dbConnectionstr.ToString();
dbConnection.Open();
}
else
{
dbConnection.ConnectionString = dbConnectionstr.ToString();
dbConnection.Open();
}
}
catch (Exception e)
{
Log.Write(GetType() + "连接Sqlite数据库失败!!!,失败信息为:" + e.ToString());
}
}
}
②编写具体的加载Sqlite数据库指定表内容到缓存字典中
public class Ctrl_Register
{
private static Ctrl_Register _Instance; //本类实例
SqliteHelper sql; //sqlite帮助类
const string dbPath = Application.dataPath + "/StreamingAssets/SystemSqliteDataBase/EquipmentMonitoring1.db" //Sqlite数据库路径(根据自己项目内容改变)
/// <summary>
/// 本类实例
/// </summary>
/// <returns></returns>
public static Ctrl_Register GetInstance()
{
if (_Instance==null)
{
_Instance = new Ctrl_Register();
}
return _Instance;
}
/// <summary>
/// 获取到人员性别所有信息
/// </summary>
/// <returns></returns>
public List<Single_PeopleSexData> GetAllPeopleSex()
{
List<Single_PeopleSexData> _PeopleSexDatas = new List<Single_PeopleSexData>();
try
{
sql = new SqliteHelper(dbPath);
string sqlContent = "select * from PeopleSex";
SqliteDataAdapter sda = new SqliteDataAdapter(sqlContent, sql.dbConnection);
DataTable dt = new DataTable();
sda.Fill(dt);
int count = dt.Rows.Count;
for (int i = 0; i < count; i++)
{
Single_PeopleSexData _PeopleSexData = new Single_PeopleSexData();
_PeopleSexData.Id = Convert.ToInt32(dt.Rows[i]["ID"]);
_PeopleSexData.SexType = Convert.ToString(dt.Rows[i]["SexType"]);
_PeopleSexDatas.Add(_PeopleSexData);
}
}
catch (System.Exception e)
{
Log.Write(GetType() + "/AddPeopleInfoToSqliteDatabase()/连接数据库失败!");
}
finally
{
sql.CloseConnection();
}
return _PeopleSexDatas;
}
}
③人员性别封装类
public class Single_PeopleSexData
{
private int _Id;
private string _SexType;
public int Id
{
get
{
return _Id;
}
set
{
_Id = value;
}
}
public string SexType
{
get
{
return _SexType;
}
set
{
_SexType = value;
}
}
}//class_end
二、使用方法
/// <summary>
/// 获取到所有人员性别信息
/// </summary>
private void GetPeopleSexInfo()
{
List<Single_PeopleSexData> _PeopleSexDatas;
_PeopleSexDatas = Ctrl_Register.GetInstance().GetAllPeopleSex();
foreach (var item in _PeopleSexDatas)
{
Debug.Log("ID="+item.Id);
Debug.Log("SexType=" + item.SexType);
}
Debug.Log("查询完毕");
}
注意:参考:https://blog.csdn.net/sl1990129/article/details/79559438
https://zhidao.baidu.com/question/502914778.html
https://blog.csdn.net/u011412226/article/details/51064182
SQLite插入数据效率最快的方式就是:开启事务 + insert语句 + 关闭事务(提交):https://www.cnblogs.com/zhaoliankun/p/9167219.html