📄 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 modelspace,
string dalpath, string idalpath, string iclass)
{
dbobj = idbobj;
_dbname = dbname;
_tablename = tablename;
_modelname = modelname;
_namespace = namepace;
_folder = folder;
_dbhelperName = dbherlpername;
_modelpath = modelpath;
_dalpath = dalpath;
_idalpath = idalpath;
_iclass = iclass;
Fieldlist = fieldlist;
Keys = keys;
}
#endregion
#region 数据层(整个类)
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 数据层(方法)
/// <summary>
/// 得到某字段最大值的方法代码(只有主键是int型的情况下生成)
/// </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.AppendLine("");
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 " + LTP.CodeHelper.CodeCommon.GetWhereExpression(Keys) + "\");");
strclass.AppendSpaceLine(3, "return " + DbHelperName + ".Exists(strSql.ToString());");
strclass.AppendSpace(2, "}");
}
return strclass.ToString();
}
/// <summary>
/// 得到Add()的代码
/// </summary>
public string CreatAdd()
{
if (ModelSpace == "")
{
//ModelSpace = "ModelClassName"; ;
}
StringPlus strclass = 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, "StringBuilder strSql1=new StringBuilder();");
strclass.AppendSpaceLine(3, "StringBuilder strSql2=new StringBuilder();");
foreach (ColumnInfo field in Fieldlist)
{
string columnName = field.ColumnName;
string columnType = field.TypeName;
bool IsIdentity = field.IsIdentity;
if (IsIdentity)
{
continue;
}
strclass.AppendSpaceLine(3, "if (model." + columnName + " != null)");
strclass.AppendSpaceLine(3,"{");
strclass.AppendSpaceLine(4,"strSql1.Append(\"" + columnName + ",\");");
if ((dbobj.DbType == "Oracle") && (columnType.ToLower() == "date" || columnType.ToLower() == "datetime"))
{
strclass.AppendSpaceLine(4, "strSql2.Append(\"to_date('\" + model." + columnName + ".ToString() + \"','YYYY-MM-DD HH24:MI:SS'),\");");
}
else
if (CodeCommon.IsAddMark(columnType.Trim()))
{
strclass.AppendSpaceLine(4, "strSql2.Append(\"'\"+model." + columnName + "+\"',\");");
}
else
{
strclass.AppendSpaceLine(4, "strSql2.Append(\"\"+model." + columnName + "+\",\");");
}
strclass.AppendSpaceLine(3,"}");
}
strclass.AppendSpaceLine(3,"strSql.Append(\"insert into "+TableName+"(\");" );
strclass.AppendSpaceLine(3, "strSql.Append(strSql1.ToString().Remove(strSql1.Length - 1));");
strclass.AppendSpaceLine(3, "strSql.Append(\")\");");
strclass.AppendSpaceLine(3, "strSql.Append(\" values (\");" );
strclass.AppendSpaceLine(3, "strSql.Append(strSql2.ToString().Remove(strSql2.Length - 1));");
strclass.AppendSpaceLine(3, "strSql.Append(\")\");");
//返回自动增长列值
if ((dbobj.DbType == "SQL2000" || dbobj.DbType == "SQL2005") && (IsHasIdentity))
{
strclass.AppendSpaceLine(3, "strSql.Append(\";select @@IDENTITY\");" );
strclass.AppendSpaceLine(3, "object obj = " + DbHelperName + ".GetSingle(strSql.ToString());");
strclass.AppendSpaceLine(3, "if (obj == null)" );
strclass.AppendSpaceLine(3, "{" );
strclass.AppendSpaceLine(4, "return 1;" );
strclass.AppendSpaceLine(3, "}" );
strclass.AppendSpaceLine(3, "else" );
strclass.AppendSpaceLine(3, "{" );
strclass.AppendSpaceLine(4, "return Convert.ToInt32(obj);" );
strclass.AppendSpaceLine(3, "}" );
}
else
{
strclass.AppendSpaceLine(3,"" + DbHelperName + ".ExecuteSql(strSql.ToString());");
}
strclass.AppendSpace(2, "}");
return strclass.ToString();
}
/// <summary>
/// 得到Update()的代码
/// </summary>
/// <param name="DbName"></param>
/// <param name="_tablename"></param>
/// <param name="_key"></param>
/// <param name="ModelName"></param>
/// <returns></returns>
public string CreatUpdate()
{
if (ModelSpace == "")
{
//ModelSpace = "ModelClassName"; ;
}
StringPlus strclass = new StringPlus();
strclass.AppendLine("");
strclass.AppendSpaceLine(2, "/// <summary>" );
strclass.AppendSpaceLine(2, "/// 更新一条数据" );
strclass.AppendSpaceLine(2, "/// </summary>" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -