рдбреЗрд▓реНрдлреА рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдЖрд░рдПрдо рд▓рд┐рдЦрдирд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдбреЙрдХреНрдЯреНрд░рд┐рди рдФрд░ рдЬрд╛рд╡рд╛ рдИрдИ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдЖрд░рдЯреАрдЯреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрд▓реНрдлреА рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдПрдо рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред

рдХреНрдпреЛрдВ?


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдбреЗрд▓реНрдлреА 7 рдкрд░ рдПрдХ рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрд░реЗ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рддрд╣рдд рдЧрд┐рд░ рдЧрдИ, рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдмреЗрд╕ 2009 рдХреЗ рддрд╣рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдордирднрд╛рд╡рди рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдм рддрдХ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдирд╛рдирд╛, рд╣рдЯрд╛рдирд╛ - рдпрд╣ рд╕рдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд▓рд╛рдЗрдиреЗрдВ рд▓реЗ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ (рдЙрджреНрдзрд╛рд░ рдПрдХ рдИрдорд╛рдирджрд╛рд░ рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ рд╣реИ рдЬрд┐рд╕рдиреЗ рдШрдбрд╝реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЗрд░реЗ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджрд┐рдП)ред рдкреБрд░рд╛рдиреА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореБрдЭреЗ рд╕реМрдВрдкреА рдЧрдИ рдереА, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рд╣реИред

рдореБрдЭреЗ рдПрдорд╡реАрд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбрд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╡рд┐рддреНрд░рддрд╛ рдХреЗ рд▓рд┐рдП - рдореИрдВ рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рд╛рдкреНрдд / рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдУрдЖрд░рдПрдо рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ред рдореБрдЭреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд╕рдВрдж рдЖрдпрд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рдерд╛ред
рдЙрд╕реА рдХреНрд╖рдг, рдореИрдВ рдбреЗрд▓реНрдлреА 7 рдореЗрдВ рдбреЙрдХреНрдЯреНрд░рд┐рди рдХреЗ рд╕рдорд╛рди рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреМрдбрд╝рд╛ рдпрд╛ рд╢рд╛рдпрдж рдЯреЗрдмрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдВрдЯрд┐рдЯреА / рдореБрдЦреМрдЯрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЬрдирд░реЗрдЯрд░ ... рди рддреЛ рдПрдХ рдФрд░ рди рд╣реА рдЕрдиреНрдпред рд▓реЗрдХрд┐рди рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдХрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП DORM ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП!

рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ DORM рдпрд╛ tiOPF рдХреА рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреА рд╕рдордЭ рдХреЗ рд╕рд╛рде рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрд╕рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдЗрд╕ рдлрд┐рд╕рд▓рди рдврд▓рд╛рди рдХреЛ рд▓рд┐рдпрд╛ рдФрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдкрд╣реБрдВрдЪ рдЧрдпрд╛ ...

рд╕реЛрдЪ


рдУрдЖрд░рдПрдо рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рдорд╛рдирддрд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЧрд░реНрджрди рдореЗрдВ рджрд░реНрдж рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рдЬрд╛рд╡рд╛ рдореЗрдВ, рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдЖрдк рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рд╡рд░реНрдЧреЛрдВ рдФрд░ facades рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рдХреНрд╡реЗрд░реА рдкрд╛рда рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЗ рдореБрдЦреНрдп рдХреЛрдб рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИред рдПрдХ рд╣реА рд░реВрдк рдореЗрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдХреНрдпреВрдЯреА (рдпрджрд┐ рдореЗрдореЛрд░реА рдореБрдЭреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ) рдореЗрдВ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕рдорд╛рди рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдкрд┐рдВрдЧ рдФрд░ рдЖрдИрдбреАрдИ рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рдХрдард┐рдирд╛рдИ рдереА? рдХрд╛рд░реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдЙрд╕реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рд░рд┐рд╢реНрддреЛрдВ рдХреЛ рдкрдврд╝реЗрдВ (рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛), рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рднреА рд░рд┐рд╢реНрддреЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдкреАрдврд╝реА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ - рдЗрдХрд╛рдИ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рднрдВрдбрд╛рд░ рд╣реЛрдирд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ, рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЕрдиреБрднрд╛рдЧ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд░ рдФрд░ рдЧреЗрдЯрд░реНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд╛рд░реНрдп рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рд╕рдВрд╕реНрдерд╛ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдИрдбреАрдИ рдореБрдЦреМрдЯрд╛ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдХрд╣рддрд╛ рд╣реВрдВ, рдПрдбреЗрдкреНрдЯрд░)ред рдПрдбреЗрдкреНрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рдкрд░рдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдВрдЬреА рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдЗрдХрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗрдВ, рдЗрд╕реЗ рд╣рдЯрд╛рдПрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рд╕рд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рддрд░реАрдХреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдбреЗрд▓реНрдлреА рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдпрд╣ рдкрд╣рд▓реВ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рдЙрд╕рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрдбрд╝рд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рдХрдард┐рди рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдИ рдлрд╛рдпрджреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореИрдВ рдирдИ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд▓реНрдлреА рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╕реНрддрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдХрдард┐рди рдФрд░ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдорд╛рджрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдХрд░рдиреА рдереА, рдЙрд╕рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╕рдордп рджреЗрдирд╛ рдкрдбрд╝реЗрдЧрд╛ред

рдореИрдВ рдирд╛рдпрдХреЛрдВ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдкреАрдврд╝реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред рд╢рд╛рдпрдж рдХреЛрдИ рдЗрд╕реЗ рдХреИрд╕реНрдЯрд▓рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдИрдбреАрдИ рдореЗрдВ рднреА рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдХреЗ рдирдореВрдиреЗ, рдЕрджреНрдпрддрди, рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдПрдХ рд╡рд░реНрдЧ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрд╕ рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рдкрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ findAll рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред рдпрд╛ рдореИрдВ рдЦреЛрдЬ (5) рд▓рд┐рдЦреВрдВрдЧрд╛ рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреБрдВрдЬреА 5 рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ


рд╣рдо TUAdapter рдХреНрд▓рд╛рд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
  1. рд╡рд░реНрдЧ рдирд╛рдо рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИред
  2. рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
  3. рдлрд╝реАрд▓реНрдб рдирд╛рдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
  4. рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
  5. рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЗрдХрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
  6. рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрдХрд╛рдИ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
  7. рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрд┐рд╕реА рдирд┐рдХрд╛рдп рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
  8. рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдоред

рдореЗрд░реА рд╕реАрдорд╛рдПрдБ:
  1. рдХреЛрдИ рдкреАрдбреАрдУ - рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ - рдЗрдВрдЯрд░рдмреЗрд╕
  2. рдбреЗрд▓реНрдлреА 7 рдореЗрдВ рдЕрднреА рднреА RTTI рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред (рд░реЗрдб 2010 рдЖрд░рдЯреАрдЯреАрдЖрдИ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЖрдк рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  3. рд░рд┐рд╢реНрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рд░рд┐рд╢реНрддреЛрдВ рдФрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ) рд╕рд╛рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


0. рд╕рд╛рд░ рд╡рд░реНрдЧ TUEntity - рд╕рднреА рдЗрдХрд╛рдИ рдХрд╛ рдЬрдирдХ

TPersistent рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╣рдо RTTI рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЗрд╕рдореЗрдВ рд╣рдо рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рднреА рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдПрдбреЗрдкреНрдЯрд░ рдЗрдХрд╛рдИ рдХреЛ рдЙрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рдкреВрдЫреЗрдЧрд╛ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЙрд╕ рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рд╣реЛрдЧреА, рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди, рд╕рд╛рде рд╣реА рдЗрдХрд╛рдИ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓реЙрдЧреНрд╕ рдХреЗ рд▓рд┐рдП)ред
рдХреЛрдбред TUEntity
TUEntity = class (TPersistent) function getKey():integer; virtual; abstract; function getKeyName() : AnsiString; virtual; abstract; function toString(): AnsiString; virtual; abstract; function getTableName(): AnsiString; virtual; abstract; function getKeyGenerator():AnsiString; virtual; abstract; end; 


1. рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдмрдирд╛рдирд╛

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕рдВрд╕реНрдерд╛рдПрдВ TPersistent рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд╛рдо рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрднрд╛рд▓ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ TUAdapter.Create () рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдХреЛрдбред TUAdapter.Create
 constructor TUAdapter.Create(db : TDBase; entityName : AnsiString); begin RegisterClasses([TUObject, TUGroup, TUSource, TUFile]); self.db := db; self.entityName := 'TU' + entityName; uEntityObj := CreateEntity(); self.tblName := uEntityObj.getTableName; self.fieldsSql := getFields(); end; 


рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рд╕реНрд╡рдпрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рдореИрдВ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкрд╛рд╕ рдХрд░реВрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИ, рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд░рд╣рддрд╛ рд╣реИ - рдПрдбреЗрдкреНрдЯрд░ рдмрдирд╛рддреЗ рд╕рдордп рдкреНрд░реЗрд╖рд┐рдд
рдХреЛрдбред рдЕрдкрдиреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдЗрдХрд╛рдИ рдмрдирд╛рдирд╛
 function TUAdapter.CreateEntity(): TUEntity; begin result := TUEntity(GetClass(self.entityName).Create); end; 


2. рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╕рд╡рд╛рд▓ рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рдбреЗрд▓реНрдлреА рдХреЗ рддрд╣рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп "рд╡рд┐рд╢реЗрд╖рддрд╛" рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдХреЗрд╡рд▓ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реАрд▓реНрдбред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдореЗрдВ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдХреЛрдбред рдХреНрд▓рд╛рд╕ рдлреАрд▓реНрдб рд╣реЛ рд░рд╣реА рд╣реИ
 procedure TUAdapter.getProps(var list: TStringList); var props : PPropList; i: integer; propCount : integer; begin if (uEntityObj.ClassInfo = nil) then begin raise Exception.Create('Not able to get properties!'); end; try propCount := GetPropList(uEntityObj.ClassInfo, props); for i:=0 to propCount-1 do begin list.Add(props[i].Name); end; finally FreeMem(props); end; end; 


3. рдлрд╝реАрд▓реНрдб рдирд╛рдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк GetPropValue рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ PreferStrings рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдБрдЧрд╛ - рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ tkEnumeration рдФрд░ tkSet рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛ред рдпрджрд┐ рдпрд╣ рд╕рддреНрдп рд╣реИ, рддреЛ enum tkEnumeration рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛, рдФрд░ SetProp tkSet рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
 (Instance: TObject; const PropName: string; PreferStrings: Boolean): Variant;. 
