using UnityEngine;
using System;
using System.Collections.Generic;
public abstract class ISQLOperation
{
public abstract void CreateDateBase(string path);
public abstract void DeletDateBase(string name);
public abstract void Instert(System.Object obj);
public abstract List<T> Select<T>(string condition);
public abstract void Update(System.Object sql);
public abstract void DeletTable(string tableName, string condition);
public abstract void CreatTable<T>();
public abstract void Execute(string sql);
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SQLite4Unity3d;
using System;
using System.IO;
using System.Linq.Expressions;
using System.Linq;
public class SqlliteOperations : ISQLOperation
{
public SqlliteOperations()
{
CreateDateBase(DefaultName.dateBasePath);
CreatTable<User>();
}
public SQLiteConnection connection;
/// <summary>
/// 创建库
/// </summary>
/// <param name="path"></param>
/// <param name="name"></param>
public override void CreateDateBase(string path)
{
try
{
connection = new SQLiteConnection(path, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create);
}
catch (Exception e)
{
Debug.LogError(e.Message+",创建数据库失败。");
}
}
/// <summary>
/// 删数据不删表
/// </summary>
/// <param name="tableName"></param>
public override void DeletTable(string tableName,string condition)
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
SQLiteCommand liteCommand = connection.CreateCommand("delete from " + tableName + " where " + connection);
liteCommand.ExecuteNonQuery();
}
catch (Exception e)
{
Debug.LogError(e.Message+",删除数据库数据错误。");
}
}
}
/// <summary>
/// 删库
/// </summary>
/// <param name="name"></param>
public override void DeletDateBase(string name)
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
SQLiteCommand liteCommand = connection.CreateCommand("drop datebase " + name);
liteCommand.ExecuteNonQuery();
}
catch (Exception e)
{
Debug.LogError(e.Message + ",删除数据库错误。");
}
}
}
//"UPDATE User SET Password = \"222222\" WHERE UserName = \"admin\""
/// <summary>
/// 修改表
/// </summary>
/// <param name="obj"></param>
public override void Update(object obj)
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
connection.Update(obj);
}
catch (Exception e)
{
Debug.LogError(e.Message + ",修改数据库错误:"+ obj.ToString());
}
}
}
/// <summary>
/// 创建表
/// </summary>
/// <typeparam name="T"></typeparam>
public override void CreatTable<T>()
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
connection.CreateTable<T>();
}
catch (Exception e)
{
Debug.LogError(e.Message + ",创建表错误:"+typeof(T).Name);
}
}
}
/// <summary>
/// 插入
/// </summary>
/// <param name="obj"></param>
public override void Instert(System.Object obj)
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
connection.Insert(obj);
}
catch (Exception e)
{
Debug.LogError(e.Message + ",插入表错误:" + obj.ToString());
}
}
}
/// <summary>
/// 查询表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <returns></returns>
public override List<T> Select<T>(string sql)
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
SQLiteCommand command = connection.CreateCommand(sql);
List<T> list = command.ExecuteQuery<T>();
return list;
}
catch (Exception e)
{
Debug.LogError(e.Message + ",查询表错误:" + typeof(T).Name);
return null;
}
}
}
/// <summary>
/// 执行任意sql语句
/// </summary>
/// <param name="sql"></param>
public override void Execute(string sql)
{
using (SQLiteConnection connection = new SQLiteConnection(DefaultName.dateBasePath))
{
try
{
SQLiteCommand liteCommand = connection.CreateCommand(sql);
liteCommand.ExecuteNonQuery();
}
catch (Exception e)
{
Debug.LogError(e.Message + ",执行sql语句错误:"+ sql);
}
}
}
}