📄 builderdal.cs
字号:
{
dbobj = idbobj;
}
public BuilderDAL(IDbObject idbobj, string dbname, string tablename, string modelname, string dalName,
List<ColumnInfo> fieldlist, List<ColumnInfo> keys, string namepace,
string folder, string dbherlpername, string modelpath,
string dalpath, string idalpath, string iclass)
{
dbobj = idbobj;
_dbname = dbname;
_tablename = tablename;
_modelname = modelname;
_dalname = dalName;
_namespace = namepace;
_folder = folder;
_dbhelperName = dbherlpername;
_modelpath = modelpath;
_dalpath = dalpath;
_idalpath = idalpath;
_iclass = iclass;
Fieldlist = fieldlist;
Keys = keys;
foreach (ColumnInfo key in _keys)
{
_key = key.ColumnName;
_keyType = key.TypeName;
if (key.IsIdentity)
{
_key = key.ColumnName;
_keyType = CodeCommon.DbTypeToCS(key.TypeName);
break;
}
}
}
#endregion
#region 根据列信息 得到参数的列表
/// <summary>
/// 得到Where条件语句 - Parameter方式 (例如:用于Exists Delete GetModel 的where)
/// </summary>
/// <param name="keys"></param>
/// <returns></returns>
public string GetWhereExpression(List<ColumnInfo> keys)
{
StringPlus strclass = new StringPlus();
foreach (ColumnInfo key in keys)
{
strclass.Append(key.ColumnName + "=" + preParameter + key.ColumnName + " and ");
}
strclass.DelLastChar("and");
return strclass.Value;
}
/// <summary>
/// 生成sql语句中的参数列表(例如:用于Add Exists Update Delete GetModel 的参数传入)
/// </summary>
/// <param name="keys"></param>
/// <returns></returns>
public string GetPreParameter(List<ColumnInfo> keys)
{
StringPlus strclass = new StringPlus();
StringPlus strclass2 = new StringPlus();
strclass.AppendSpaceLine(3, "" + DbParaHead + "Parameter[] parameters = {");
int n = 0;
foreach (ColumnInfo key in keys)
{
strclass.AppendSpaceLine(5, "new " + DbParaHead + "Parameter(\"" + preParameter + "" + key.ColumnName + "\", " + DbParaDbType + "." + CodeCommon.DbTypeLength(dbobj.DbType, key.TypeName, "") + "),");
strclass2.AppendSpaceLine(3, "parameters[" + n.ToString() + "].Value = " + key.ColumnName + ";");
n++;
}
strclass.DelLastComma();
strclass.AppendLine("};");
strclass.Append(strclass2.Value);
return strclass.Value;
}
#endregion
#region 数据层(整个类)
/// <summary>
/// 得到整个类的代码
/// </summary>
public string GetDALCode(bool Maxid, bool Exists, bool Add, bool Update, bool Delete, bool GetModel, bool List)
{
StringPlus strclass = new StringPlus();
strclass.AppendLine("using System;");
strclass.AppendLine("using System.Data;");
strclass.AppendLine("using System.Text;");
switch (dbobj.DbType)
{
case "SQL2005":
strclass.AppendLine("using System.Data.SqlClient;");
break;
case "SQL2000":
strclass.AppendLine("using System.Data.SqlClient;");
break;
case "Oracle":
strclass.AppendLine("using System.Data.OracleClient;");
break;
case "MySQL":
strclass.AppendLine("using MySql.Data.MySqlClient;");
break;
case "OleDb":
strclass.AppendLine("using System.Data.OleDb;");
break;
}
if (IDALpath != "")
{
strclass.AppendLine("using " + IDALpath + ";");
}
strclass.AppendLine("using Maticsoft.DBUtility;//请先添加引用");
strclass.AppendLine("namespace " + DALpath);
strclass.AppendLine("{");
strclass.AppendSpaceLine(1, "/// <summary>");
strclass.AppendSpaceLine(1, "/// 数据访问类" + DALName + "。");
strclass.AppendSpaceLine(1, "/// </summary>");
strclass.AppendSpace(1, "public class " + DALName);
if (IClass != "")
{
strclass.Append(":" + IClass);
}
strclass.AppendLine("");
strclass.AppendSpaceLine(1, "{");
strclass.AppendSpaceLine(2, "public " + DALName + "()");
strclass.AppendSpaceLine(2, "{}");
strclass.AppendSpaceLine(2, "#region 成员方法");
#region 方法代码
if (Maxid)
{
strclass.AppendLine(CreatGetMaxID());
}
if (Exists)
{
strclass.AppendLine(CreatExists());
}
if (Add)
{
strclass.AppendLine(CreatAdd());
}
if (Update)
{
strclass.AppendLine(CreatUpdate());
}
if (Delete)
{
strclass.AppendLine(CreatDelete());
}
if (GetModel)
{
strclass.AppendLine(CreatGetModel());
}
if (List)
{
strclass.AppendLine(CreatGetList());
strclass.AppendLine(CreatGetListByPageProc());
}
#endregion
strclass.AppendSpaceLine(2, "#endregion 成员方法");
strclass.AppendSpaceLine(1, "}");
strclass.AppendLine("}");
strclass.AppendLine("");
return strclass.ToString();
}
#endregion
#region 数据层(使用Parameter实现)
/// <summary>
/// 得到最大ID的方法代码
/// </summary>
/// <param name="TabName"></param>
/// <param name="ID"></param>
/// <returns></returns>
public string CreatGetMaxID()
{
StringPlus strclass = new StringPlus();
if (_keys.Count > 0)
{
string keyname = "";
foreach (ColumnInfo obj in _keys)
{
if (CodeCommon.DbTypeToCS(obj.TypeName) == "int")
{
keyname = obj.ColumnName;
if (obj.IsPK)
{
strclass.AppendLine("");
strclass.AppendSpaceLine(2, "/// <summary>");
strclass.AppendSpaceLine(2, "/// 得到最大ID");
strclass.AppendSpaceLine(2, "/// </summary>");
strclass.AppendSpaceLine(2, "public int GetMaxId()");
strclass.AppendSpaceLine(2, "{");
strclass.AppendSpaceLine(2, "return " + DbHelperName + ".GetMaxID(\"" + keyname + "\", \"" + _tablename + "\"); ");
strclass.AppendSpaceLine(2, "}");
break;
}
}
}
}
return strclass.ToString();
}
/// <summary>
/// 得到Exists方法的代码
/// </summary>
/// <param name="_tablename"></param>
/// <param name="ID"></param>
/// <returns></returns>
public string CreatExists()
{
StringPlus strclass = new StringPlus();
if (_keys.Count > 0)
{
strclass.AppendSpaceLine(2, "/// <summary>");
strclass.AppendSpaceLine(2, "/// 是否存在该记录");
strclass.AppendSpaceLine(2, "/// </summary>");
strclass.AppendSpaceLine(2, "public bool Exists(" + LTP.CodeHelper.CodeCommon.GetInParameter(Keys) + ")");
strclass.AppendSpaceLine(2, "{");
strclass.AppendSpaceLine(3, "StringBuilder strSql=new StringBuilder();");
strclass.AppendSpaceLine(3, "strSql.Append(\"select count(1) from " + _tablename + "\");");
strclass.AppendSpaceLine(3, "strSql.Append(\" where " + GetWhereExpression(Keys) + "\");");
strclass.AppendLine(GetPreParameter(Keys));
strclass.AppendSpaceLine(3, "return " + DbHelperName + ".Exists(strSql.ToString(),parameters);");
strclass.AppendSpaceLine(2, "}");
}
return strclass.Value;
}
/// <summary>
/// 得到Add()的代码
/// </summary>
public string CreatAdd()
{
if (ModelSpace == "")
{
//ModelSpace = "ModelClassName"; ;
}
StringPlus strclass = new StringPlus();
StringPlus strclass1 = new StringPlus();
StringPlus strclass2 = new StringPlus();
StringPlus strclass3 = new StringPlus();
StringPlus strclass4 = new StringPlus();
strclass.AppendLine();
strclass.AppendSpaceLine(2, "/// <summary>");
strclass.AppendSpaceLine(2, "/// 增加一条数据");
strclass.AppendSpaceLine(2, "/// </summary>");
string strretu = "void";
if ((dbobj.DbType == "SQL2000" || dbobj.DbType == "SQL2005") && (IsHasIdentity))
{
strretu = "int";
}
//方法定义头
string strFun = CodeCommon.Space(2) + "public " + strretu + " Add(" + ModelSpace + " model)";
strclass.AppendLine(strFun);
strclass.AppendSpaceLine(2, "{");
strclass.AppendSpaceLine(3, "StringBuilder strSql=new StringBuilder();");
strclass.AppendSpaceLine(3, "strSql.Append(\"insert into " + _tablename + "(\");");
strclass1.AppendSpace(3, "strSql.Append(\"");
int n = 0;
foreach (ColumnInfo field in Fieldlist)
{
string columnName = field.ColumnName;
string columnType = field.TypeName;
bool IsIdentity = field.IsIdentity;
string Length = field.Length;
if (field.IsIdentity)
{
continue;
}
strclass3.AppendSpaceLine(5, "new " + DbParaHead + "Parameter(\"" + preParameter + columnName + "\", " + DbParaDbType + "." + CodeCommon.DbTypeLength(dbobj.DbType, columnType, Length) + "),");
strclass1.Append(columnName + ",");
strclass2.Append(preParameter + columnName + ",");
strclass4.AppendSpaceLine(3, "parameters[" + n + "].Value = model." + columnName + ";");
n++;
}
//去掉最后的逗号
strclass1.DelLastComma();
strclass2.DelLastComma();
strclass3.DelLastComma();
strclass1.AppendLine(")\");");
strclass.Append(strclass1.ToString());
strclass.AppendSpaceLine(3, "strSql.Append(\" values (\");");
strclass.AppendSpaceLine(3, "strSql.Append(\"" + strclass2.ToString() + ")\");");
if ((dbobj.DbType == "SQL2000" || dbobj.DbType == "SQL2005") && (IsHasIdentity))
{
strclass.AppendSpaceLine(3, "strSql.Append(\";select @@IDENTITY\");");
}
strclass.AppendSpaceLine(3, "" + DbParaHead + "Parameter[] parameters = {");
strclass.Append(strclass3.Value);
strclass.AppendLine("};");
strclass.AppendLine(strclass4.Value);
//重新定义方法头
if ((dbobj.DbType == "SQL2000" || dbobj.DbType == "SQL2005") && (IsHasIdentity))
{
strclass.AppendSpaceLine(3, "object obj = " + DbHelperName + ".GetSingle(strSql.ToString(),parameters);");
strclass.AppendSpaceLine(3, "if (obj == null)");
strclass.AppendSpaceLine(3, "{");
strclass.AppendSpaceLine(4, "return 1;");
strclass.AppendSpaceLine(3, "}");
strclass.AppendSpaceLine(3, "else");
strclass.AppendSpaceLine(3, "{");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -