using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SQLite;
using System.Windows.Forms;
using System.Collections;
namespace OTSPartA_STDEditor
{
///
/// 用于标准库模块操作SQLlite系统标准库的封装类
///
public class SqlLiteClass
{
#region 相关变量
//系统STD文件路径
static string RunPath = Application.StartupPath;
static string str = "\\Config\\SysData\\";
static string m_ParameterPath = RunPath+ str;
private string m_STDDBPath = m_ParameterPath;
//系统STD文件 数据库名称
private string m_STDDBName = "OTSCleanlinesSTD.db";
//系统STD文件 表名
private const string m_STDTableName = "STDMinerals";
//系统ElementRange表名
private const string m_ElementRangeTableName = "MineralElements";
#endregion
#region SQLLite需要的对象
///
/// 数据库连接定义
///
private SQLiteConnection m_dbConnection;
///
/// 适配器
///
private SQLiteDataAdapter m_dataAdapter;
#endregion
#region 构造函数
///
/// 构造函数
///
public SqlLiteClass()
{
try
{
m_dbConnection = new SQLiteConnection("data source='" + m_STDDBPath + m_STDDBName + "'");
m_dbConnection.Open();
}
catch (Exception ee)
{
string str = ee.ToString();
}
}
public string GetSTDTableName() {
return m_STDTableName;
}
///
/// 构造函数
///
///
public SqlLiteClass(string connectionString)
{
try
{
m_dbConnection = new SQLiteConnection("data source='"+connectionString + "'");
m_dbConnection.Open();
}
catch (Exception)
{
}
}
#endregion
#region 封装方法
///
/// 传入SQL语句,从指定的数据库,进行查询,并返回DataTable
///
///
///
public DataTable GetDTFormSysSTDBySQLString(string in_str_sql)
{
DataTable ret_dt = new DataTable();
try
{
m_dataAdapter = new SQLiteDataAdapter(in_str_sql, m_dbConnection);
DataSet ds = new DataSet();
m_dataAdapter.Fill(ds);
ret_dt = ds.Tables[0];
}
catch (Exception ee)
{
string str = ee.ToString();
}
return ret_dt;
}
///
/// 执行修改操作
///
/// 执行语句
/// bool
public bool UpdateSysDataDB(string in_str_sql)
{
try
{
SQLiteCommand sQLiteCommand = new SQLiteCommand(in_str_sql, m_dbConnection);
int result = sQLiteCommand.ExecuteNonQuery();
return result > 0;
}
catch (Exception )
{
return false;
}
}
public bool ExecuteBlob(string strsql, string strvaluename, byte[] blobdata, int idatalen)
{
try
{
using (SQLiteCommand sqlComm = new SQLiteCommand(strsql, m_dbConnection))
{
SQLiteParameter para = new SQLiteParameter(strvaluename, DbType.Binary);
para.Value = blobdata;
sqlComm.Parameters.Add(para);
return sqlComm.ExecuteNonQuery()>0;
}
}
catch /*(SQLiteException ex)*/
{
return false;
}
}
///
/// 接收指定数据库对象和sql查询语句的方法,返回datatable对象
///
/// 指定数据库对象,比如SySSTDData.db
/// 传入的SQL查询语句
///
public DataTable GetDTFormSysSTDByDBNameAndSQLString(string in_str_conn,string in_str_sql)
{
try
{
m_dbConnection = new SQLiteConnection("data source='" + m_STDDBPath + "\\" + in_str_conn + "'");
m_dbConnection.Open();
}
catch (Exception ee)
{
string str = ee.ToString();
}
DataTable ret_dt = new DataTable();
try
{
m_dataAdapter = new SQLiteDataAdapter(in_str_sql, m_dbConnection);
DataSet ds = new DataSet();
m_dataAdapter.Fill(ds);
ret_dt = ds.Tables[0];
}
catch (Exception ee)
{
string str = ee.ToString();
}
return ret_dt;
}
public bool AddSTDAndElementInfo(ArrayList SQLStringList)
{
SQLiteTransaction trans = m_dbConnection.BeginTransaction();
try
{ //Sql语句
SQLiteCommand sQLiteCommand = new SQLiteCommand();
sQLiteCommand.Connection = m_dbConnection;
sQLiteCommand.Transaction = trans;
int result = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
sQLiteCommand.CommandText = strsql;
result += sQLiteCommand.ExecuteNonQuery();
}
}
trans.Commit();//提交事务
return result > 0;
}
catch (Exception)
{
trans.Rollback();//回滚事务
return false;
}
}
public bool DelSTDInfo(ArrayList SQLStringList)
{
SQLiteTransaction trans = m_dbConnection.BeginTransaction();
try
{ //Sql语句
SQLiteCommand sQLiteCommand = new SQLiteCommand();
sQLiteCommand.Connection = m_dbConnection;
sQLiteCommand.Transaction = trans;
int result = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
sQLiteCommand.CommandText = strsql;
result += sQLiteCommand.ExecuteNonQuery();
}
}
trans.Commit();//提交事务
return result > 0;
}
catch (Exception)
{
trans.Rollback();//回滚事务
return false;
}
}
public void CloseDB()
{
m_dbConnection.Close();
}
#endregion
}
}