рдХреЛрдбред GetPropValue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
 VarToStr(GetPropValue(uEntityObj, props.Strings[i], propName, true) 


4,5,6 ... рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реЗ рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдирд╛ рдмреБрд░рд╛ рд░реВрдк рд╣реИ (рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреА рдЬрдЧрд╣)ред рдФрд░ рдпрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рджреВрдБрдЧрд╛, рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЗ рдЧрдарди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ред
рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реАрдб рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдХреНрд╡реЗрд░реА рдФрд░ рд▓реЗрдирджреЗрди рдХреЛ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ TIbSQL рдореЗрдВ рд╕рднреА рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред TIbSQL.EoF рдФрд░ TIbSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдЧреЗ рдЖрдк рд╕рднреА рд░рд┐рдХреЙрд░реНрдбреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ - рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рддреЗ рд╣реБрдП, рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВред
рдХреЛрдбред TUAdapter.FindAll рд╡рд┐рдзрд┐
 function TUAdapter.FindAll(): TEntityArray; var rTr : TIBTransaction; rSQL : TIbSQL; props: TStringList; i, k: integer; rowsCount : integer; begin db.CreateReadTransaction(rTr); rSql := TIbSQL.Create(nil); props := TStringList.Create(); try rSql.Transaction := rTr; rSQL.SQL.Add('SELECT ' + fieldsSql + ' FROM '+ tblName); if not rSql.Transaction.Active then rSQL.Transaction.StartTransaction; rSQL.Prepare; rSQl.ExecQuery; rowsCount := getRowsCount(); SetLength(result, rowsCount); getProps(props); i := 0; while not rSQl.Eof do begin result[i] := CreateEntity(); for k:=0 to props.Count-1 do begin if (not VarIsNull(rSql.FieldByName(props.Strings[k]).AsVariant)) then SetPropValue(result[i], props.Strings[k], rSql.FieldByName(props.Strings[k]).AsVariant); end; inc(i); rSql.Next; end; finally props.Destroy; rTr.Destroy; rSQL.Destroy; end; end; 


рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓реВрдВрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ WIN1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Coll12 win1251 рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдбреЗрд▓реНрдлреА рдХреЗ рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рд▓реЗ рдФрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝реЗрдВ IBase.ru Rus FAQ ред рддрдм рд╡реЗ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗ рдФрд░ рдЖрдкрдХреА рдЙрдВрдЧрд▓реА рдХреЛ рд╕рднреА рдиреБрдХрд╕рд╛рдиреЛрдВ рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗред

рдореИрдВрдиреЗ рдЬреЛ рдкрдврд╝рд╛ рдЙрд╕рдХрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
  1. рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ bdeAdmin.exe рдЪрд▓рд╛рдПрдБ Borland рд╕рд╛рдЭрд╛ \ BDE \
  2. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ -> рд╕рд┐рд╕реНрдЯрдо -> Init рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдФрд░ Langdriver = Pdox Ansi Cyrrilic рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
  3. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ -> рдбреНрд░рд╛рдЗрд╡рд░ -> рдореВрд▓ рдирд┐рд╡рд╛рд╕реА, рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ Langdriver = Pdox Ansi Cyrrilic: Microsfot рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдбреНрд░рд╛рдЗрд╡рд░, рдбреЗрдЯрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ ODBC рд╕реЗ рдЗрдВрдЯрд░рдмреЗрд╕, Microsoft dBase рдбреНрд░рд╛рдЗрд╡рд░ред
  4. рд╣рдо рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рддрддреНрд╡реЛрдВ рдкрд░ рд╢реЗрд╖ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред

рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдпрд╣ рдХреНрд░рдо рдЕрдкрдбреЗрдЯ рдпрд╛ рдЗрдВрд╕рд░реНрдЯ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред (рдФрд░ рдЪрдпрди рдХреЗ рд╕рд╛рде, рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ)ред
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ:
UPDATE tablename SET field = '';
рд▓рд┐рдЦреЗрдВ:
UPDATE tablename SET field = _win1251'';
рдпрджрд┐ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ TIbSQL _win1251 рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред
 IbSQL.SQL.Add("UPDATE tablename SET field = _win1251 :field"); IbSQL.Prepare(); // <- Exception IbSQL.Params.byName('field').asString := ''; 

рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд 4 рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ _win1251 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╛рдХрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдХрдард┐рди рд░рд╛рд╕реНрддрд╛ рдЪреБрдирд╛ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдкрд░рд┐рд╕реАрдорди рдХреБрдЫ рдмреЛрдЭреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдкрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдЬрдм рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкрд╛рда рдореВрд▓реНрдп рдореЗрдВ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдпрд╛ рд▓рд╛рдЗрди рдлрд╝реАрдб рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдЗрди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдорд╛рдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреА рдереА:
рдХреЛрдбред TUAdapter.Escape ()
 function TUAdapter.StringReplaceExt(const S : string; OldPattern, NewPattern: array of string; Flags: TReplaceFlags):string; var i : integer; begin Assert(Length(OldPattern)=(Length(NewPattern))); Result:=S; for i:= Low(OldPattern) to High(OldPattern) do Result:=StringReplace(Result,OldPattern[i], NewPattern[i], Flags); end; function TUAdapter.escape(const unescaped_string : string ) : string; begin Result:=StringReplaceExt(unescaped_string, [ #39, #34, #0, #10, #13, #26], ['`','`','\0','\n','\r','\Z'] , [rfReplaceAll] ); end; 


рдкрд░рд┐рдгрд╛рдо


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдордиреЗ рдПрдирд┐рдЯрд┐рдЯреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╡рд┐рдХрд╕рд┐рдд рдХреА рд╣реИрдВ:
  1. рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
  2. рдкреНрд░рдХрд╛рд╢рд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕реНрддрдВрднреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдлрд╝реАрд▓реНрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
  3. рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓рдо рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  4. рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЦреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП (рдмреВрд▓рд┐рдпрди, TDateTime рдХреЗ рд▓рд┐рдП, рдмреВрдБрдж рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП) рдЧреЗрдЯ / рд╕реЗрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рддреЛ рдЪрд▓рд┐рдП рдмрддрд╛рддреЗ рд╣реИ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ

рд╣рдо рджреЛ рдЗрдХрд╛рдИ рд╡рд░реНрдЧ TUser рдФрд░ TPost рдмрдирд╛рддреЗ рд╣реИрдВред
рдХреЛрдбред рдЯреНрдпреВрд╕рд░ рдШреЛрд╖рдгрд╛
 TUsersArray = Array of TUser; TUser = class(TUEntity) private f_id: longint; f_name : longint; f_password : AnsiString; f_email : AnsiString; f_last_login : TDateTime; f_rate: integer; published property id: integer read f_id write f_id; property name : AnsiString read f_name write f_name ; property password : AnsiString read f_password write f_password ; property email : AnsiString read f_email write f_email ; property last_login: AnsiString read getLastLogin write setLastLogin; property rate: integer read f_rate write f_rate; public constructor Create(); procedure setParams(id, rate: longint; name, password, email: AnsiString); procedure setLastLogin(datetime: AnsiString); function getLastLogin(): AnsiString; function getKey(): integer; override; function getKeyName(): AnsiString; override; function toString(): AnsiString; override; function getTableName(): AnsiString; override; function getKeyGenerator():AnsiString; override; end; 

рдЯреАрдкреЛрд╕реНрдЯ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 var Adapter : TUAdapter; users: TUsersArray; i: integer; begin Adapter := TUAdapter.Create(db, 'User'); try users:= TUsersArray(Adapter.FindAll()); for i:=0 to Length(users) -1 do begin Grid.Cells[0, i+1] := VarToStr(users[i].id); Grid.Cells[1, i+1] := VarToStr(users[i].name); Grid.Cells[2, i+1] := VarToStr(users[i].email); Grid.Cells[3, i+1] := VarToStr(users[i].password); SetRateStars(i, VarToStr(users[i].rate)); Grid.Cells[5, i+1] := VarToStr(users[i].last_login); end; finally Adapter.Destroy; end; end; 


рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВ RTTI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреА рдЧрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрдиреБрднрд╡ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрд░рдЯреАрдЯреАрдЖрдИ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдЖрд╡реЗрджрди рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ, рд╡рд┐рдХрд╕рд┐рдд рд╡рд░реНрдЧ рдХреА рдЧрддрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдереЛрдбрд╝реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдУрдЖрд░рдПрдо рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЗрд╕реЗ рд╕реМрдВрдкреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред

BitBucket рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯред

рдкреБрдирд╢реНрдЪ
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдбреЗрд▓реНрдлреА рдХреЗ рдкреНрд░рддрд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рднрдбрд╝рдХрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкрд╛рдардХ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдХреЛ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ рджреЛрд╕реНрддреЛрдВ, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд░рдЦреЗрдВред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреНрд╕реЗрдкреНрд╢рди рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореИрд╕реЗрдЬрдмреЙрдХреНрд╕ рдХреЛ рддреНрд░реБрдЯрд┐ рдкрд░ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рдХреЛ рд╕рд╣реА рдХрд░реВрдВрдЧрд╛, рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдпреБрдкреАрдбреА:
рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдФрд░ рдореИрд╕реЗрдЬрдмреЙрдХреНрд╕ рдирд╣реАрдВред

Source: https://habr.com/ru/post/In184732/


All Articles