Delphi Prismで記述してみた。
以下ソース
- method MainForm.BuildSql(obj : System.Object) : String;
- var
- FldList : String;
- ValList : String;
- t : System.Type;
- PropArry : Array of PropertyInfo;
- pv : Object;
- begin
- //渡された型を取り出して
- t := obj.GetType();
- //プロパティの一覧を取得する
- PropArry := t.GetProperties();
- //全てのフィールド(プロパティ)を操作してInsert分を作成
- FldList := '';
- ValList := '';
- for each Prop : PropertyInfo in PropArry do
- begin
- FldList := FldList + Prop.Name + ',';
- pv := Prop.GetValue(obj, nil);
- //Value句 文字列は''で囲
- if (pv.GetType().Name = 'String') then
- begin
- ValList := ValList + ''''+ pv.ToString() + ''',';
- end
- else
- begin
- ValList := ValList + pv.ToString() + ",";
- end;
- end;
- Var Sb := new System.Text.StringBuilder();
- Sb.AppendLine('INSERT INTO ' + t.Name + '(' + FldList.Remove(FldList.Length - 1) + ')');
- Sb.AppendLine('Values (' + ValList.Remove(ValList.Length - 1) + ')');
- Result := Sb.ToString();
- end;
ちなみにC#で書くと
- private String BuildSQL(object o)
- {
- //渡された型を取り出して
- Type t = o.GetType();
- //プロパティの一覧を取得する
- System.Reflection.PropertyInfo[] PropArry = t.GetProperties();
- //全てのフィールド(プロパティ)を操作してInsert分を作成
- string FldList = "";
- string ValList = "";
- foreach (PropertyInfo Prop in PropArry)
- {
- FldList = FldList + Prop.Name + ",";
- Object pv = Prop.GetValue(o, null);
- //Value句 文字列は''で囲
- if (pv.GetType().Name == "String")
- {
- ValList = ValList + "'" + pv.ToString() + "',";
- }
- else
- {
- ValList = ValList + pv.ToString() + ",";
- }
- }
- StringBuilder Sb = new StringBuilder();
- Sb.AppendLine("INSERT INTO " + t.Name + "(" + FldList.Remove(FldList.Length - 1) + ")");
- Sb.AppendLine("Values (" + ValList.Remove(ValList.Length - 1) + ")");
- return (Sb.ToString());
- }
こんな感じかな
0 件のコメント:
コメントを投稿