You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

357 lines
12 KiB

3 years ago
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Gm_WMS.DataAccess.DataService;
namespace Stone.Entity
{
public class EntityBase : IDisposable
{
public string TableName = string.Empty;
public DataTable Table;
public LocalDBService db;
public string sql = string.Empty;
#region ���캯���ͳ�ʼ������
public EntityBase()
{
}
public void Init()
{
if (db == null)
{
db = new LocalDBService();
}
Table = new DataTable();
Table.TableName = TableName;
//��ʼ��ʱִ��һ��SQL���䣬���ڻ�ȡTable�Ľṹ
sql = "select top 0 * from " + TableName;
Table = db.Exec_DataSet(sql).Tables[0];
}
#endregion
#region ��ȡ����
public virtual DataSet GetData()
{
sql = "select * from " + TableName;
return db.Exec_DataSet(sql);
}
public virtual DataSet GetData(string strwhere)
{
sql = "select * from " + TableName + " where " + strwhere;
return db.Exec_DataSet(sql);
}
public virtual DataSet GetData(string fields, int ID)
{
if (fields == "") fields = "*";
sql = "select " + fields + " from " + TableName + " where id=" + ID;
return db.Exec_DataSet(sql);
}
public virtual DataSet GetData(string fields, string orderby)
{
if (fields == "") fields = "*";
sql = "select " + fields + " from " + TableName + " order by " + orderby;
return db.Exec_DataSet(sql);
}
public virtual DataSet GetData(string fields, string strwhere, string orderby)
{
if (fields == "") fields = "*";
sql = "select " + fields + " from " + TableName + " where " + strwhere + " order by " + orderby;
return db.Exec_DataSet(sql);
}
public virtual DataSet GetDataDistinct(string fields, string strwhere, string orderby)
{
sql = "select Distinct " + fields + " from " + TableName + " where " + strwhere + " order by " + orderby;
return db.Exec_DataSet(sql);
}
#endregion
#region ��ȡ��ҳ����
public virtual DataSet GetDataLimit(int rows1, int rows2)
{
// string sql = @"
// select {0} from (
// select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
// ) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4} and ({5})
// ";
string sql = @"
select {0} from (
select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4}
";
object[] obj = new object[6];
obj[0] = "*";
obj[1] = "[ID] asc";
obj[2] = TableName;
obj[3] = rows1;
obj[4] = rows2;
obj[5] = "1=1";
sql = string.Format(sql, obj);
DataSet dsData = db.Exec_DataSet(sql);
dsData.Tables[0].Columns.Remove("rows_number_9999999");
return dsData;
}
public virtual DataSet GetDataLimit(int rows1, int rows2, string strwhere)
{
// string sql = @"
// select {0} from (
// select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
// ) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4} and ({5})
// ";
string sql = @"
select {0} from (
select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4}
";
object[] obj = new object[6];
obj[0] = "*";
obj[1] = "[ID] asc";
obj[2] = TableName;
obj[3] = rows1;
obj[4] = rows2;
obj[5] = strwhere;
sql = string.Format(sql, obj);
DataSet dsData = db.Exec_DataSet(sql);
dsData.Tables[0].Columns.Remove("rows_number_9999999");
return dsData;
}
public virtual DataSet GetDataLimit(int rows1, int rows2, string fields, string orderby)
{
if (fields == "") fields = "*";
// string sql = @"
// select {0} from (
// select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
// ) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4} and ({5})
// ";
string sql = @"
select {0} from (
select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4}
";
object[] obj = new object[6];
obj[0] = fields;
obj[1] = orderby;
obj[2] = TableName;
obj[3] = rows1;
obj[4] = rows2;
obj[5] = "1=1";
sql = string.Format(sql, obj);
DataSet dsData = db.Exec_DataSet(sql);
dsData.Tables[0].Columns.Remove("rows_number_9999999");
return dsData;
}
public virtual DataSet GetDataLimit(int rows1, int rows2, string fields, string strwhere, string orderby)
{
if (fields == "") fields = "*";
// string sql = @"
// select {0} from (
// select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
// ) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4} and ({5})
// ";
string sql = @"
select {0} from (
select ROW_NUMBER() over(order by {1}) as rows_number_9999999, {0} from {2} where {5}
) as query_temp_table_9999999 where rows_number_9999999 between {3} and {4}
";
object[] obj = new object[6];
obj[0] = fields;
obj[1] = orderby;
obj[2] = TableName;
obj[3] = rows1;
obj[4] = rows2;
obj[5] = strwhere;
sql = string.Format(sql, obj);
DataSet dsData = db.Exec_DataSet(sql);
dsData.Tables[0].Columns.Remove("rows_number_9999999");
return dsData;
}
#endregion
#region ��ȡ���ظ�������
public virtual DataTable GetDistinctData(string Fields)
{
string sql = "select Distinct [" + Fields + "] from " + TableName;
return db.Exec_DataSet(sql).Tables[0];
}
#endregion
#region ����ɾ����
public virtual DataRow Add(DataRow drData)
{
DataRow drResult = null;
sql = "insert into {0}({1}) values({2});select @@Identity";
string fields = "";
string values = "";
foreach (DataColumn dc in Table.Columns)
{
if (dc.ColumnName.ToUpper() != "ID")
{
if (drData[dc.ColumnName] is DBNull) continue;
fields += "[" + dc.ColumnName + "]" + ",";
if ((dc.DataType.Name == "Int32" || dc.DataType.Name == "Decimal") && drData[dc.ColumnName].ToString() == "")
{
values += "'0',";
}
else if (dc.DataType.Name == "DateTime" && drData[dc.ColumnName].ToString() == "")
{
values += "getdate(),";
}
else
{
values += "'" + drData[dc.ColumnName] + "',";
}
}
}
if (fields.Length > 1) fields = fields.Substring(0, fields.Length - 1);
if (values.Length > 1) values = values.Substring(0, values.Length - 1);
object[] o = new object[3];
o[0] = TableName;
o[1] = fields;
o[2] = values;
sql = string.Format(sql, o);
string id = db.Exec_DataSet(sql).Tables[0].Rows[0][0].ToString();
sql = "select * from " + TableName + " where id=" + id;
drResult = db.Exec_DataSet(sql).Tables[0].Rows[0];
return drResult;
}
public virtual DataRow Edit(DataRow drData)
{
DataRow drResult = null;
sql = "update {0} set {1} where id={2}";
string fields = "";
string values = "";
foreach (DataColumn dc in Table.Columns)
{
if (dc.ColumnName.ToUpper() != "ID")
{
if (drData[dc.ColumnName] is DBNull) continue;
if ((dc.DataType.Name == "Int32" || dc.DataType.Name == "Decimal") && drData[dc.ColumnName].ToString() == "")
{
values = "'0'";
}
else if (dc.DataType.Name == "DateTime" && drData[dc.ColumnName].ToString() == "")
{
values = "getdate()";
}
else
{
values = "'" + drData[dc.ColumnName] + "'";
}
fields += "[" + dc.ColumnName + "]=" + values + ",";
}
}
if (fields.Length > 1) fields = fields.Substring(0, fields.Length - 1);
object[] o = new object[3];
o[0] = TableName;
o[1] = fields;
o[2] = drData["id"];
sql = string.Format(sql, o);
db.Exec_NonQuery(sql);
string id = drData["id"].ToString();
sql = "select * from " + TableName + " where id=" + id;
drResult = db.Exec_DataSet(sql).Tables[0].Rows[0];
return drResult;
}
public virtual void Edit(string SetFields, string strWhere)
{
sql = "update {0} set {1} where {2}";
object[] o = new object[3];
o[0] = TableName;
o[1] = SetFields;
o[2] = strWhere;
sql = string.Format(sql, o);
db.Exec_NonQuery(sql);
}
public virtual void Del(DataRow drData)
{
string ID = drData["id"].ToString();
sql = "delete from " + TableName + " where ID=" + ID;
db.Exec_NonQuery(sql);
}
public virtual void Del(int ID)
{
sql = "delete from " + TableName + " where ID=" + ID;
db.Exec_NonQuery(sql);
}
public virtual void Del(string strWhere)
{
sql = "delete from " + TableName + " where " + strWhere;
db.Exec_NonQuery(sql);
}
#endregion
#region ��ȡϵͳ��ǰʱ��
public DateTime GetDateTime()
{
return Convert.ToDateTime(db.Exec_DataSet("select getdate() as d").Tables[0].Rows[0]["d"]);
}
#endregion
#region �ͷŶ���
public void Dispose()
{
if (Table != null) Table.Dispose();
}
#endregion
}
}