需求:向数据库中添加某个目录下所有的图片名。
1.数据库类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
using UnityEngine.SceneManagement;
using System.IO;
public class UserSql : MonoBehaviour
{
public static UserSql Instance;
SqliteConnection mySql;
public void Awake()
{
Instance = this;
// 路径
string path = "Data Source=" + Application.streamingAssetsPath + "/MmorpgDataDemo.db";
mySql = new SqliteConnection(path);
// 尝试打开 错误关闭
try
{
mySql.Open();
Debug.Log("打开数据库===");
}
catch (System.Exception e)
{
mySql.Close();
}
}
/// <summary>
/// 最后关闭数据库
/// </summary>
private void OnDestroy()
{
mySql.Close();
}
/// <summary>
/// 执行 sql 语句
/// </summary>
/// <param name="sql">填入sql语句</param>
/// <returns></returns>
public SqliteDataReader ExcuteOrder(string sql)
{
// 创建命令行
SqliteCommand myCommond = mySql.CreateCommand();
// 编辑命令
myCommond.CommandText = sql;
// 执行
return myCommond.ExecuteReader();
}
/// <summary>
/// 插入数据
/// </summary>
/// <param name="name">物品名</param>
/// <param name="type">物品类型</param>
/// <param name="imagePath">文件路径</param>
/// <param name="contain">文件名包含</param>
public void Insert(string name, string type, string imagePath, string contain)
{
if (Directory.Exists(imagePath))
{
DirectoryInfo direction = new DirectoryInfo(imagePath);
FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories);
for (int i = 0; i < files.Length; i++)
{
if (files[i].Name.Contains(contain) && files[i].Name.EndsWith(".png"))
{
string sql = string.Format(" insert into Bag ( Name, Type, ImagePath ) values ( '{0}', '{1}', '{2}' ); ", name+i, type, files[i].Name);
ExcuteOrder(sql);
Debug.Log("Name : " + files[i].Name);
}
}
}
}
}
2.应用
public class PackageBack : MonoBehaviour
{
void Start()
{
// 路径
string imagePath = "C:/A/Unity/Project/DemoMMORPG/Assets/Resources/Boots";
UserSql.Instance.Insert("Boots", "Boots", imagePath, "Boots");
}
}
结果
结果中 Name 结尾 0, 2, 4......是因为有 .meta 文件在数组中。