<%@ Page Language="C#" %>
<script type="text/C#" runat="server">
void Page_Load(object sender, EventArgs e)
{
Dictionary<string, object> p = new Dictionary<string, object>();
p.Add("ModDate", DateTime.Now);
p.Add("PlayerName", "Darkthread");
p.Add("Score", 65535);
p.Add("Remark", null);
Response.ContentType = "text/plain";
//提醒: 裝組Script的做法可能存在SQL Injection風險
// 僅適合資料來源可被信任的場合,例如: 自其他糸統匯入
Response.Write(GenOracleInsertScript("Records", p));
Response.End();
}
//依據Dictionary<string, object>組裝ORACLE INSERT語法
public string GenOracleInsertScript(string tableName, Dictionary<string, object> p)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("INSERT INTO {0} (", tableName);
sb.Append(string.Join(",", p.Keys.ToArray()));
sb.Append(") VALUES (");
sb.Append(
string.Join(",",
p.Select(
o =>
{
object v = o.Value;
decimal d;
if (v == null) return "NULL";
string s = v.ToString();
if (v is DateTime)
return string.Format(
"TO_DATE('{0:yyyyMMddHHmmss}','YYYYMMDDHH24MISS')",
(DateTime)o.Value);
else if (decimal.TryParse(s, out d))
return s;
else
//注意: 此處使用置換單引號防禦SQL Injection
// 無法保證絕無被破解的風險
// 故本範例僅適合輸入資料來源可被信任的情境
// 若資料可能由未知的第三者提供,不建議使用組Script的方式
// 請改用Parameter、LINQ或Entity Framework方式處理
return string.Format("'{0}'", s.Replace("'", "''"));
}
).ToArray()));
sb.Append(");\r\n");
return sb.ToString();
}
</script>