2023-05-23 16:13:17 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
//using System.Data.OracleClient;
|
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Data.Common;
|
|
|
|
|
using DeiNiu.Utils;
|
|
|
|
|
|
|
|
|
|
using System.Data.OleDb;
|
|
|
|
|
|
|
|
|
|
namespace DeiNiu.Data.BaseObject
|
|
|
|
|
{
|
|
|
|
|
[Serializable]
|
|
|
|
|
public class BaseModel_Imp : BaseOperModel_Imp
|
|
|
|
|
{
|
|
|
|
|
internal string connString = "";
|
|
|
|
|
internal int operid = 0;
|
|
|
|
|
protected String _strSql = "";
|
|
|
|
|
protected int _op_flag;
|
|
|
|
|
protected int _cust_op_flag;
|
|
|
|
|
protected BaseModel modelObj;
|
|
|
|
|
protected int _rownumStart;
|
|
|
|
|
protected int _rownumEnd=100;
|
|
|
|
|
protected int _totalCount;
|
|
|
|
|
internal SqlConnection _Conn = null;
|
|
|
|
|
protected internal int Add(BaseModel obj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = obj;
|
|
|
|
|
_op_flag = (int)op_flag.add;
|
|
|
|
|
return ExecuteNoneQuery();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
protected internal int Update(BaseModel obj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = obj;
|
|
|
|
|
_op_flag = (int)op_flag.update;
|
|
|
|
|
return ExecuteNoneQuery();
|
|
|
|
|
}
|
|
|
|
|
protected internal int UpdateNoCompare(BaseModel obj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = obj;
|
|
|
|
|
_op_flag = (int)op_flag.updateAll;
|
|
|
|
|
return ExecuteNoneQuery();
|
|
|
|
|
}
|
|
|
|
|
protected internal int Delete(BaseModel obj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = obj;
|
|
|
|
|
_op_flag = (int)op_flag.delete;
|
|
|
|
|
return ExecuteNoneQuery();
|
|
|
|
|
}
|
|
|
|
|
protected internal DataSet Query(BaseModel exampleObj)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
modelObj = exampleObj;
|
|
|
|
|
_op_flag = (int)op_flag.queryExample;
|
|
|
|
|
return ExecuteDsQuery();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
protected internal DataSet QueryActived()
|
|
|
|
|
{
|
|
|
|
|
_op_flag = (int)op_flag.queryActived;
|
|
|
|
|
return ExecuteDsQuery();
|
|
|
|
|
}
|
|
|
|
|
public DataSet QueryCount()
|
|
|
|
|
{
|
|
|
|
|
_op_flag = (int)op_flag.getCount;
|
|
|
|
|
return ExecuteDsQuery();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
protected internal DataSet Query()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
_op_flag = (int)op_flag.queryAll;
|
|
|
|
|
return ExecuteDsQuery();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
protected internal DataSet CustQuery(String strSql)
|
|
|
|
|
{
|
|
|
|
|
_strSql = strSql;
|
|
|
|
|
return new Execution(_strSql).getData();
|
|
|
|
|
}
|
|
|
|
|
//protected internal DataSet CustQuery(String strSql, SqlConnection conn)
|
|
|
|
|
//{
|
|
|
|
|
// _strSql = strSql;
|
|
|
|
|
// return new Execution(_strSql, conn).getData();
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
protected internal DataSet CustQuery(BaseModel exampleObj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = exampleObj;
|
|
|
|
|
_cust_op_flag = exampleObj.custOperFlag;
|
|
|
|
|
return ExecuteDsQuery();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected internal int CustOper(BaseModel exampleObj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = exampleObj;
|
|
|
|
|
_cust_op_flag = exampleObj.custOperFlag;
|
|
|
|
|
return ExecuteNoneQuery();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//it must not be overrided
|
|
|
|
|
internal void getModel(BaseModel obj)
|
|
|
|
|
{
|
|
|
|
|
modelObj = obj;
|
|
|
|
|
if (obj.custOperFlag != 0) // customzation method
|
|
|
|
|
{
|
|
|
|
|
_cust_op_flag = obj.custOperFlag;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_op_flag = (int)op_flag.getObj; //to get the object by key word
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DataTable dt = ExecuteDsQuery().Tables[0];
|
|
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
|
|
|
{
|
|
|
|
|
getModel(obj, dr);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// Assem_Model(ExecuteRdQuery(), obj);
|
|
|
|
|
}
|
|
|
|
|
internal void getModel(BaseModel obj,DataRow dr)
|
|
|
|
|
{
|
|
|
|
|
datarowToModel(dr, obj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//to set object's attribute from ds.
|
|
|
|
|
//it must be overrided
|
|
|
|
|
protected virtual void Assem_Model(SqlDataReader reader, BaseModel obj)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
protected virtual void datarowToModel(DataRow dr, BaseModel obj) { }
|
|
|
|
|
/*
|
|
|
|
|
protected virtual void CmdPrepare( OleDbCommand SqlCmd)
|
|
|
|
|
{
|
|
|
|
|
//SqlCmd.CommandText = "insert into a values(@a)";
|
|
|
|
|
// SqlCmd.Parameters.Add("@a","a");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
protected virtual void CmdPrepare(SqlCommand sqlCmd)
|
|
|
|
|
{
|
|
|
|
|
//sqlCmd.CommandText = "insert into a values(@a)";
|
|
|
|
|
// sqlCmd.Parameters.Add("@a","a");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
private int ExecuteNoneQuery()
|
|
|
|
|
{
|
|
|
|
|
using (oledbExecution Exe = new oledbExecution())
|
|
|
|
|
{
|
|
|
|
|
CmdPrepare(Exe.OleCmd);
|
|
|
|
|
this._cust_op_flag = 0;
|
|
|
|
|
this._op_flag = 0;
|
|
|
|
|
return Exe.Execute();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private DataSet ExecuteDsQuery()
|
|
|
|
|
{
|
|
|
|
|
using (oledbExecution Exe = new oledbExecution())
|
|
|
|
|
{
|
|
|
|
|
CmdPrepare(Exe.OleCmd);
|
|
|
|
|
this._cust_op_flag = 0;
|
|
|
|
|
this._op_flag = 0;
|
|
|
|
|
return Exe.getData();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
protected int getSequence(String SequenceName)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
using (oledbExecution Exe = new oledbExecution())
|
|
|
|
|
{
|
|
|
|
|
return Exe.getNextSeqValue(SequenceName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* */
|
|
|
|
|
private int ExecuteNoneQuery()
|
|
|
|
|
{
|
|
|
|
|
using (Execution Exe = new Execution(instance))
|
|
|
|
|
{
|
|
|
|
|
CmdPrepare(Exe.SqlCmd);
|
|
|
|
|
|
|
|
|
|
if (Exe.SqlCmd.CommandText.Length == 0) return 0;
|
|
|
|
|
int returnValue = 0;
|
|
|
|
|
if (_op_flag == (int)op_flag.add) //insert, to get pk.
|
|
|
|
|
{
|
|
|
|
|
modelObj.custOperFlag = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>ѯ<EFBFBD><D1AF>־
|
|
|
|
|
|
|
|
|
|
modelObj.ID = Exe.Execute(true);
|
|
|
|
|
returnValue = modelObj.ID;
|
|
|
|
|
/*
|
|
|
|
|
Exe.Execute();
|
|
|
|
|
modelObj.ID=getPk();
|
|
|
|
|
returnValue = modelObj.ID;
|
|
|
|
|
*/
|
|
|
|
|
// getModel(modelObj);
|
|
|
|
|
}
|
|
|
|
|
else //update
|
|
|
|
|
{
|
|
|
|
|
returnValue = Exe.Execute();
|
|
|
|
|
}
|
|
|
|
|
_cust_op_flag = 0;
|
|
|
|
|
_op_flag = 0;
|
|
|
|
|
|
|
|
|
|
return returnValue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SqlDataReader ExecuteRdQuery()
|
|
|
|
|
{
|
|
|
|
|
using (Execution Exe = new Execution(instance))
|
|
|
|
|
{
|
|
|
|
|
CmdPrepare(Exe.SqlCmd);
|
|
|
|
|
_cust_op_flag = 0;
|
|
|
|
|
_op_flag = 0;
|
|
|
|
|
return Exe.GetDataReader();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private DataSet ExecuteDsQuery()
|
|
|
|
|
{
|
|
|
|
|
using (Execution Exe = new Execution(instance))
|
|
|
|
|
{
|
|
|
|
|
CmdPrepare(Exe.SqlCmd);
|
|
|
|
|
this._cust_op_flag = 0;
|
|
|
|
|
this._op_flag = 0;
|
|
|
|
|
if (Exe.SqlCmd.CommandText.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
DataSet ds = new DataSet();
|
|
|
|
|
ds.Tables.Add(new DataTable());
|
|
|
|
|
return ds;
|
|
|
|
|
}
|
|
|
|
|
return Exe.getData();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
internal int getSequence(String SequenceName)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
using (Execution Exe = new Execution(instance))
|
|
|
|
|
{
|
|
|
|
|
int seq = 0;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
seq = Exe.getNextSeqValue(SequenceName);
|
|
|
|
|
}catch(SqlException er)
|
|
|
|
|
{
|
|
|
|
|
createSeq(SequenceName);
|
|
|
|
|
seq = Exe.getNextSeqValue(SequenceName);
|
|
|
|
|
}
|
|
|
|
|
return seq ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void createSeq(string sequenceName)
|
|
|
|
|
{
|
|
|
|
|
_strSql = " CREATE SEQUENCE[dbo].[" + sequenceName + "] AS[bigint] START WITH 0 INCREMENT BY 1 MINVALUE 0 MAXVALUE 100000 CYCLE CACHE";
|
|
|
|
|
using (Execution Exe = new Execution(instance))
|
|
|
|
|
{
|
|
|
|
|
Exe.SqlCmd.CommandText= _strSql;
|
|
|
|
|
Exe.Execute();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// protected int getPk(SqlConnection conn)
|
|
|
|
|
protected int getPk()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
_op_flag = (int)op_flag.getPk;
|
|
|
|
|
string tmp = ExecuteDsQuery().Tables[0].Rows[0][0].ToString();
|
|
|
|
|
return tmp != string.Empty
|
|
|
|
|
? Convert.ToInt32(tmp)
|
|
|
|
|
: 0;
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
string tmp = CustQuery("select Scope_Identity()",conn).Tables[0].Rows[0][0].ToString();
|
|
|
|
|
return tmp != string.Empty
|
|
|
|
|
? Convert.ToInt32(tmp)
|
|
|
|
|
: 0;
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal string getDateTime()
|
|
|
|
|
{
|
|
|
|
|
using (Execution Exe = new Execution(instance))
|
|
|
|
|
{
|
|
|
|
|
return Exe.getDateTime();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected object VerifyDbnull(object obj)
|
|
|
|
|
{
|
|
|
|
|
if (obj is string)
|
|
|
|
|
{
|
|
|
|
|
return (string)obj == string.Empty ? DBNull.Value : obj;
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return obj==null? DBNull.Value : obj;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected internal int rownumStart
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
return _rownumStart;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_rownumStart = value;
|
|
|
|
|
if (_rownumStart < 0)
|
|
|
|
|
{
|
|
|
|
|
_rownumStart = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected internal int rownumEnd
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _rownumEnd;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_rownumEnd = value;
|
|
|
|
|
if (_rownumEnd <= 0)
|
|
|
|
|
{
|
|
|
|
|
_rownumEnd = WmsConstants.PAGER_SIZE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// protected enumDbInstance _di = enumDbInstance.platForm;
|
|
|
|
|
|
|
|
|
|
protected virtual enumDbInstance instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return enumDbInstance.platForm;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|