📄 setclause.cs
字号:
using System;
using System.Text;
using Lephone.Util.Text;
using Lephone.Data.Common;
using Lephone.Data.Dialect;
using Lephone.Data.SqlEntry;
namespace Lephone.Data.Builder.Clause
{
[Serializable]
public class SetClause : KeyValueCollection, IClause
{
public SetClause() {}
public string ToSqlText(DataParamterCollection dpc, DbDialect dd)
{
StringBuilder sb = new StringBuilder("Set ");
foreach ( KeyValue kv in this )
{
string dpStr;
if (kv.ValueType == typeof(AutoValue))
{
switch ((AutoValue)kv.Value)
{
case AutoValue.DbNow:
dpStr = dd.DbNowString;
break;
case AutoValue.Count:
dpStr = dd.QuoteForColumnName(kv.Key) + "+1";
break;
default:
throw new NotImplementedException();
}
}
else
{
if (DataSetting.UsingParamter)
{
dpStr = string.Format(dd.ParamterPrefix + "{0}_{1}", DataParamter.LegalKey(kv.Key), dpc.Count);
DataParamter dp = new DataParamter(dpStr, kv.Value, kv.ValueType);
dpc.Add(dp);
}
else
{
dpStr = DataTypeParser.ParseToString(kv.Value, dd);
}
}
sb.Append( dd.QuoteForColumnName(kv.Key) );
sb.Append( "=" );
sb.Append( dpStr );
sb.Append(",");
}
try
{
return StringHelper.GetStringLeft(sb.ToString());
}
catch ( ArgumentOutOfRangeException )
{
return "";
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -