рд╢реБрдн рджреЛрдкрд╣рд░
рдиреАрдЪреЗ рд╣рдо
рдХреНрдпреВрдЯреА рдореЗрдВ
SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд▓реЗрдЦрдХ рдиреЗ рдХреНрдпреВрдЯреА рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдЗрди рджреЛ рдЕрджреНрднреБрдд рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреВрдЯреА рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, SQLite рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ SQLite "рд╕рд╛рдзрд╛рд░рдг" рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ MySQL, рдЗрд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдирд╣реАрдВ рд╣реИред рдпрд╣реА рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдПрдХ рдЕрд▓рдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред SQLite рд╡рд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдВрдЬрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "рд╕рд╛рдордирд╛" рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рджрд┐рди рдареАрдХ рд╣реИ, рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ "рд╕рдВрдмрдВрдзрдкрд░рдХ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдирдИ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЛ "рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП"ред рдЗрд╕рд╕реЗ, рдХрдо рд╕реЗ рдХрдо, рдпрд╣ рдирд┐рдореНрди рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмреАрдЪ рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯред рдпрд╣ "рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░" рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд╡рдпрдВ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ Qt рдХреЗ рд╕рд╛рде рджреЛрд╕реНрддрд╛рдирд╛ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╣реВрдВ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореБрдЭреЗ рдЗрд╕рдХреА DB рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдореИрдВ MySQL рдХреЗ рд╕рд╛рде рдореИрддреНрд░реАрдкреВрд░реНрдг рд╢рд░реНрддреЛрдВ рдкрд░ рднреА рд╣реВрдВ рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ MySQL рдХреЗ рд╕рд╛рде Qt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдореИрдВ рдЙрд╕ рд╕рдордп рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред MySQL рдХреЛ Qt рдХреЗ рд╕рд╛рде "рдХрдиреЗрдХреНрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдирд╕реЛрдВ рдХреА рдХрдореА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Qt рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди, рдЕрд░реНрдерд╛рдд, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдерд╛ (рдпрд╣ рдЖрдкрдХреЗ Qt рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред "рдкрдврд╝рд╛" рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЗрдХрдЯреНрдареЗ рд╣реБрдП, рдПрдХ QtSql рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛)ред рдФрд░ рдлрд┐рд░ рднреА, рдЕрдЧрд░ рдореБрдЭреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ MySQL рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдордЬрдмреВрд░" рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЖрджрд┐ред (рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╡рд┐рд╖рдп - рдореБрдЭреЗ рдкрддрд╛ рд╣реИ)ред
FIY
рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕, рдЯреЗрдмрд▓ рдЖрджрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
SQLiteManager рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╕рдВрдж рдЖрдпрд╛ред рдореЗрд░реЗ "рд╡рд░реНрдХрд╣реЙрд░реНрд╕" рдореЗрдВ (a?)
Qt рд╡рд┐рдВрдбреЛрдЬ SDK рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдореИрдВ QtCreator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЪрдордХ (
IMHO рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рдЖрдИрдбреАрдИ рд╣реИ )ред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХреНрдпреВрдЯреА рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреВрдЯреА рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ "рд╕реЗрд╡рд╛" рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -
рдХреНрдпреВрдЯреАрдПрд╕рд╕реАрдПрд▓ ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Qt рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╣реИ, рддреЛ рдЖрдк .pro рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ,
рддреЛ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВ ред рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЛ .pro рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
QT += sql
рдпрд╣ QtSql рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕реА рд╢реАрд░реНрд╖рдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
#include <QtSql>
Qt рдкреБрд╕реНрддрдХреЗрдВ QtSql рдореЙрдбреНрдпреВрд▓ рдХреЗ рддреАрди рд╕реНрддрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреА рд╣реИрдВ:
- рдЪрд╛рд▓рдХ рд╕реНрддрд░
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕реНрддрд░
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрддрд░
рдЪрд╛рд▓рдХ рд╕реНрддрд░
рдЪрд╛рд▓рдХ рд╕реНрддрд░ рдореЗрдВ рднреМрддрд┐рдХ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреИрд╕реЗ:
- QSqlDriver
- QSqlDriverCreator <T *>
- QSqlDriverCreatorBase,
- QSqlDriverPlugin
- QSqlResult
QSqlDriver рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ "рд╕реАрдзреЗ" рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ
QSqlDatabase рдХрд╛ рдЙрдкрдпреЛрдЧ / рдЙрдкрдпреЛрдЧ
рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ SQL рдбреНрд░рд╛рдЗрд╡рд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
QSqlDriver рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
QSqlDriverCreator рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП SQL рдбреНрд░рд╛рдЗрд╡рд░
рдлрд╝реИрдХреНрдЯрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛
рд╣реИ ред рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░
QSqlDriver рдХрд╛ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
QSqlCreatorBase SQL рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИред QSqlDriver рд╡рд░реНрдЧ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ
createOject () рд╡рд┐рдзрд┐ рдХреЛ "rephrase" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
QSqlDatabase рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд▓реЛрдб рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣
QSqlDatabase :: addDatabase () рдлрд╝рдВрдХреНрд╢рди) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд▓рдЧ-рдЗрди рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ (
QSqlDriverPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рдХреЗ )ред QSqlDriverPlugin рдХрд╕реНрдЯрдо
QSqlDriver рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
QSqlResult рдЦреБрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рд╕рднреА Qt рд╡рд░реНрдЧреЛрдВ рдХреА рддрд░рд╣) рдмреЛрд▓рддрд╛ рд╣реИ, рдпрд╣ рд╡рд░реНрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдо
QSqlResult рдХреЗ рдмрдЬрд╛рдп
QSqlQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐
QSqlQuery QSqlResult рдХреЗ DB- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг ("рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд") рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЪреВрдВрдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХрд╛ рд╕реНрддрд░, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЕрдкрдирд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдмрдирд╛рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдореИрдВ рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП) рдЬрд┐рд╕реЗ рдЪрд╛рд▓рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
class XyzResult : public QSqlResult { public: XyzResult(const QSqlDriver *driver) : QSqlResult(driver) {} ~XyzResult() {} protected: QVariant data(int ) { return QVariant(); } bool isNull(int ) { return false; } bool reset(const QString & ) { return false; } bool fetch(int ) { return false; } bool fetchFirst() { return false; } bool fetchLast() { return false; } int size() { return 0; } int numRowsAffected() { return 0; } QSqlRecord record() const { return QSqlRecord(); } }; class XyzDriver : public QSqlDriver { public: XyzDriver() {} ~XyzDriver() {} bool hasFeature(DriverFeature ) const { return false; } bool open(const QString & , const QString & , const QString & , const QString & , int , const QString & ) { return false; } void close() {} QSqlResult *createResult() const { return new XyzResult(this); } };
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕реНрддрд░
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐
QSqlDatabase :: addDatabase () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рдзрд┐
DBMS рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред рд╣рдореЗрдВ QSQLITE рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
QSqlDatabase sdb = QSqlDatabase::addDatabase("QSQLITE"); sdb.setDatabaseName("db_name.sqlite"); if (!sdb.open()) {
AddDatabase рд╕реНрдереИрддрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд "рднрд╛рдИ" рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреНрд░рд╛рдЗрд╡рд░ рдЦреБрдж (
QSqlDriver *)ред
рдХрдиреЗрдХреНрд╢рди рдУрдкрди () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
QSqlDatabase Class рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рди рдПрдХ рд╕рдорд░реНрдерд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдИ рдХрдиреЗрдХреНрд╢рди рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди (
рдУрдкрди () рд╡рд┐рдзрд┐
) рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ
QSqlDatabase :: lastError () рд╡рд┐рдзрд┐ (
QSqlError ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
if (!sdb.open()) { qDebug() << sdb.lastError().text(); }
рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ Qt рдЖрдкрдХреЛ SQL рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреИрд╕реЗ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк
QSqlQuery рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓
рдбреАрдПрдордПрд▓ (рдбреЗрдЯрд╛ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ) рдПрдХреНрд╕рдкреНрд░реЗрд╢рдиреНрд╕ рдЬреИрд╕реЗ рдХрд┐
SELECT ,
INSERT ,
UPDATE рдФрд░
DELETE рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐
DDL (рдбреЗрдЯрд╛ рдбреЗрдлрд┐рдирд┐рд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ) рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕, рдЬреИрд╕реЗ
рдХреНрд░рд┐рдПрдЯ рдЯреЗрдмрд▓ ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдбреАрдмреА-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдЬреЛ рдХрд┐ SQL рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PSQL рдХреЗ рд▓рд┐рдП - "рд╕реЗрдЯ рдбреЗрдЯрд╛ = рдЖрдИрдПрд╕рдУ")ред
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рдЕрдиреБрд░реЛрдзреЛрдВ рдиреЗ рдЕрдиреБрд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ "рд╕рдХреНрд░рд┐рдп" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
isActive () рд╕рд╣реА рд╡рд╛рдкрд╕ рдЖ
рдЬрд╛рдПрдЧрд╛ , рдЕрдиреНрдпрдерд╛ рд░рд╛рдЬреНрдп рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореЗрдВ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдпрд╛
QSqlQuery :: exec () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп)ред
рдХреНрдпрд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ
QSqlQuery рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реБрд╡рд┐рдзрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ
рд╕реЗрд▓реЗрдХреНрдЯ рдХреНрд╡реЗрд░реА рдХреЗ рдмрд╛рдж, рдЖрдк
рдЕрдЧрд▓реЗ (), рдкрд┐рдЫрд▓реЗ (), рдкрд╣рд▓реЗ (), рдЕрдВрддрд┐рдо (), рдФрд░
рддрд▓рд╛рд╢ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
QSqlQuery query("SELECT country FROM artist"); while (query.next()) { QString country = query.value(0).toString(); do_something(country); }
рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреА рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдФрд░ рдХреНрд░рдорд╢рдГ
рдкрд┐рдЫрд▓реА () рдХреЛ рдкрд┐рдЫрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмреБрд▓рд╛рддреА рд╣реИред
рдкрд╣рд▓реЗ (), рдЕрдВрддрд┐рдо () , рдХреНрд░рдорд╢рдГ, рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдкрд╣рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рддрд▓рд╛рд╢ () рдкреВрд░реНрдгрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдкрд░ "рдХреНрд╡реЗрд░реА рдХреЛ рд╕реНрдерд╛рди рджреЗрддрд╛ рд╣реИ"ред рдЖрдк
рдЖрдХрд╛рд░ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдХрд╛рд░, рдпрд╛ рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ (рдкрд░рд┐рдгрд╛рдо) рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд╕реНрдерд┐рддрд┐ 0 рдкрд░ рд╣реИ, рдХреНрд╡реЗрд░реА рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░
isSelect ()
рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЕрдВрддрд┐рдо рдХреНрд╡реЗрд░реА рдХрд╛
рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)
рдЪрд╛рд╣рдиреЗ рд╡рд╛рд▓реЗ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рддрд▓рд╛рд╢ () рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВред
рд╣рдордиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк
QSqlQuery рд╡рд░реНрдЧ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рд╖реНрдкрд╛рджрди () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдмреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВред рдбрд┐рдЬрд╝рд╛рдЗрди
QSqlQuery query("SELECT country FROM artist");
рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рднреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
QSqlQuery query; query.exec("SELECT country FROM artist");
рдЗрд╕рд▓рд┐рдП,
рдирд┐рд╖реНрдкрд╛рджрди () рдЕрдиреБрд░реЛрдз рдХреЛ
QString рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ, рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рд╕рд╣реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╕рдВрдХреЗрдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ "рд╡рд┐рдкрд░реАрдд" рд╣реИред рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, SQL рдорд╛рдирдХ) рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдЕрдиреБрд░реЛрдз рдПрдХ рдЕрдорд╛рдиреНрдп (uy?) рд░рд┐рдХреЙрд░реНрдб рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдЕрдЧрд▓реЗ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдкрд╛рджрди () рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рддреИрдпрд╛рд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ - "рддреИрдпрд╛рд░"ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рддреИрдпрд╛рд░реА () рд╡рд┐рдзрд┐ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрд░реЛрдз рдХреА рд╕рдлрд▓ рддреИрдпрд╛рд░реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ
рд╕рд╣реА рд╣реИред
рдорд╣рддреНрд╡ рдпрд╛, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рдзрд┐ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ
bindValue () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП "рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
QSqlQuery my_query; my_query.prepare("INSERT INTO my_table (number, address, age)" "VALUES (:number, :address, :age);"); my_query.bindValue(":number", "14"); my_query.bindValue(":address", "hello world str."); my_query.bindValue(":age", "37");
рдЖрдк рдЕрдирд╛рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
QSqlQuery my_query; my_query.prepare("INSERT INTO my_table (number, address, age)" "VALUES (?, ?, ?);"); my_query.bindValue("14"); my_query.bindValue("hello world str."); my_query.bindValue("37");
рдЕрдВрдд рдореЗрдВ, рдЖрдк рдмрд╕ рдЗрдирд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ QString рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
QSqlQuery my_query; my_query.prepare( QString("INSERT INTO my_table (number, address, age) VALUES (%1, '%2', %3);") .arg("14").arg("hello world str.").arg("37") );
рд╕рдВрдХрд▓рд┐рдд (рдХреЙрдкреА-рдкреЗрд╕реНрдЯ-рд╕реЗ-рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░) рдЙрджрд╛рд╣рд░рдг:
#include <QtGui/QApplication> #include <QtSql> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QSqlDatabase dbase = QSqlDatabase::addDatabase("QSQLITE"); dbase.setDatabaseName("my_db.sqlite"); if (!dbase.open()) { qDebug() << "- !"; return -1; } QSqlQuery a_query; // DDL query QString str = "CREATE TABLE my_table (" "number integer PRIMARY KEY NOT NULL, " "address VARCHAR(255), " "age integer" ");"; bool b = a_query.exec(str); if (!b) { qDebug() << " , !"; } // DML QString str_insert = "INSERT INTO my_table(number, address, age) " "VALUES (%1, '%2', %3);"; str = str_insert.arg("14") .arg("hello world str.") .arg("37"); b = a_query.exec(str); if (!b) { qDebug() << " , , ?"; } //..... if (!a_query.exec("SELECT * FROM my_table")) { qDebug() << " , ."; return -2; } QSqlRecord rec = a_query.record(); int number = 0, age = 0; QString address = ""; while (a_query.next()) { number = a_query.value(rec.indexOf("number")).toInt(); age = a_query.value(rec.indexOf("age")).toInt(); address = a_query.value(rec.indexOf("address")).toString(); qDebug() << "number is " << number << ". age is " << age << ". address" << address; } return app.exec(); }
рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
QSqlQuery :: value () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХреЙрд▓рдо рдирдВрдмрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ
рд░рд┐рдХреЙрд░реНрдб () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╡рд┐рдзрд┐
QSqlRecord рд╡рд░реНрдЧ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ
SELECT рдХреНрд╡реЗрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
QSqlRecord :: indexOf () рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдореЗрдВ рдХреЙрд▓рдо рдЗрдВрдбреЗрдХреНрд╕ рдорд┐рд▓рддрд╛ рд╣реИред
рдорд╛рди () рд╡рд┐рдзрд┐
QVariant рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди
рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдЬрд┐рд╕рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдЖрдкрдиреЗ
QVariant :: toInt () рдФрд░
QVariant :: toString () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрддрд░
QtSql рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -
рдпрд╣рд╛рдВ рдПрдХ
рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ,
QSqlTableModel рд╡рд░реНрдЧ рдЖрдкрдХреЛ рд╕рд╛рд░рдгреАрдмрджреНрдз рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд╛рд╣рд┐рддреНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
#include <QtGui/QApplication> #include <QtSql> #include <QTableView> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QSqlDatabase dbase = QSqlDatabase::addDatabase("QSQLITE"); dbase.setDatabaseName("my_db.sqlite"); if (!dbase.open()) { qDebug() << "- !"; return -1; } QTableView view; QSqlTableModel model; model.setTable("my_table"); model.select(); model.setEditStrategy(QSqlTableModel::OnFieldChange); view.setModel(&model); view.show(); return app.exec(); }
рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж,
рдХреНрдпреВрдЯреЗрдмрд▓ рд╡реНрдпреВ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░
QSqlTableModel рдЯреЗрдмрд▓ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реЗрдЯрдЯреЗрдмрд▓ () рд╡рд┐рдзрд┐ рдореЙрдбрд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЖрдзрд╛рд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде
рдЪрдпрди () рдХреЙрд▓ рднрд░рддрд╛ рд╣реИред
QSqlTableModel рд╡рд░реНрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдкрд╛рджрди рд░рдгрдиреАрддрд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (
setEditStrategy () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ):
- OnRowChange - рдЬреИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред
- OnFieldChange - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд▓ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред
- OnManualSubmit - SubmitAll () рд╕реНрд▓реЙрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдкрд░ рдбреЗрдЯрд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд░рд┐рд╡рд░реНрдЯ рдСрд▓ () рд╕реНрд▓реЙрдЯ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рдбреЗрдЯрд╛ рдЕрдкрдиреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рдмрд╕ рдпрд╣ рдЖрд╢рд╛ рдХрд░рдиреА рдереА рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╡рд╣ рдЦреЛрдЬреЗрдЧрд╛ рдЬреЛ рд╡рд╣ рдпрд╣рд╛рдВ рдЦреЛрдЬ рд░рд╣рд╛ рдерд╛, рдФрд░ рдХрд┐рд╕реА рдХреЛ "рдмрд╛рдж рдХреЗ рд▓рд┐рдП" рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред