当前位置: 首页 > news >正文

mis_table.cs 与 csharp_mis_table.h

 C++ CLI 中 DataTable, DataRow 用法

mis_table.cs 

/***************************************************************************************************** 文件名		:mis_table.cs* * 功能			:数据库表的基类 * * 作者			:李锋* * 邮箱			:ruizhilf@139.com* * 手机			:13828778863* * 创建时间		:2007年01月09日-------------------最后一次修改时间:2016年11月22日*****************************************************************************************************/
using System;
using System.IO;
using System.Data;#if _WINDOWS_PLATFORM_using System.Data.SqlClient;using System.Data.OleDb;#if _WINDOWS_DESKTOP_using System.Windows.Forms;#elif _WINDOWS_WEB_using System.Web.UI;using System.Web.UI.WebControls;#endif
#elif _ANDROID_PLATFORM_using Android.App;using Android.Content;using Android.Runtime;using Android.Views;using Android.Widget;using Android.OS;
#elif _IOS_PLATFORM_#endifnamespace lf
{/// <summary>/// mis_table 的摘要说明/// </summary>/// <summary>/// 对记录的操作,例如查找,更新,删除等等/// </summary>public enum Record_Operate{R_DELETE,         //删除一条记录R_UPDATE,         //更新一条记录R_INSERT,         //插入一条记录R_READ_ALL,       //读出全部记录  R_VIEW            //显示字段};public class mis_table{/// <summary>/// 活动,Web页面,窗体/// </summary>#if _WINDOWS_DESKTOP_public Form context_page_form = null;
#elif _WINDOWS_WEB_public Page context_page_form = null;
#elif _LF_PHONE_APP_#elif _ANDROID_PLATFORM_public  Activity context_page_form = null;
#elif _IOS_PLATFORM_#endif/// <summary>/// MIS全局数据库/// </summary>public Db_ db;/// <summary>/// 要操作表的名子/// </summary>public string m_sTableName;//------------------------------------------------------------------------------------------------------------------------------------------数据定议/// <summary>/// 一条记录的索引/// </summary>public int fd_id;/// <summary>/// 记录创建时间/// </summary>public DateTime fd_create_time;/// <summary>/// 记录最后一次修改时间/// </summary>public DateTime fd_modify_time;/// <summary>/// 记录创建人/// </summary>public int fd_create_author_id;/// <summary>/// 最后一次记录修改人		/// </summary>public int fd_modify_author_id;/// <summary>/// 扩展字段 nchar 1/// </summary>public string fd_nchar_ext1;/// <summary>/// 扩展字段 nchar 2/// </summary>public string fd_nchar_ext2;/// <summary>/// 扩展字段ntext 1/// </summary>public string fd_ntext_ext1;/// <summary>/// 扩展字段ntext 2/// </summary>public string fd_ntext_ext2;/// <summary>/// 扩展字段,INTEGER1/// </summary>public int fd_integer_ext1;/// <summary>/// 扩展字段,INTEGER2/// </summary>public int fd_integer_ext2;/// <summary>/// 扩展字段, float1/// </summary>public float fd_float_ext1;/// <summary>/// 扩展字段 ,float2/// </summary>public float fd_float_ext2;/// <summary>/// 说明字段/// </summary>  public string fd_desc;/// <summary>/// Key的字符串形式索引/// </summary>public string SID { get { return fd_id.ToString(); } }/// <summary>/// Key的整数形式索引/// </summary>public int ID { get { return fd_id; } }/// <summary>/// 登陆人ID/// </summary>public int LoginUserID { get { return MIS_Global.LoginUser.ID; } }//-------------------------------------------------------------------------------------------------------------------------------重写/// <summary>/// 删除一条索引为sID的记录。/// </summary>/// <param name="sID"></param>/// <returns></returns>public bool deleteDataFromID(string sID, mis_natural_person em){if (em != null){if (!MIS_Global.LoginUser.CanModuleDelete(get_module_id())){throw new Exception("你没有权限删除这条录!");}}return (db.ExecNonSQL("DELETE FROM " + m_sTableName + " WHERE fd_id = " + sID) != 0);}//-------------------------------------------------------------------------------------------------------------------------------重写/// <summary>/// 返回模块ID/// </summary>/// <returns></returns>public virtual int get_module_id(){return -1;}/// <summary>/// 删除一条记录/// </summary>/// <param name="em"></param>/// 创建时间:????-??-??          最后一次修改时间:2020-05-04/// <returns></returns>public virtual int DeleteSQL(){crm_login_member clmLogin = MIS_Global.LoginUser;string ssql = this.get_Record_Operate_SQL(Record_Operate.R_DELETE);if (clmLogin != null){if (clmLogin.CanModuleDelete(get_module_id())){return db.ExecNonSQL(ssql);}else{//throw new Exception("你没有权限删除这条记录,请用其它用户登陆再试!");lg.ShowError("你没有权限删除这条记录, 请用其它用户登陆再试!");return -1;}}else{return db.ExecNonSQL(ssql);}}/// <summary>/// 添加一条记录。/// </summary>/// <param name="em"></param>/// 创建时间:????-??-??          最后一次修改时间:2020-05-04/// <returns></returns>public virtual int InsertSQL(){crm_login_member clmLogin = MIS_Global.LoginUser;string ssql = this.get_Record_Operate_SQL(Record_Operate.R_INSERT);if (clmLogin != null){if (clmLogin.CanModuleWrite(get_module_id())){return db.ExecNonSQL(ssql);}else{//throw new Exception("你没有权限写入这条记录,请用其它用户登陆再试!");lg.ShowError("你没有权限修改这条记录, 请用其它用户登陆再试!");return -1;}}else{return db.ExecNonSQL(ssql);}}/// <summary>/// 更新一条记录/// </summary>/// <param name="em"></param>/// 创建时间:????-??-??          最后一次修改时间:2020-05-13/// <returns></returns>public virtual int UpdateSQL(){crm_login_member clmLogin = MIS_Global.LoginUser;string ssql = this.get_Record_Operate_SQL(Record_Operate.R_UPDATE);if (clmLogin != null){if (clmLogin.CanModuleWrite(get_module_id())){return db.ExecNonSQL(ssql);}else{//throw new Exception("你没有权限写入这条记录,请用其它用户登陆再试!");lg.ShowError("你没有权限写入这条记录, 请用其它用户登陆再试!");return -1;}}else{return db.ExecNonSQL(ssql);}}/// <summary>/// /// </summary>/// <param name="sRecordID"></param>/// <param name="sFieldName"></param>/// <param name="sFieldValue"></param>/// <param name="sTableName"></param>/// <param name="db"></param>/// 创建时间: ????-??-??      最后一次修改时间:2021-10-03/// <returns></returns>public static bool UpdateFieldValue(string sRecordID, string sFieldName, string sFieldValue, string sTableName, Db_ db){string ssql = "UPDATE [" + sTableName + "] SET [" + sFieldName + "]=" + ConvertToSQLString(sFieldName, sFieldValue, sTableName, db);ssql += " WHERE [fd_id] = " + sRecordID;return db.ExecNonSQL(ssql) != 0;}/// <summary>/// /// </summary>/// <param name="sFieldName"></param>/// <param name="sFieldValue"></param>/// <param name="sTableName"></param>/// <param name="db"></param>/// 创建时间: ????-??-??      最后一次修改时间:2021-10-03/// <returns></returns>public static string ConvertToSQLString(string sFieldName, string sFieldValue, string sTableName, Db_ db){Field_ f = db.GetFieldInfo(sFieldName, sTableName);switch(f.DataType){case DataType_.dtString:return "'" + lg.CheckSQLString(sFieldValue) +"'";case DataType_.dtDateTime:return "\'" + sFieldValue + "\'";}return sFieldValue;}//-----------------------------------------------------------------------------------------------------方法public string[] getModuleListForTypeCalling(int calling_id){return null;}public string[] getModuleListForTypeCalling(string calling_name){return null;}/// <summary>/// 新的索引号/// </summary>/// <returns></returns>public int GetNewID(){return db.GetMaxID(m_sTableName, "") + 1;}/// <summary>/// 获取登陆人ID/// </summary>/// <returns></returns>public int GetLoginID(){return (MIS_Global.LoginUser != null ? MIS_Global.LoginUser.fd_id : -1);}/// <summary>/// 返回记录条数/// </summary>/// <returns></returns>public int getRecordCount(){DataTable dt = db.ExecSQLQuery("SELECT Count(*) AS fd_sum FROM " + m_sTableName);return (int)dt.Rows[0]["fd_sum"];}#if _CS_/// <summary>/// 得到某字段的所有值的列表,如果sqql不为空,则执行sql语句/// </summary>/// <param name="li"></param>public void getFieldValueList(string sFieldName, System.Windows.Forms.ComboBox cb, string ssql){db.GetTrimFieldValueList(sFieldName, m_sTableName, "", cb);}#elif _WINDOWS_WEB_/// <summary>/// 得到某字段的所有值的列表,如果sqql不为空,则执行sql语句/// </summary>/// <param name="li"></param>public void getFieldValueList(string sFieldName, System.Web.UI.WebControls.ListItemCollection li,string ssql){db.GetTrimFieldValueList(sFieldName, m_sTableName, "", li);}
#endif//-----------------------------------------------------------------------------方法 /// <summary>/// 从某个字段的值得到索引号,这个值必须是唯一的,字段的值必须是字符串/// </summary>/// <param name="sFieldName">字段名</param>/// <param name="sValue">字段值</param>/// <returns>如找到,返回索引号,否则返回-1</returns>public int GetIndex(string sFieldName, string sValue){return db.GetIDFromValue(sFieldName, sValue, m_sTableName);}//----------------------------------------------------------------------------属性/// <summary>/// 返回记录条数/// </summary>public int recordCount{get{return db.getRecordCount(m_sTableName);}}/// <summary>/// 返回最后一条记录的某个字段值/// </summary>/// <param name="sFileName"></param>/// <returns></returns>public object getFieldValueForLastRecord(string sFieldName){return db.getFieldValueForLastRecord(sFieldName, m_sTableName, "");}/// <summary>/// 删除当前记录/// </summary>/// <param name="em"></param>/// <returns></returns>/// <summary>/// 根据索引号从数据库读出一条记录/// </summary>/// <param name="sID"></param>/// <returns></returns>public bool readDataFromID(string sID){DataTable dt = db.ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE fd_id =" + sID);return readAll(dt);}/// <summary>/// 查字段值为oFieldValue的第一条记录,如果找到,则返回第一条记录的ID,否则返回-1,字符串字段;/// </summary>/// <param name="sFieldName">字段名</param>/// <param name="sFileValue">字段值</param>/// <param name="s_condition">条件,可以为空</param>/// <returns></returns>public int find_s(string sFieldName, string sFileValue, string s_condition = ""){string ssql = "SELECT fd_id," + sFieldName + " FROM " + m_sTableName + " WHERE "+ sFieldName + "=\'" + lg.CheckSQLString(sFileValue) + "\'";if (s_condition.Trim() != "")ssql += " AND " + s_condition;DataTable dt = db.ExecSQLQuery(ssql);if (dt.Rows.Count > 0){return (int)dt.Rows[0]["fd_id"];}return -1;}/// <summary>/// 查字段值为oFieldValue的第一条记录,如果找到,则返回第一条记录的ID,否则返回-1,数字字段;/// </summary>/// <param name="sFieldName"></param>/// <param name="oFieldValue"></param>/// <param name="sCondition"></param>/// <returns></returns>public int find_d(string sFieldName, object oFieldValue, string sCondition){string ssql = "SELECT fd_id," + sFieldName + " FROM " + m_sTableName + " WHERE "+ sFieldName + "=" + oFieldValue.ToString();if (sCondition.Trim().Length != 0){ssql += " WHERE " + sCondition;}DataTable dt = db.ExecSQLQuery(ssql);if (dt.Rows.Count > 0){return (int)dt.Rows[0]["fd_id"];}return -1;}/// <summary>/// 查时间值为dt1和dt2之前的记录,如有查到,则返回第一条记录,否则返回-1./// </summary>/// <param name="sFieldName"></param>/// <param name="dt1"></param>/// <param name="dt2"></param>/// <param name="sCondition"></param>/// <returns></returns>public int find_t(string sFieldName, DateTime dt1, DateTime dt2, string sCondition){string ssql = "SELECT fd_id FROM " + m_sTableName + " WHERE "+ sFieldName + " between \'" + dt1.ToString() + "\' AND \'" + dt2.ToString() + "\'";if (sCondition.Trim().Length != 0){ssql += " AND " + sCondition;}DataTable dt = db.ExecSQLQuery(ssql);if (dt.Rows.Count > 0){return (int)dt.Rows[0]["fd_id"];}return -1;}/// <summary>/// 给出字段名和字段值,读取字段值第一次出现的记录,成功返回真,否则返加假。/// </summary>/// <param name="sFieldName">字段名</param>/// <param name="oFieldValue">字段值</param>/// <returns></returns>public bool readFromFieldValue(string sFieldName, object oFieldValue){string ssql = "SELECT * FROM " + m_sTableName + " WHERE " + sFieldName + "=";if (oFieldValue.GetType().ToString() == "System.String"){ssql += "\'" + oFieldValue.ToString() + "\'";}else{throw new Exception("不能识别的数据类型");}return readAll(db.ExecSQLQuery(ssql));}/// <summary>/// 根据索引号从数据库读出一条记录/// </summary>/// <param name="sID"></param>/// <returns></returns>public bool readDataFromID(int iID){return readAll(db.ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE fd_id =" + iID.ToString()));}/// <summary>/// 显示读取记录时的错误信息/// </summary>/// <param name="iID"></param>public void errorRread(int iID){throw new Exception("错误:在表“" + m_sTableName + "”中,无法读取ID号为:“" + iID.ToString() + "”的数据库记录!");}/// <summary>/// 显示读取记录时的错误信息/// </summary>/// <param name="iID"></param>public void errorRread(string sID){throw new Exception("错误:在表“" + m_sTableName + "”中,无法读取ID号为:“" + sID + "”的数据库记录!");}/// <summary>/// 显示删除记录时的错误信息/// </summary>/// <param name="iID"></param>public void errorDelete(int iID){throw new Exception("错误:在表“" + m_sTableName + "”中,无法删除ID号为:“" + iID.ToString() + "”的数据库记录!");}/// <summary>/// 修改一个ID号/// </summary>/// <param name="iid"></param>/// <returns></returns>public virtual int updateID(int nNewID){return db.ExecNonSQL("UPDATE " + m_sTableName + "  SET fd_id = " + nNewID.ToString() + " WHERE fd_id=" +fd_id.ToString());}/// <summary>/// 初始化数据,在类的构造函数中,会调用这个函数/// </summary>protected virtual void InitData(){fd_id = -1;fd_create_time = DateTime.Now;fd_modify_time = DateTime.Now;fd_create_author_id = -1;fd_modify_author_id = -1;fd_nchar_ext1 = "";fd_nchar_ext2 = "";fd_ntext_ext1 = "";fd_ntext_ext2 = "";fd_integer_ext1 = 0;fd_integer_ext2 = 0;fd_float_ext1 = 0;fd_float_ext2 = 0;fd_desc = "";}/// <summary>/// 根据字段的值,读取一条记录/// </summary>/// <param name="sNameCN"></param>/// <returns></returns>public virtual bool readDataFromName_CN(string sValue){return readAll(db.ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE fd_name_cn =\'" + lg.CheckSQLString(sValue) + "\'"));}/// <summary>/// 根据字段的值,读取一条记录/// </summary>/// <param name="sNameCN"></param>/// <returns></returns>public virtual bool readDataFromName(string sValue){string fd_field_name = "fd_name_cn";if (lg.languageID == 1){fd_field_name = "fd_name_en";}return readAll(db.ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE " + fd_field_name + "=\'" + lg.CheckSQLString(sValue) + "\'"));}/// <summary>/// 读取所有字段值/// </summary>/// <param name="dt"></param>public virtual bool readAll(DataTable dt){if (dt.Rows.Count > 0){fd_id = (int)dt.Rows[0]["fd_id"];fd_create_time = Convert.ToDateTime(dt.Rows[0]["fd_create_time"]);fd_modify_time = Convert.ToDateTime(dt.Rows[0]["fd_modify_time"]);fd_desc = dt.Rows[0]["fd_desc"].ToString();return true;}return false;}public virtual void readRowAll(DataRow dr){fd_id = (int)dr["fd_id"];fd_create_time = Convert.ToDateTime(dr["fd_create_time"]);fd_modify_time = Convert.ToDateTime(dr["fd_modify_time"]);fd_desc = dr["fd_desc"].ToString();}/// <summary>/// 更新照片,文件等二进制字段/// </summary>/// <param name="sFieldName"></param>/// <param name="msFieldValue"></param>/// <param name="em"></param>/// <returns></returns>public int updateMemoryField(string sFieldName, MemoryStream msFieldValue){
#if _WINDOWS_PLATFORM_if (msFieldValue == null)   return 0;string ssql = "UPDATE " + m_sTableName + " SET " + sFieldName + "=@"+ sFieldName + " WHERE fd_id=" + fd_id.ToString();string ssqlName = "@" + sFieldName;if (db.dataFormat == DataFormat_.dfAccdb || db.dataFormat == DataFormat_.dfMDB){OleDbConnection onn = new OleDbConnection(db.GetConnection().ConnectionString);OleDbCommand cmd = new OleDbCommand(ssql,onn);OleDbParameter par_filed = new OleDbParameter(ssqlName, OleDbType.LongVarBinary);       par_filed.Value = msFieldValue.ToArray();cmd.Parameters.Add(par_filed);onn.Open();int n = cmd.ExecuteNonQuery();onn.Close();return n;}else if (db.dataFormat == DataFormat_.dfSQLServer){SqlConnection onn = new SqlConnection(db.GetConnection().ConnectionString);SqlCommand cmd = new SqlCommand(ssql, onn);SqlParameter par_filed = new SqlParameter(ssqlName, OleDbType.LongVarBinary);par_filed.Value = msFieldValue.ToArray();cmd.Parameters.Add(par_filed);onn.Open();int n = cmd.ExecuteNonQuery();onn.Close();return n;}else{//lg.ShowInfo("InsertSQL(crm_natural_person em)函数还未完成,请重新完成!",this);return 0;}        
#elsethrow new Exception("代码未完成!");
#endif}/*/// <summary>/// 查看这个员工是否能够修改这个模块/// </summary>/// <param name="sModule"></param>/// <returns></returns>public virtual bool CanModuleWrite(int i_module_id){return true;}/// <summary>/// 查看这个员工是否能够读取这个模块/// </summary>/// <param name="sModule"></param>/// <returns></returns>public virtual bool CanModuleRead(int i_module_id){return true;}/// <summary>/// 查看这个员工是否能够删除记录/// </summary>/// <param name="sModule"></param>/// <returns></returns>public virtual bool CanModuleDelete(int i_module_id){return true;}*//// <summary>/// 创建时间: ????-??-??      最后一次修改时间:2020-06-16/// 根据参数,得到SQL语句/// </summary>/// <param name="ro"></param>/// <returns></returns>public virtual string get_Record_Operate_SQL(Record_Operate ro){string ssql;switch (ro){case Record_Operate.R_DELETE:{ssql = "DELETE FROM " + m_sTableName + " WHERE fd_id = " + fd_id.ToString();break;}case Record_Operate.R_INSERT:{fd_id = GetNewID();ssql = "INSERT INTO " + m_sTableName +"(fd_id,fd_create_time,fd_modify_time,fd_create_author_id,fd_modify_author_id,fd_desc) VALUES(" +"" + fd_id.ToString() + "," +           "\'" + DateTime.Now.ToShortDateString() + "\'," +"\'" + DateTime.Now.ToShortDateString() + "\'," +"" + GetLoginID().ToString() + "," +"" + GetLoginID().ToString() + "," +"\'" + lg.CheckSQLString(fd_desc) + "\'" + ")";                         break;}case Record_Operate.R_UPDATE:{ssql = "UPDATE [" + m_sTableName + "] SET " +//"fd_create_time=\'" + fd_create_time.ToString() + "\'," +"[fd_create_author_id] =" + GetLoginID().ToString() + "," +"[fd_modify_time]=\'" + DateTime.Now.ToShortDateString() + "\'," +"[fd_desc]=\'" + lg.CheckSQLString(fd_desc) + "\' WHERE fd_id =" + fd_id.ToString();break;}case Record_Operate.R_VIEW:{if (lg.languageID == 2){ssql = "SELECT fd_id AS 索引,fd_create_time AS 创建时间,fd_modify_time AS 修改时间,fd_desc AS  描述 FROM " + m_sTableName;}else{ssql = "SELECT fd_id AS [Index], fd_create_time AS [Create time],fd_modify_time AS [Modify time]fd_desc AS [Description] FROM " + m_sTableName;}break;}default:ssql = "";break;}return ssql;}public mis_table(string sTableName, Db_ fromDB){InitData();db = fromDB;m_sTableName = sTableName;}/// <summary>/// 如果没有指定数据库,则默认为:MIS_Global.db_data/// </summary>/// <param name="sTableName">表名</param>public mis_table(string sTableName){InitData();db = MIS_Global.db_data;m_sTableName = sTableName;}/// <summary>/// 读取id号为最大的记录,一般是最后一条记录/// </summary>/// <returns></returns>public bool readRecorderForMaxID(){return readAll(db.ExecSQLQuery("SELECT TOP 1 * FROM " + m_sTableName + " ORDER BY fd_id DESC"));}}public class mis_image : mis_table{/// <summary>/// 图片类型(合同,个人简历,个人相片、、)/// </summary>protected string fd_type;/// <summary>/// 关键字,标识/// </summary>protected string fd_key;/// <summary>/// 页面次序/// </summary>protected int fd_page_order;/// <summary>/// 图片/// </summary>private MemoryStream fd_image;/// <summary>/// 图片扩展名/// </summary>protected string fd_image_ext;/// <summary>/// 图片类型(合同,个人简历,个人相片、、)/// </summary>public string type { get { return fd_type; } set { fd_type = value; } }/// <summary>/// 关键字,标识/// </summary>public string key { get { return fd_key; } set { fd_key = value; } }/// <summary>/// 页面次序/// </summary>public int page_order { get { return fd_page_order; } set { fd_page_order = value; } }/// <summary>/// 图片/// </summary>public MemoryStream image{get{return fd_image;}set{fd_image = value;}}/// <summary>/// 图片扩展名/// </summary>public string image_ext { get { return fd_image_ext; } set { fd_image_ext = value; } }public mis_image() : base("mis_image", LDB_Global.db_data){fd_image = null;}/*public mis_image(string sTableName) : base(sTableName, MIS_Global.LoginUser.db){fd_image = null;}*//// <summary>/// 更新照片/// </summary>/// <param name="sFullPath"></param>public int updatePicture(string sFullPath){/*FileStream fs = new FileStream(sFullPath, FileMode.Open, FileAccess.Read);BinaryReader br = new BinaryReader(fs);byte[] _imgBytesIn = br.ReadBytes((int)fs.Length);br.Close();fs.Close(); image = new System.IO.MemoryStream(_imgBytesIn);return updateMemoryField("fd_image", image, null);*/return 0;}/// <summary>/// 读取照片/// </summary>/// <returns></returns>public bool readPicture(){DataTable dt = db.ExecSQLQuery("SELECT fd_image FROM " + m_sTableName + " WHERE fd_id=" +fd_id.ToString());if (dt.Rows.Count > 0){if (dt.Rows[0]["fd_image"] != DBNull.Value){fd_image = new MemoryStream((byte[])dt.Rows[0]["fd_image"]);return true;}}return false;}/// <summary>/// 返回一个新的页面序号/// </summary>/// <param name="sTableName"></param>/// <param name="sType"></param>/// <param name="sKey"></param>/// <returns></returns>public static int get_new_order(string sTableName, string sType, string sKey){string ssql = "SELECT TOP 1 fd_page_order FROM  " + sTableName + " WHERE fd_type=\'" +sType + "\' AND fd_key=\'" + sKey + "\' ORDER BY fd_page_order DESC";DataTable dt = LDB_Global.db_data.ExecSQLQuery(ssql);if (dt.Rows.Count > 0)return System.Convert.ToInt32(dt.Rows[0]["fd_page_order"]) + 1;elsereturn 1;}public override string get_Record_Operate_SQL(Record_Operate ro){string ssql = "";switch (ro){case Record_Operate.R_INSERT:{fd_id = GetNewID();ssql = "INSERT INTO " + m_sTableName +"(fd_id,fd_create_time,fd_modify_time,fd_create_author_id,fd_modify_author_id," +"fd_type,fd_key,fd_page_order,fd_image_ext," +"fd_nchar_ext1,fd_nchar_ext2,fd_ntext_ext1,fd_ntext_ext2,fd_integer_ext1," +"fd_integer_ext2,fd_float_ext1,fd_float_ext2,fd_desc) VALUES(" +"" + fd_id.ToString() + "," +"\'" + System.DateTime.Now.ToString() + "\'," +"\'" + System.DateTime.Now.ToString() + "\'," +"" + MIS_Global.LoginUser.fd_id.ToString() + "," +"" + MIS_Global.LoginUser.fd_id.ToString() + "," +"\'" + lg.CheckSQLString(fd_type) + "\'," +"\'" + lg.CheckSQLString(fd_key) + "\'," +"" + fd_page_order.ToString() + "," +"\'" + lg.CheckSQLString(fd_image_ext) + "\'," +"\'" + lg.CheckSQLString(fd_nchar_ext1) + "\'," +"\'" + lg.CheckSQLString(fd_nchar_ext2) + "\'," +"\'" + lg.CheckSQLString(fd_ntext_ext1) + "\'," +"\'" + lg.CheckSQLString(fd_ntext_ext2) + "\'," +"" + fd_integer_ext1.ToString() + "," +"" + fd_integer_ext2.ToString() + "," +"" + fd_float_ext1.ToString() + "," +"" + fd_float_ext2.ToString() + "," +"\'" + lg.CheckSQLString(fd_desc) + "\')";break;}case Record_Operate.R_UPDATE:{ssql = "UPDATE " + m_sTableName + " SET ";ssql += "fd_id=" + fd_id.ToString() + ",";ssql += "fd_modify_time=\'" + System.DateTime.Now.ToString() + "\',";ssql += "fd_modify_author_id=" + MIS_Global.LoginUser.fd_id.ToString() + ",";ssql += "fd_type=\'" + lg.CheckSQLString(fd_type) + "\',";ssql += "fd_key=\'" + lg.CheckSQLString(fd_key) + "\',";ssql += "fd_page_order=" + fd_page_order.ToString() + ",";ssql += "fd_image_ext=\'" + lg.CheckSQLString(fd_image_ext) + "\',";ssql += "fd_nchar_ext1=\'" + lg.CheckSQLString(fd_nchar_ext1) + "\',";ssql += "fd_nchar_ext2=\'" + lg.CheckSQLString(fd_nchar_ext2) + "\',";ssql += "fd_ntext_ext1=\'" + lg.CheckSQLString(fd_ntext_ext1) + "\',";ssql += "fd_ntext_ext2=\'" + lg.CheckSQLString(fd_ntext_ext2) + "\',";ssql += "fd_integer_ext1=" + fd_integer_ext1.ToString() + ",";ssql += "fd_integer_ext2=" + fd_integer_ext2.ToString() + ",";ssql += "fd_float_ext1=" + fd_float_ext1.ToString() + ",";ssql += "fd_float_ext2=" + fd_float_ext2.ToString() + ",";ssql += "fd_desc=\'" + lg.CheckSQLString(fd_desc) + "\'";ssql += "  WHERE fd_id=" + fd_id.ToString();break;}default:return base.get_Record_Operate_SQL(ro);}return ssql;}public override bool readAll(DataTable dt){if (dt.Rows.Count > 0){fd_id = (int)dt.Rows[0]["fd_id"];fd_create_time = Convert.ToDateTime(dt.Rows[0]["fd_create_time"]);fd_modify_time = Convert.ToDateTime(dt.Rows[0]["fd_modify_time"]);fd_create_author_id = (int)dt.Rows[0]["fd_create_author_id"];fd_modify_author_id = (int)dt.Rows[0]["fd_modify_author_id"];fd_type = dt.Rows[0]["fd_type"].ToString();fd_key = dt.Rows[0]["fd_key"].ToString();fd_page_order = (int)dt.Rows[0]["fd_page_order"];fd_image_ext = dt.Rows[0]["fd_image_ext"].ToString();fd_nchar_ext1 = dt.Rows[0]["fd_nchar_ext1"].ToString();fd_nchar_ext2 = dt.Rows[0]["fd_nchar_ext2"].ToString();fd_ntext_ext1 = dt.Rows[0]["fd_ntext_ext1"].ToString();fd_ntext_ext2 = dt.Rows[0]["fd_ntext_ext2"].ToString();fd_integer_ext1 = (int)dt.Rows[0]["fd_integer_ext1"];fd_integer_ext2 = (int)dt.Rows[0]["fd_integer_ext2"];fd_float_ext1 = Convert.ToSingle(dt.Rows[0]["fd_float_ext1"]);fd_float_ext2 = Convert.ToSingle(dt.Rows[0]["fd_float_ext2"]);fd_desc = dt.Rows[0]["fd_desc"].ToString();return true;}return false;}public override void readRowAll(DataRow dr){fd_id = (int)dr["fd_id"];fd_create_time = Convert.ToDateTime(dr["fd_create_time"]);fd_modify_time = Convert.ToDateTime(dr["fd_modify_time"]);fd_create_author_id = (int)dr["fd_create_author_id"];fd_modify_author_id = (int)dr["fd_modify_author_id"];fd_type = dr["fd_type"].ToString();fd_key = dr["fd_key"].ToString();fd_page_order = (int)dr["fd_page_order"];fd_image_ext = dr["fd_image_ext"].ToString();fd_nchar_ext1 = dr["fd_nchar_ext1"].ToString();fd_nchar_ext2 = dr["fd_nchar_ext2"].ToString();fd_ntext_ext1 = dr["fd_ntext_ext1"].ToString();fd_ntext_ext2 = dr["fd_ntext_ext2"].ToString();fd_integer_ext1 = (int)dr["fd_integer_ext1"];fd_integer_ext2 = (int)dr["fd_integer_ext2"];fd_float_ext1 = Convert.ToSingle(dr["fd_float_ext1"]);fd_float_ext2 = Convert.ToSingle(dr["fd_float_ext2"]);fd_desc = dr["fd_desc"].ToString();}}}

csharp_mis_table.h

/***************************************************************************** 文件名		:csharp_mis_table.h** 功能			:数据库表的基类** 作者			:李锋** 邮箱			:ruizhilf@139.com** 手机			:13828778863** 创建时间		:2007年01月09日-------最后一次修改时间:2016年11月22日***************************************************************************/
#pragma once#include"csharp_db.h"
#include "csharp_MIS_Global.h"
/_LF_BEGIN_using namespace System;
using namespace System::IO;
using namespace System::Data;#if _WINDOWS_PLATFORM_
using System.Data.SqlClient;
using System.Data.OleDb;
#if _WINDOWS_DESKTOP_
using System.Windows.Forms;
#elif _WINDOWS_WEB_
using System.Web.UI;
using System.Web.UI.WebControls;
#endif
#elif _ANDROID_PLATFORM_
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
#elif _IOS_PLATFORM_#endifref class csharp_mis_natural_person;////// <summary>
/// csharp_mis_table 的摘要说明
/// </summary>
/// <summary>
/// 对记录的操作,例如查找,更新,删除等等
/// </summary>
enum class  csharp_Record_Operate
{R_DELETE,         //删除一条记录R_UPDATE,         //更新一条记录R_INSERT,         //插入一条记录R_READ_ALL,       //读出全部记录  R_VIEW            //显示字段
};ref class csharp_mis_table
{
protected:/// <summary>/// 初始化数据,在类的构造函数中,会调用这个函数/// </summary>virtual void InitData();public:/// <summary>/// 活动,Web页面,窗体/// </summary>#if _WINDOWS_DESKTOP_Form context_page_form = null;
#elif _WINDOWS_WEB_Page context_page_form = null;
#elif _LF_PHONE_APP_#elif _ANDROID_PLATFORM_Activity context_page_form = null;
#elif _IOS_PLATFORM_#endif/// <summary>/// MIS全局数据库/// </summary>csharp_db^ db;/// <summary>/// 要操作表的名子/// </summary>String^ m_sTableName;//------------------------------------------------------------------------------------------------------------------------------------------数据定议/// <summary>/// 一条记录的索引/// </summary>int fd_id;/// <summary>/// 记录创建时间/// </summary>DateTime fd_create_time;/// <summary>/// 记录最后一次修改时间/// </summary>DateTime fd_modify_time;/// <summary>/// 记录创建人/// </summary>int fd_create_author_id;/// <summary>/// 最后一次记录修改人		/// </summary>int fd_modify_author_id;/// <summary>/// 扩展字段 nchar 1/// </summary>String^ fd_nchar_ext1;/// <summary>/// 扩展字段 nchar 2/// </summary>String^ fd_nchar_ext2;/// <summary>/// 扩展字段ntext 1/// </summary>String^ fd_ntext_ext1;/// <summary>/// 扩展字段ntext 2/// </summary>String^ fd_ntext_ext2;/// <summary>/// 扩展字段,INTEGER1/// </summary>int fd_integer_ext1;/// <summary>/// 扩展字段,INTEGER2/// </summary>int fd_integer_ext2;/// <summary>/// 扩展字段, float1/// </summary>float fd_float_ext1;/// <summary>/// 扩展字段 ,float2/// </summary>float fd_float_ext2;/// <summary>/// 说明字段/// </summary>  String^ fd_desc;/// <summary>/// Key的字符串形式索引/// </summary>property String^ SID{ String^  get() { return fd_id.ToString(); } }/// <summary>/// Key的整数形式索引/// </summary>property int ID{ int get() { return fd_id; } }/// <summary>/// 登陆人ID/// </summary>int GetLoginUserID();//-------------------------------------------------------------------------------------------------------------------------------重写/// <summary>/// 删除一条索引为sID的记录。/// </summary>/// <param name="sID"></param>/// <returns></returns>bool deleteDataFromID(String^ sID, csharp_mis_natural_person^ em);//-------------------------------------------------------------------------------------------------------------------------------重写/// <summary>/// 返回模块ID/// </summary>/// <returns></returns>virtual int get_module_id();/// <summary>/// 删除一条记录/// </summary>/// <param name="em"></param>/// 创建时间:????-??-??          最后一次修改时间:2020-05-04/// <returns></returns>virtual int DeleteSQL();/// <summary>/// 添加一条记录。/// </summary>/// <param name="em"></param>/// 创建时间:????-??-??          最后一次修改时间:2020-05-04/// <returns></returns>virtual int InsertSQL();/// <summary>/// 更新一条记录/// </summary>/// <param name="em"></param>/// 创建时间:????-??-??          最后一次修改时间:2020-05-13/// <returns></returns>virtual int UpdateSQL();/// <summary>/// /// </summary>/// <param name="sRecordID"></param>/// <param name="sFieldName"></param>/// <param name="sFieldValue"></param>/// <param name="sTableName"></param>/// <param name="db"></param>/// 创建时间: ????-??-??      最后一次修改时间:2021-10-03/// <returns></returns>static bool UpdateFieldValue(String^ sRecordID, String^ sFieldName,String^ sFieldValue, String^ sTableName, csharp_db^ db);/// <summary>/// /// </summary>/// <param name="sFieldName"></param>/// <param name="sFieldValue"></param>/// <param name="sTableName"></param>/// <param name="db"></param>/// 创建时间: ????-??-??      最后一次修改时间:2021-10-03/// <returns></returns>static String^ ConvertToSQLString(String^ sFieldName, String^ sFieldValue,String^ sTableName, csharp_db^ db);//-----------------------------------------------------------------------------------------------------方法csharp_StringList^ getModuleListForTypeCalling(int calling_id);csharp_StringList^ getModuleListForTypeCalling(String^ calling_name);/// <summary>/// 新的索引号/// </summary>/// <returns></returns>int GetNewID();/// <summary>/// 获取登陆人ID/// </summary>/// <returns></returns>int GetLoginID();/// <summary>/// 返回记录条数/// </summary>/// <returns></returns>int getRecordCount();#if _CS_/// <summary>/// 得到某字段的所有值的列表,如果sqql不为空,则执行sql语句/// </summary>/// <param name="li"></param>void getFieldValueList(String^ sFieldName, System.Windows.Forms.ComboBox cb, String^ ssql){db.GetTrimFieldValueList(sFieldName, m_sTableName, "", cb);}#elif _WINDOWS_WEB_/// <summary>/// 得到某字段的所有值的列表,如果sqql不为空,则执行sql语句/// </summary>/// <param name="li"></param>void getFieldValueList(String^ sFieldName, System.Web.UI.WebControls.ListItemCollection li,String^ ssql){db.GetTrimFieldValueList(sFieldName, m_sTableName, "", li);}
#endif//-----------------------------------------------------------------------------方法 /// <summary>/// 从某个字段的值得到索引号,这个值必须是唯一的,字段的值必须是字符串/// </summary>/// <param name="sFieldName">字段名</param>/// <param name="sValue">字段值</param>/// <returns>如找到,返回索引号,否则返回-1</returns>int GetIndex(String^ sFieldName, String^ sValue);//----------------------------------------------------------------------------属性/// <summary>/// 返回记录条数/// </summary>property int recordCount{int get(){return db->getRecordCount(m_sTableName);}}/// <summary>/// 返回最后一条记录的某个字段值/// </summary>/// <param name="sFileName"></param>/// <returns></returns>Object^ getFieldValueForLastRecord(String^ sFieldName);/// <summary>/// 删除当前记录/// </summary>/// <param name="em"></param>/// <returns></returns>/// <summary>/// 根据索引号从数据库读出一条记录/// </summary>/// <param name="sID"></param>/// <returns></returns>bool readDataFromID(String^ sID);/// <summary>/// 查字段值为oFieldValue的第一条记录,如果找到,则返回第一条记录的ID,否则返回-1,字符串字段;/// </summary>/// <param name="sFieldName">字段名</param>/// <param name="sFileValue">字段值</param>/// <param name="s_condition">条件,可以为空</param>/// <returns></returns>int find_s(String^ sFieldName, String^ sFileValue, String^ s_condition);int find_s(String^ sFieldName, String^ sFileValue);/// <summary>/// 查字段值为oFieldValue的第一条记录,如果找到,则返回第一条记录的ID,否则返回-1,数字字段;/// </summary>/// <param name="sFieldName"></param>/// <param name="oFieldValue"></param>/// <param name="sCondition"></param>/// <returns></returns>int find_d(String^ sFieldName, Object^ oFieldValue, String^ sCondition);/// <summary>/// 查时间值为dt1和dt2之前的记录,如有查到,则返回第一条记录,否则返回-1./// </summary>/// <param name="sFieldName"></param>/// <param name="dt1"></param>/// <param name="dt2"></param>/// <param name="sCondition"></param>/// <returns></returns>int find_t(String^ sFieldName, DateTime dt1, DateTime dt2, String^ sCondition);/// <summary>/// 给出字段名和字段值,读取字段值第一次出现的记录,成功返回真,否则返加假。/// </summary>/// <param name="sFieldName">字段名</param>/// <param name="oFieldValue">字段值</param>/// <returns></returns>bool readFromFieldValue(String^ sFieldName, Object^ oFieldValue);/// <summary>/// 根据索引号从数据库读出一条记录/// </summary>/// <param name="sID"></param>/// <returns></returns>bool readDataFromID(int iID);/// <summary>/// 显示读取记录时的错误信息/// </summary>/// <param name="iID"></param>void errorRread(int iID);/// <summary>/// 显示读取记录时的错误信息/// </summary>/// <param name="iID"></param>void errorRread(String^ sID);/// <summary>/// 显示删除记录时的错误信息/// </summary>/// <param name="iID"></param>void errorDelete(int iID);/// <summary>/// 修改一个ID号/// </summary>/// <param name="iid"></param>/// <returns></returns>virtual int updateID(int nNewID);/// <summary>/// 根据字段的值,读取一条记录/// </summary>/// <param name="sNameCN"></param>/// <returns></returns>virtual bool readDataFromName_CN(String^ sValue);/// <summary>/// 根据字段的值,读取一条记录/// </summary>/// <param name="sNameCN"></param>/// <returns></returns>virtual bool readDataFromName(String^ sValue);/// <summary>/// 读取所有字段值/// </summary>/// <param name="dt"></param>virtual bool readAll(DataTable^ dt);virtual bool readRowAll(DataRow^ dr);/// <summary>/// 更新照片,文件等二进制字段/// </summary>/// <param name="sFieldName"></param>/// <param name="msFieldValue"></param>/// <param name="em"></param>/// <returns></returns>int updateMemoryField(String^ sFieldName, MemoryStream^ msFieldValue);/*/// <summary>/// 查看这个员工是否能够修改这个模块/// </summary>/// <param name="sModule"></param>/// <returns></returns>virtual bool CanModuleWrite(int i_module_id){return true;}/// <summary>/// 查看这个员工是否能够读取这个模块/// </summary>/// <param name="sModule"></param>/// <returns></returns>virtual bool CanModuleRead(int i_module_id){return true;}/// <summary>/// 查看这个员工是否能够删除记录/// </summary>/// <param name="sModule"></param>/// <returns></returns>virtual bool CanModuleDelete(int i_module_id){return true;}*//// <summary>/// 创建时间: ????-??-??      最后一次修改时间:2020-06-16/// 根据参数,得到SQL语句/// </summary>/// <param name="ro"></param>/// <returns></returns>virtual String^ get_Record_Operate_SQL(csharp_Record_Operate ro);csharp_mis_table(String^ sTableName, csharp_db^ fromDB);/// <summary>/// 如果没有指定数据库,则默认为:csharp_MIS_Global::db_data/// </summary>/// <param name="sTableName">表名</param>csharp_mis_table(String^ sTableName);/// <summary>/// 读取id号为最大的记录,一般是最后一条记录/// </summary>/// <returns></returns>bool readRecorderForMaxID();
};/// <summary>
/// 有名字fd_name_cn, fd_name_en的表
/// </summary>
ref class csharp_mis_identity : public csharp_mis_table
{
public:String^ fd_name_cn;String^ fd_name_en;csharp_mis_identity(String^ sTableName, csharp_db^ db) :csharp_mis_table(sTableName, db) {}virtual String^ ToString() override { return fd_name_cn; }String^ get_Record_Operate_SQL(csharp_Record_Operate ro) override;bool readRowAll(DataRow^ dr) override;
};ref class csharp_mis_image : public csharp_mis_table
{private:/// <summary>/// 图片/// </summary>MemoryStream^ fd_image;protected:/// <summary>/// 图片类型(合同,个人简历,个人相片、、)/// </summary>String^ fd_type;/// <summary>/// 关键字,标识/// </summary>String^ fd_key;/// <summary>/// 页面次序/// </summary>int fd_page_order;/// <summary>/// 图片扩展名/// </summary>String^ fd_image_ext;public:/// <summary>/// 图片类型(合同,个人简历,个人相片、、)/// </summary>property String^ type{ String^ get(){ return fd_type; } void set(String^ value){ fd_type = value; }}/// <summary>/// 关键字,标识/// </summary>property String^ key{ String^ get(){return fd_key; } void set(String^ value){ fd_key = value;} }/// <summary>/// 页面次序/// </summary>property int page_order{ int get(){ return fd_page_order; } void set(int value){ fd_page_order = value;} }/// <summary>/// 图片/// </summary>property  MemoryStream^ image{MemoryStream^ get(){return fd_image;}void set(MemoryStream^ value){fd_image = value;}}/// <summary>/// 图片扩展名/// </summary>property String^ image_ext{ String^ get(){ return fd_image_ext;} void set(String^ value){ fd_image_ext = value; } }csharp_mis_image() : csharp_mis_table("mis_image", csharp_DB_Global::db_data){fd_image = null;}/*mis_image(String^ sTableName) : base(sTableName, csharp_MIS_Global::LoginUser.db){fd_image = null;}*//// <summary>/// 更新照片/// </summary>/// <param name="sFullPath"></param>int updatePicture(String^ sFullPath);/// <summary>/// 读取照片/// </summary>/// <returns></returns>bool readPicture();/// <summary>/// 返回一个新的页面序号/// </summary>/// <param name="sTableName"></param>/// <param name="sType"></param>/// <param name="sKey"></param>/// <returns></returns>static int get_new_order(String^ sTableName, String^ sType, String^ sKey);String^ get_Record_Operate_SQL(csharp_Record_Operate ro)override;bool readAll(DataTable^ dt) override;void readRowAll(DataRow dr)override;};//
_LF_END_

csharp_mis_table.cpp

#include "csharp_mis_table.h"
#include "csharp_mis_natural_person.h"
#include "csharp_crm_login_member.h"_LF_BEGIN_int csharp_mis_table::GetLoginUserID()
{return csharp_MIS_Global::LoginUser->ID;  
}bool csharp_mis_table::deleteDataFromID(String^ sID, csharp_mis_natural_person^ em)
{if (em != null){if (!csharp_MIS_Global::LoginUser->CanModuleDelete(get_module_id())){throw gcnew Exception("你没有权限删除这条录!");}}return (db->ExecNonSQL("DELETE FROM " + m_sTableName + " WHERE fd_id = " + sID) != 0);
}void csharp_mis_table::InitData()
{fd_id = -1;fd_create_time = DateTime::Now;fd_modify_time = DateTime::Now;fd_create_author_id = -1;fd_modify_author_id = -1;fd_nchar_ext1 = "";fd_nchar_ext2 = "";fd_ntext_ext1 = "";fd_ntext_ext2 = "";fd_integer_ext1 = 0;fd_integer_ext2 = 0;fd_float_ext1 = 0;fd_float_ext2 = 0;fd_desc = "";
}int csharp_mis_table::get_module_id()
{return -1;
}int csharp_mis_table::DeleteSQL()
{csharp_crm_login_member^ clmLogin = csharp_MIS_Global::LoginUser;String^ ssql = this->get_Record_Operate_SQL(csharp_Record_Operate::R_DELETE);if (clmLogin != null){if (clmLogin->CanModuleDelete(get_module_id())){return db->ExecNonSQL(ssql);}else{//throw gcnew Exception("你没有权限删除这条记录,请用其它用户登陆再试!");gce::ShowError("你没有权限删除这条记录, 请用其它用户登陆再试!");return -1;}}else{return db->ExecNonSQL(ssql);}
}int csharp_mis_table::InsertSQL()
{csharp_crm_login_member^ clmLogin = csharp_MIS_Global::LoginUser;String^ ssql = this->get_Record_Operate_SQL(csharp_Record_Operate::R_INSERT);if (clmLogin != null){if (clmLogin->CanModuleWrite(get_module_id())){return db->ExecNonSQL(ssql);}else{//throw gcnew Exception("你没有权限写入这条记录,请用其它用户登陆再试!");gce::ShowError("你没有权限修改这条记录, 请用其它用户登陆再试!");return -1;}}else{return db->ExecNonSQL(ssql);}
}int csharp_mis_table::UpdateSQL()
{csharp_crm_login_member^ clmLogin = csharp_MIS_Global::LoginUser;String^ ssql = get_Record_Operate_SQL(csharp_Record_Operate::R_UPDATE);if (clmLogin != null){if (clmLogin->CanModuleWrite(get_module_id())){return db->ExecNonSQL(ssql);}else{//throw gcnew Exception("你没有权限写入这条记录,请用其它用户登陆再试!");gce::ShowError("你没有权限写入这条记录, 请用其它用户登陆再试!");return -1;}}else{return db->ExecNonSQL(ssql);}
}bool csharp_mis_table::UpdateFieldValue(String^ sRecordID, String^ sFieldName,String^ sFieldValue, String^ sTableName, csharp_db^ db)
{String^ ssql = "UPDATE [" + sTableName + "] SET [" + sFieldName + "]=" + ConvertToSQLString(sFieldName, sFieldValue, sTableName, db);ssql += " WHERE [fd_id] = " + sRecordID;return db->ExecNonSQL(ssql) != 0;}String^ csharp_mis_table::ConvertToSQLString(String^ sFieldName, String^ sFieldValue, String^ sTableName, csharp_db^ db)
{csharp_Field^  f = db->GetFieldInfo(sFieldName, sTableName);switch (f->DataType){case csharp_DataType::dtString:return "'" + gce::CheckSQLString(sFieldValue) + "'";case csharp_DataType::dtDateTime:return "\'" + sFieldValue + "\'";}return sFieldValue;
}csharp_StringList^ csharp_mis_table::getModuleListForTypeCalling(int calling_id)
{return null;
}csharp_StringList^ csharp_mis_table::getModuleListForTypeCalling(String^ calling_name)
{return null;
}int csharp_mis_table::GetNewID()
{return db->GetMaxID(m_sTableName, "") + 1;
}int csharp_mis_table::GetLoginID()
{return (csharp_MIS_Global::LoginUser != null ? csharp_MIS_Global::LoginUser->fd_id : -1);
}int csharp_mis_table::getRecordCount()
{DataTable^ dt = db->ExecSQLQuery("SELECT Count(*) AS fd_sum FROM " + m_sTableName);return (int)dt->Rows[0]["fd_sum"];
}int csharp_mis_table::GetIndex(String^ sFieldName, String^ sValue)
{return db->GetIDFromValue(sFieldName, sValue, m_sTableName);
}Object^ csharp_mis_table::getFieldValueForLastRecord(String^ sFieldName)
{return db->getFieldValueForLastRecord(sFieldName, m_sTableName, "");
}bool csharp_mis_table::readDataFromID(String^ sID)
{DataTable^ dt = db->ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE fd_id =" + sID);return readAll(dt);}int csharp_mis_table::find_s(String^ sFieldName, String^ sFileValue, String^ s_condition)
{String^ ssql = "SELECT fd_id," + sFieldName + " FROM " + m_sTableName + " WHERE "+ sFieldName + "=\'" + gce::CheckSQLString(sFileValue) + "\'";if (s_condition->Trim() != "")ssql += " AND " + s_condition;DataTable^ dt = db->ExecSQLQuery(ssql);if (dt->Rows->Count > 0){return (int)dt->Rows[0]["fd_id"];}return -1;
}int csharp_mis_table::find_s(String^ sFieldName, String^ sFileValue)
{return find_s(sFieldName, sFileValue, "");
}int csharp_mis_table::find_d(String^ sFieldName, Object^ oFieldValue, String^ sCondition)
{String^ ssql = "SELECT fd_id," + sFieldName + " FROM " + m_sTableName + " WHERE "+ sFieldName + "=" + oFieldValue->ToString();if (sCondition->Trim()->Length != 0){ssql += " WHERE " + sCondition;}DataTable^ dt = db->ExecSQLQuery(ssql);if (dt->Rows->Count > 0){return (int)dt->Rows[0]["fd_id"];}return -1;
}int csharp_mis_table::find_t(String^ sFieldName, DateTime dt1, DateTime dt2, String^ sCondition)
{String^ ssql = "SELECT fd_id FROM " + m_sTableName + " WHERE "+ sFieldName + " between \'" + dt1.ToString() + "\' AND \'" + dt2.ToString() + "\'";if (sCondition->Trim()->Length != 0){ssql += " AND " + sCondition;}DataTable^ dt = db->ExecSQLQuery(ssql);if (dt->Rows->Count > 0){return (int)dt->Rows[0]["fd_id"];}return -1;
}bool csharp_mis_table::readFromFieldValue(String^ sFieldName, Object^ oFieldValue)
{String^ ssql = "SELECT * FROM " + m_sTableName + " WHERE " + sFieldName + "=";if (oFieldValue->GetType()->ToString() == "System.String"){ssql += "\'" + oFieldValue->ToString() + "\'";}else{throw gcnew Exception("不能识别的数据类型");}return readAll(db->ExecSQLQuery(ssql));
}bool csharp_mis_table::readDataFromID(int iID)
{return readAll(db->ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE fd_id =" + iID.ToString()));
}void csharp_mis_table::errorRread(int iID)
{throw gcnew Exception("错误:在表“" + m_sTableName + "”中,无法读取ID号为:“" + iID.ToString() + "”的数据库记录!");
}void csharp_mis_table::errorRread(String^ sID)
{throw gcnew Exception("错误:在表“" + m_sTableName + "”中,无法读取ID号为:“" + sID + "”的数据库记录!");
}void csharp_mis_table::errorDelete(int iID)
{throw gcnew Exception("错误:在表“" + m_sTableName + "”中,无法删除ID号为:“" + iID.ToString() + "”的数据库记录!");
}int csharp_mis_table::updateID(int nNewID)
{return db->ExecNonSQL("UPDATE " + m_sTableName + "  SET fd_id = " + nNewID.ToString() + " WHERE fd_id=" +fd_id.ToString());
}bool csharp_mis_table::readDataFromName_CN(String^ sValue)
{return readAll(db->ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE fd_name_cn =\'" + gce::CheckSQLString(sValue) + "\'"));
}bool csharp_mis_table::readDataFromName(String^ sValue)
{String^ fd_field_name = "fd_name_cn";if (gce::languageID == 1){fd_field_name = "fd_name_en";}return readAll(db->ExecSQLQuery("SELECT * FROM " + m_sTableName + " WHERE " + fd_field_name + "=\'" + gce::CheckSQLString(sValue) + "\'"));
}bool csharp_mis_table::readAll(DataTable^ dt)
{if (dt->Rows->Count > 0){/*fd_id = (int)dt->Rows[0]["fd_id"];fd_create_time = Convert::ToDateTime(dt->Rows[0]["fd_create_time"]);fd_modify_time = Convert::ToDateTime(dt->Rows[0]["fd_modify_time"]);fd_desc = dt->Rows[0]["fd_desc"]->ToString();return true;*/return readRowAll(dt->Rows[0]);}return false;
}bool csharp_mis_table::readRowAll(DataRow^ dr)
{fd_id = (int)dr["fd_id"];fd_create_time = Convert::ToDateTime(dr["fd_create_time"]);fd_modify_time = Convert::ToDateTime(dr["fd_modify_time"]);fd_desc = dr["fd_desc"]->ToString();return true;
}int csharp_mis_table::updateMemoryField(String^ sFieldName, MemoryStream^ msFieldValue)
{
#if _WINDOWS_PLATFORM_if (msFieldValue == null)   return 0;String^ ssql = "UPDATE " + m_sTableName + " SET " + sFieldName + "=@"+ sFieldName + " WHERE fd_id=" + fd_id.ToString();String^ ssqlName = "@" + sFieldName;if (db->dataFormat == csharp_DataFormat::dfAccdb || db->dataFormat == csharp_DataFormat::dfMDB){OleDbConnection onn = gcnew OleDbConnection(db->GetConnection().ConnectionString);OleDbCommand cmd = gcnew OleDbCommand(ssql, onn);OleDbParameter par_filed = gcnew OleDbParameter(ssqlName, OleDbType.LongVarBinary);par_filed.Value = msFieldValue.ToArray();cmd.Parameters.Add(par_filed);onn.Open();int n = cmd.ExecuteNonQuery();onn.Close();return n;}else if (db->dataFormat == csharp_DataFormat::dfSQLServer){SqlConnection onn = gcnew SqlConnection(db->GetConnection().ConnectionString);SqlCommand cmd = gcnew SqlCommand(ssql, onn);SqlParameter par_filed = gcnew SqlParameter(ssqlName, OleDbType.LongVarBinary);par_filed.Value = msFieldValue.ToArray();cmd.Parameters.Add(par_filed);onn.Open();int n = cmd.ExecuteNonQuery();onn.Close();return n;}else{//gce::ShowInfo("InsertSQL(crm_natural_person em)函数还未完成,请重新完成!",this);return 0;}
#elsethrow gcnew Exception("代码未完成!");
#endif
}String^ csharp_mis_table::get_Record_Operate_SQL(csharp_Record_Operate ro)
{String^ ssql;switch (ro){case csharp_Record_Operate::R_DELETE:{ssql = "DELETE FROM " + m_sTableName + " WHERE fd_id = " + fd_id.ToString();break;}case csharp_Record_Operate::R_INSERT:{fd_id = GetNewID();ssql = "INSERT INTO " + m_sTableName +"(fd_id,fd_create_time,fd_modify_time,fd_create_author_id,fd_modify_author_id,fd_desc) VALUES(" +"" + fd_id.ToString() + "," +"\'" + DateTime::Now.ToShortDateString() + "\'," +"\'" + DateTime::Now.ToShortDateString() + "\'," +"" + GetLoginID().ToString() + "," +"" + GetLoginID().ToString() + "," +"\'" + gce::CheckSQLString(fd_desc) + "\'" + ")";break;}case csharp_Record_Operate::R_UPDATE:{ssql = "UPDATE [" + m_sTableName + "] SET " +//"fd_create_time=\'" + fd_create_time.ToString() + "\'," +"[fd_create_author_id] =" + GetLoginID().ToString() + "," +"[fd_modify_time]=\'" + DateTime::Now.ToShortDateString() + "\'," +"[fd_desc]=\'" + gce::CheckSQLString(fd_desc) + "\' WHERE fd_id =" + fd_id.ToString();break;}case csharp_Record_Operate::R_VIEW:{if (gce::languageID == 2){ssql = "SELECT fd_id AS 索引,fd_create_time AS 创建时间,fd_modify_time AS 修改时间,fd_desc AS  描述 FROM " + m_sTableName;}else{ssql = "SELECT fd_id AS [Index], fd_create_time AS [Create time],fd_modify_time AS [Modify time]fd_desc AS [Description] FROM " + m_sTableName;}break;}default:ssql = "";break;}return ssql;
}csharp_mis_table::csharp_mis_table(String^ sTableName, csharp_db^ fromDB)
{InitData();db = fromDB;m_sTableName = sTableName;
}csharp_mis_table::csharp_mis_table(String^ sTableName)
{InitData();db = csharp_MIS_Global::db_data;m_sTableName = sTableName;
}bool csharp_mis_table::readRecorderForMaxID()
{return readAll(db->ExecSQLQuery("SELECT TOP 1 * FROM " + m_sTableName + " ORDER BY fd_id DESC"));
}int csharp_mis_image::updatePicture(String^ sFullPath){/*FileStream fs = gcnew FileStream(sFullPath, FileMode.Open, FileAccess.Read);BinaryReader br = gcnew BinaryReader(fs);byte[] _imgBytesIn = br.ReadBytes((int)fs.Length);br.Close();fs.Close();image = gcnew System.IO.MemoryStream(_imgBytesIn);return updateMemoryField("fd_image", image, null);*/return 0;
}bool csharp_mis_image::readPicture()
{DataTable^ dt = db->ExecSQLQuery("SELECT fd_image FROM " + m_sTableName + " WHERE fd_id=" +fd_id.ToString());if (dt->Rows->Count > 0){if (dt->Rows[0]["fd_image"] != DBNull::Value){fd_image = gcnew MemoryStream( (array<byte>^)dt->Rows[0]["fd_image"]);return true;}}return false;
}int csharp_mis_image::get_new_order(String^ sTableName, String^ sType, String^ sKey)
{String^ ssql = "SELECT TOP 1 fd_page_order FROM  " + sTableName + " WHERE fd_type=\'" +sType + "\' AND fd_key=\'" + sKey + "\' ORDER BY fd_page_order DESC";DataTable^ dt = csharp_DB_Global::db_data->ExecSQLQuery(ssql);if (dt->Rows->Count > 0)return System::Convert::ToInt32(dt->Rows[0]["fd_page_order"]) + 1;elsereturn 1;
}String^ csharp_mis_image::get_Record_Operate_SQL(csharp_Record_Operate ro)
{String^ ssql = "";switch (ro){case csharp_Record_Operate::R_INSERT:{fd_id = GetNewID();ssql = "INSERT INTO " + m_sTableName +"(fd_id,fd_create_time,fd_modify_time,fd_create_author_id,fd_modify_author_id," +"fd_type,fd_key,fd_page_order,fd_image_ext," +"fd_nchar_ext1,fd_nchar_ext2,fd_ntext_ext1,fd_ntext_ext2,fd_integer_ext1," +"fd_integer_ext2,fd_float_ext1,fd_float_ext2,fd_desc) VALUES(" +"" + fd_id.ToString() + "," +"\'" + System::DateTime::Now.ToString() + "\'," +"\'" + System::DateTime::Now.ToString() + "\'," +"" + csharp_MIS_Global::LoginUser->fd_id.ToString() + "," +"" + csharp_MIS_Global::LoginUser->fd_id.ToString() + "," +"\'" + gce::CheckSQLString(fd_type) + "\'," +"\'" + gce::CheckSQLString(fd_key) + "\'," +"" + fd_page_order.ToString() + "," +"\'" + gce::CheckSQLString(fd_image_ext) + "\'," +"\'" + gce::CheckSQLString(fd_nchar_ext1) + "\'," +"\'" + gce::CheckSQLString(fd_nchar_ext2) + "\'," +"\'" + gce::CheckSQLString(fd_ntext_ext1) + "\'," +"\'" + gce::CheckSQLString(fd_ntext_ext2) + "\'," +"" + fd_integer_ext1.ToString() + "," +"" + fd_integer_ext2.ToString() + "," +"" + fd_float_ext1.ToString() + "," +"" + fd_float_ext2.ToString() + "," +"\'" + gce::CheckSQLString(fd_desc) + "\')";break;}case csharp_Record_Operate::R_UPDATE:{ssql = "UPDATE " + m_sTableName + " SET ";ssql += "fd_id=" + fd_id.ToString() + ",";ssql += "fd_modify_time=\'" + System::DateTime::Now.ToString() + "\',";ssql += "fd_modify_author_id=" + csharp_MIS_Global::LoginUser->fd_id.ToString() + ",";ssql += "fd_type=\'" + gce::CheckSQLString(fd_type) + "\',";ssql += "fd_key=\'" + gce::CheckSQLString(fd_key) + "\',";ssql += "fd_page_order=" + fd_page_order.ToString() + ",";ssql += "fd_image_ext=\'" + gce::CheckSQLString(fd_image_ext) + "\',";ssql += "fd_nchar_ext1=\'" + gce::CheckSQLString(fd_nchar_ext1) + "\',";ssql += "fd_nchar_ext2=\'" + gce::CheckSQLString(fd_nchar_ext2) + "\',";ssql += "fd_ntext_ext1=\'" + gce::CheckSQLString(fd_ntext_ext1) + "\',";ssql += "fd_ntext_ext2=\'" + gce::CheckSQLString(fd_ntext_ext2) + "\',";ssql += "fd_integer_ext1=" + fd_integer_ext1.ToString() + ",";ssql += "fd_integer_ext2=" + fd_integer_ext2.ToString() + ",";ssql += "fd_float_ext1=" + fd_float_ext1.ToString() + ",";ssql += "fd_float_ext2=" + fd_float_ext2.ToString() + ",";ssql += "fd_desc=\'" + gce::CheckSQLString(fd_desc) + "\'";ssql += "  WHERE fd_id=" + fd_id.ToString();break;}default:return csharp_mis_table::get_Record_Operate_SQL(ro);}return ssql;
}bool csharp_mis_image::readAll(DataTable^ dt)
{if (dt->Rows->Count > 0){fd_id = (int)dt->Rows[0]["fd_id"];fd_create_time = Convert::ToDateTime(dt->Rows[0]["fd_create_time"]);fd_modify_time = Convert::ToDateTime(dt->Rows[0]["fd_modify_time"]);fd_create_author_id = (int)dt->Rows[0]["fd_create_author_id"];fd_modify_author_id = (int)dt->Rows[0]["fd_modify_author_id"];fd_type = dt->Rows[0]["fd_type"]->ToString();fd_key = dt->Rows[0]["fd_key"]->ToString();fd_page_order = (int)dt->Rows[0]["fd_page_order"];fd_image_ext = dt->Rows[0]["fd_image_ext"]->ToString();fd_nchar_ext1 = dt->Rows[0]["fd_nchar_ext1"]->ToString();fd_nchar_ext2 = dt->Rows[0]["fd_nchar_ext2"]->ToString();fd_ntext_ext1 = dt->Rows[0]["fd_ntext_ext1"]->ToString();fd_ntext_ext2 = dt->Rows[0]["fd_ntext_ext2"]->ToString();fd_integer_ext1 = (int)dt->Rows[0]["fd_integer_ext1"];fd_integer_ext2 = (int)dt->Rows[0]["fd_integer_ext2"];fd_float_ext1 = Convert::ToSingle(dt->Rows[0]["fd_float_ext1"]);fd_float_ext2 = Convert::ToSingle(dt->Rows[0]["fd_float_ext2"]);fd_desc = dt->Rows[0]["fd_desc"]->ToString();return true;}return false;
}void csharp_mis_image::readRowAll(DataRow dr)
{fd_id = (int)dr["fd_id"];fd_create_time = Convert::ToDateTime(dr["fd_create_time"]);fd_modify_time = Convert::ToDateTime(dr["fd_modify_time"]);fd_create_author_id = (int)dr["fd_create_author_id"];fd_modify_author_id = (int)dr["fd_modify_author_id"];fd_type = dr["fd_type"]->ToString();fd_key = dr["fd_key"]->ToString();fd_page_order = (int)dr["fd_page_order"];fd_image_ext = dr["fd_image_ext"]->ToString();fd_nchar_ext1 = dr["fd_nchar_ext1"]->ToString();fd_nchar_ext2 = dr["fd_nchar_ext2"]->ToString();fd_ntext_ext1 = dr["fd_ntext_ext1"]->ToString();fd_ntext_ext2 = dr["fd_ntext_ext2"]->ToString();fd_integer_ext1 = (int)dr["fd_integer_ext1"];fd_integer_ext2 = (int)dr["fd_integer_ext2"];fd_float_ext1 = Convert::ToSingle(dr["fd_float_ext1"]);fd_float_ext2 = Convert::ToSingle(dr["fd_float_ext2"]);fd_desc = dr["fd_desc"]->ToString();
}/// <summary>
/// 
/// </summary>
/// <param name="ro"></param>
/// <returns></returns>
/// 创建时间: 2024-08-27  最后一次修改时间:2024-08-27   
String^ csharp_mis_identity::get_Record_Operate_SQL(csharp_Record_Operate ro)
{String^ ssql;switch (ro){case csharp_Record_Operate::R_DELETE:{ssql = "DELETE FROM " + m_sTableName + " WHERE fd_id = " + fd_id.ToString();break;}case csharp_Record_Operate::R_INSERT:{fd_id = GetNewID();ssql = "INSERT INTO " + m_sTableName +"(fd_id,fd_create_time,fd_modify_time,fd_create_author_id,fd_modify_author_id," +"fd_name_cn,fd_name_en,fd_desc) VALUES(" +"" + fd_id.ToString() + "," +"\'" + DateTime::Now.ToShortDateString() + "\'," +"\'" + DateTime::Now.ToShortDateString() + "\'," +"" + GetLoginID().ToString() + "," +"" + GetLoginID().ToString() + "," +"\'" + gce::CheckSQLString(fd_name_cn) + "\'," +"\'" + gce::CheckSQLString(fd_name_en) + "\'," +"\'" + gce::CheckSQLString(fd_desc) + "\'" + ")";break;}case csharp_Record_Operate::R_UPDATE:{ssql = "UPDATE [" + m_sTableName + "] SET " +//"fd_create_time=\'" + fd_create_time.ToString() + "\'," +"[fd_create_author_id] =" + GetLoginID().ToString() + "," +"[fd_modify_time]=\'" + DateTime::Now.ToShortDateString() + "\'," +"[fd_name_cn]=\'" + gce::CheckSQLString(fd_name_cn) + "\'," +"[fd_name_en]=\'" + gce::CheckSQLString(fd_name_en) + "\'," +"[fd_desc]=\'" + gce::CheckSQLString(fd_desc) + "\' WHERE fd_id =" + fd_id.ToString();break;}case csharp_Record_Operate::R_VIEW:{if (gce::languageID == 2){ssql = "SELECT fd_id AS 索引,fd_create_time AS 创建时间,fd_modify_time AS 修改时间," +"fd_name_cn AS 文件名, fd_name_en AS 英文名, fd_desc AS  描述 FROM " + m_sTableName;}else{ssql = "SELECT fd_id AS [Index], fd_create_time AS [Create time],fd_modify_time AS [Modify time]," +"fd_name_cn AS [China], fd_name_en AS [English], fd_desc AS [Description] FROM " + m_sTableName;}break;}default:ssql = "";break;}return ssql;
}bool csharp_mis_identity::readRowAll(DataRow^ dr)
{fd_id = (int)dr["fd_id"];fd_create_time = Convert::ToDateTime(dr["fd_create_time"]);fd_modify_time = Convert::ToDateTime(dr["fd_modify_time"]);fd_create_author_id = (int)dr["fd_create_author_id"]; fd_modify_author_id = (int)dr["fd_modify_author_id"];fd_name_cn = dr["fd_name_cn"]->ToString();fd_name_cn = dr["fd_name_cn"]->ToString();fd_desc = dr["fd_desc"]->ToString();return true;    
}_LF_END_

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用shell脚本,批量备份MySQL中所有数据库,并批量还原
  • 常用的运维工具:文件传输工具详解(SCP, SFTP)
  • GitLab CI_CD 从入门到实战笔记
  • 预训练发展
  • Python 中错误 CSV.Error: Line Contains Null Byte
  • Flink+Spark相关记录
  • RepLKNet架构详解
  • Tensorflow 兼容性测试-opencloudos
  • java中init()函数(JAVA基础)
  • Node.js的学习2——内置模块(一)
  • 【Vue】- Vue应用
  • Java重修笔记 第五十七天 坦克大战(七)多线程基础 - 编程练习
  • Sitecore 定时任务使用介绍
  • udp聊天室
  • 深度学习的关键数据结构——张量解释
  • iOS 系统授权开发
  • Javascript 原型链
  • JS数组方法汇总
  • JS字符串转数字方法总结
  • leetcode讲解--894. All Possible Full Binary Trees
  • maya建模与骨骼动画快速实现人工鱼
  • Mysql优化
  • node 版本过低
  • Nodejs和JavaWeb协助开发
  • rabbitmq延迟消息示例
  • Redux 中间件分析
  • webpack入门学习手记(二)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 分布式熔断降级平台aegis
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前嗅ForeSpider采集配置界面介绍
  • 通过几道题目学习二叉搜索树
  • Nginx实现动静分离
  • NLPIR智能语义技术让大数据挖掘更简单
  • 关于Android全面屏虚拟导航栏的适配总结
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​iOS安全加固方法及实现
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #1015 : KMP算法
  • #14vue3生成表单并跳转到外部地址的方式
  • (1)Hilt的基本概念和使用
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (CPU/GPU)粒子继承贴图颜色发射
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (接口自动化)Python3操作MySQL数据库
  • .NET CLR基本术语
  • .net core使用ef 6
  • .net 托管代码与非托管代码
  • .net6使用Sejil可视化日志
  • @RequestMapping-占位符映射
  • @staticmethod和@classmethod的作用与区别
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [20170713] 无法访问SQL Server