public class SetDAL
{
private TextSelection ts;
private TableFrame tableframe;
private string namespacestr;
private string folder;
private string dalname;
private string modelname;
public SetDAL(TextSelection _ts, TableFrame _tableframe, string _namespacestr, string _dalname, string _modelname, string _folder)
{
this.ts = _ts;
this.tableframe = _tableframe;
this.namespacestr = _namespacestr;
this.modelname = _modelname;
this.dalname = _dalname;
this.folder = _folder;
}
public void SetText()
{
ts.SelectAll();
ts.Text = GetText().ToString();
}
private StringBuilder GetText()
{
List<TableColumn> tempTableItems = tableframe.SplitedItems(tableframe.TableItems);
StringBuilder _str = new StringBuilder();
_str.Append("/*using System;").Append("\n");
_str.Append("using System.Collections.Generic;").Append("\n");
_str.Append("using System.Data;").Append("\n");
_str.Append("using System.Text;").Append("\n");
_str.Append("using System.Collections;").Append("\n");
_str.Append("using System.Data.SqlClient;").Append("\n").Append("\n");
_str.Append("namespace ").Append(namespacestr).Append(".").Append(dalname).Append(".").Append(folder).Append("\n");
_str.Append("{").Append("\n");
_str.Append("public class ").Append(tableframe.TableName).Append("\n");
_str.Append("{").Append("\n");
tools.SetNoteStr(_str, "判断该记录是否已经存在");
_str.Append("public bool Exists(").Append(tools.Get
PrimaryKeysStr(tableframe.KeysItems)).Append(")").Append("\n");
_str.Append("{").Append("\n");
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"select count(1) from ").Append(tableframe.TableName).Append(" where ").Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems)).Append("\");").Append("\n");
_str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, true)).Append(";\n");
_str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems)).Append("\n");
_str.Append("return DbHelperSQL.Exists(strSql.ToString(), parameters);").Append("\n");
_str.Append("}").Append("\n").Append("\n");
tools.SetNoteStr(_str, "增加一条数据");
_str.Append("public DictionaryEntry Add_DictionaryEntry(").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" model)").Append("\n");
_str.Append("{").Append("\n");
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"insert into ").Append(tableframe.TableName).Append("(\");").Append("\n");
_str.Append("strSql.Append(\"");
StringBuilder colstr = new StringBuilder();
foreach (TableColumn col in tempTableItems)
{
colstr.Append(",").Append(col.ColumnName);
}
_str.Append(colstr.ToString().
substring(1));
_str.Append("\");").Append("\n");
_str.Append("strSql.Append(\") values (\")").Append(";\n");
_str.Append("strSql.Append(\"");
colstr = new StringBuilder();
foreach (TableColumn col in tempTableItems)
{
colstr.Append(",@").Append(col.ColumnName);
}
_str.Append(colstr.ToString().substring(1));
_str.Append(")\");").Append("\n");
_str.Append(tools.GetSqlParameterStr(tempTableItems, true)).Append(";\n");
_str.Append(tools.GetSqlParameterValueStr(tempTableItems)).Append("\n");
_str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
_str.Append("}").Append("\n").Append("\n");
tools.SetNoteStr(_str, "更新一条数据");
_str.Append("public DictionaryEntry Update_DictionaryEntry(").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" model)").Append("\n");
_str.Append("{").Append("\n");
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"Update ").Append(tableframe.TableName).Append(" set \");").Append("\n");
for (int i = 0; i < tempTableItems.Count; i++)
{
if (tableframe.KeysItems.Find(delegate(TableColumn p) { return p.ColumnName == tempTableItems[i].ColumnName; }) == null)
{
_str.Append("strSql.Append(\"").Append(tempTableItems[i].ColumnName).Append("=@").Append(tempTableItems[i].ColumnName).Append("").Append((i == (tempTableItems.Count - 1)) ? string.Empty : ",").Append("\")").Append(";\n");
}
}
_str.Append("strSql.Append(\" where ");
_str.Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems));
_str.Append("\");").Append("\n");
_str.Append(tools.GetSqlParameterStr(tempTableItems, true)).Append(";\n");
_str.Append(tools.GetSqlParameterValueStr(tempTableItems)).Append("\n");
_str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
_str.Append("}").Append("\n").Append("\n");
tools.SetNoteStr(_str, "更新一条数据状态");
_str.Append("public DictionaryEntry ChangeState_DictionaryEntry(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(", string State, string Auditer, DateTime AuditDate)").Append("\n");
_str.Append("{").Append("\n");
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"Update " + tableframe.TableName + " set State=@State,Auditer=@Auditer,AuditDate=@AuditDate where ").Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems)).Append("\");").Append("\n");
_str.Append("SqlParameter[] parameters = {").Append("\n");
_str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, false));
_str.Append("\t\t\t\t\t\t\t\tnew SqlParameter(\"@State\", SqlDbType.VarChar,50),").Append("\n");
_str.Append("\t\t\t\t\t\t\t\tnew SqlParameter(\"@Auditer\", SqlDbType.VarChar,50),").Append("\n");
_str.Append("\t\t\t\t\t\t\t\tnew SqlParameter(\"@AuditDate\", SqlDbType.DateTime,8),").Append("\n");
_str.Append("\t\t\t\t\t\t\t\t\t\t};").Append("\n");
_str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems));
_str.Append("parameters[").Append(tableframe.KeysItems.Count).Append("].Value = State;").Append("\n");
_str.Append("parameters[").Append(tableframe.KeysItems.Count + 1).Append("].Value = Auditer;").Append("\n");
_str.Append("parameters[").Append(tableframe.KeysItems.Count + 2).Append("].Value = AuditDate;").Append("\n").Append("\n");
_str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
_str.Append("}").Append("\n").Append("\n");
tools.SetNoteStr(_str, "删除一条数据");
_str.Append("public DictionaryEntry Delete_DictionaryEntry(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(")").Append("\n");
_str.Append("{").Append("\n");
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"Delete from ").Append(tableframe.TableName).Append("\");").Append("\n");
_str.Append("strSql.Append(\" where ");
_str.Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems));
_str.Append("\");").Append("\n");
_str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, true)).Append(";\n");
_str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems)).Append("\n");
_str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
_str.Append("}").Append("\n").Append("\n");
tools.SetNoteStr(_str, "获得数据列表");
_str.Append("public DataSet GetList(string strWhere)").Append("\n");
_str.Append("{").Append("\n");
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"select * FROM ").Append(tableframe.TableName).Append("\");").Append("\n");
_str.Append("if (strWhere.Trim().Length != 0)").Append("\n");
_str.Append("{").Append("\n");
_str.Append("strSql.Append(\" where \" + strWhere);").Append("\n");
_str.Append("}").Append("\n").Append("\n");
_str.Append("return DbHelperSQL.Query(strSql.ToString());").Append("\n");
_str.Append("}").Append("\n").Append("\n");
tools.SetNoteStr(_str, "得到一个对象实体");
_str.Append("public ").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" GetModel(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(")").Append("\n");
_str.Append("{").Append("\n"); ;
_str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
_str.Append("strSql.Append(\"select top 1 * from " + tableframe.ViewName + " \");").Append("\n");
_str.Append("strSql.Append(\" where ").Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems)).Append("\");").Append("\n");
_str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, true)).Append(";\n");
_str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems)).Append("\n");
_str.Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" model = new ").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append("();").Append("\n");
_str.Append("DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);").Append("\n");
_str.Append("if (ds.Tables[0].Rows.Count > 0)").Append("\n");
_str.Append("{");
string s = "";
foreach (TableColumn col in tableframe.ViewItems)
{
switch (col.ColumnType.ToLower())
{
case "nchar":
case "ntext":
case "varchar":
{
_str.Append("model.").Append(col.ColumnName).Append(" = ds.Tables[0].Rows[0][\"").Append(col.ColumnName).Append("\"].ToString();").Append("\n");
break;
}
case "tinyint":
case "int":
{
s = "model." + col.ColumnName + " =int.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
ToConvert(_str, col.ColumnName, s);
break;
}
case "money":
case "decimal":
case "numeric":
{
s = "model." + col.ColumnName + " =decimal.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
ToConvert(_str, col.ColumnName, s);
break;
}
case "float":
{
s = "model." + col.ColumnName + " =float.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
ToConvert(_str, col.ColumnName, s);
break;
}
case "datetime":
{
s = "model." + col.ColumnName + " =DateTime.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
ToConvert(_str, col.ColumnName, s);
break;
}
case "bit":
{
_str.Append("if (ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString() != \"\")").Append("\n");
_str.Append("{").Append("\n");
_str.Append("if ((ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString() == \"1\") || (ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString().ToLower() == \"true\"))").Append("\n");
_str.Append("{").Append("\n");
_str.Append("model." + col.ColumnName + " = true;").Append("\n");
_str.Append("}").Append("\n");
_str.Append("else").Append("\n");
_str.Append("{").Append("\n");
_str.Append("model." + col.ColumnName + " = false;").Append("\n");
_str.Append("}").Append("\n");
_str.Append("}").Append("\n");
break;
}
}
}
_str.Append("return model;").Append("\n");
_str.Append("}").Append("\n");
_str.Append("else").Append("\n");
_str.Append("{").Append("\n");
_str.Append("return null;").Append("\n");
_str.Append("}").Append("\n");
_str.Append("}").Append("\n");
_str.Append("}").Append("\n");
_str.Append("}").Append("\n");
return _str;
}
private void ToConvert(StringBuilder str, string columnname, string lenstr)
{
str.Append("if (ds.Tables[0].Rows[0][\"" + columnname + "\"].ToString() != \"\")").Append("\n");
str.Append("{").Append("\n");
str.Append(lenstr).Append("\n");
str.Append("}").Append("\n");
}
}