WinRT рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рднрд╛рдЧ 2. рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

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

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓реЗрдЦ SQL рд▓рд╛рдЗрдЯ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рдорд╛рди рдерд╛ред

рд▓реЗрдЦ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛
Sutdia рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ SQLite рдЬреЛрдбрд╝рдирд╛
Sqlite-net рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбрд╝рдирд╛
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдирдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ (LinqToSql, EF рдХреА рд╢реИрд▓реА рдореЗрдВ)
SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ (ADO.NET рдХреА рд╢реИрд▓реА рдореЗрдВ)


рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ , рдкреБрд╕реНрддрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдЦ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд▓реЗрдЦ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдЯрд┐рдо рд╣реЗрдЙрд░ рдмреНрд▓реЙрдЧ рдореЗрдВ SQLite рд╕рдорд░реНрдерди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд▓реЗрдЦ рд╣реИ ред рдпрд╣рд╛рдБ SQLite рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рддреИрдпрд╛рд░реАред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред


SQLite рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдХрд╕реНрдЯрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ рдЕрдкрдбреЗрдЯ (рдЯреВрд▓ рдореЗрдиреВ рдореЗрдВ) рдЦреЛрд▓реЗрдВред
рдЫрд╡рд┐

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ SQLite рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝ рдкрд╛рдПрдВрдЧреЗ

рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ SQLite рдЬреЛрдбрд╝рдирд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ SQLite рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдбрд╝реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВ):
рдЫрд╡рд┐

Microsoft Visual C ++ рд░рдирдЯрд╛рдЗрдо рдкреИрдХреЗрдЬ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВред рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ SQLite рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рдХрд╛рдо рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдо рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдВрдбреЛрдЬ рдРрдк рдкреНрд░рдорд╛рдгрди рдЯреВрд▓рдХрд┐рдЯ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧреАред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореИрдиреЗрдЬрд░ рдореЗрдВ x86, x64 рдпрд╛ рдЖрд░реНрдо рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдмрд┐рд▓реНрдб рдореЗрдиреВ рдкрд░ рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо) рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ

рдЫрд╡рд┐

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрд┐рдЫрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ SQL рд▓рд╛рдЗрдЯ рдкреЛрд░реНрдЯ рд╢реБрджреНрдз C # рдкрд░ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ рдХрд┐рд╕реА рднреА CPU рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ, рдЖрдк рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд▓рдХреНрд╖реНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА CPU рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Linq рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбрд╝реЗрдВ



рд╣рдо рдЕрдкрдиреЗ .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ LinqToSql рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ SQLite рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдо Heuer sqlite-net рд░реИрдкрд░ рдЬреЛрдбрд╝рдХрд░ SQLite рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрд╡рд░рдг рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдмрдЬрд╛рдп рд▓рд╛рдЗрдирдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд╕реЗ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рднреА рд╕рд░рд▓ рдмрдирд╛рдПрдВрдЧреЗред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд░реИрдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

Install-Package sqlite-net 

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдкреИрдХреЗрдЬ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд NuGet рд╕рдВрдХреБрд▓ рдореЗрдиреВ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз) (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдиреВ рдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ -> рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ -> рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП Nuetet рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ ...

рдЫрд╡рд┐

рд╕рд┐рд░рд┐рд▓рд┐рдХ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рдиред (рд░реВрд╕реА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо)

рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреГрдердХ рднрдВрдбрд╛рд░рдг рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ-рдиреЗрдЯ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдирд╛рдо рд╕рд┐рд░рд┐рд▓рд┐рдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред

рд╕реНрдХреНрд▓рд╛рдЗрдЯ-рдиреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИрдВ

SQLite.cs
SQLiteAsync.cs

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ SQLiteConnection рд╡рд░реНрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛рдмреЗрд╕рдкрд╛рде, рдмреВрд▓ storeDateTimeAsTicks = false) рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ sqlite.net рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд╛рдЗрди рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

 var r = SQLite3.Open(DatabasePath, out handle); 

рдкрд░
 var r = SQLite3.Open16(DatabasePath, out handle); 

рдЕрдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 using (var db = new SQLiteConnection(dbPath)) { //db code } 

рдЬрд╣рд╛рдВ dbPath рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рд╣реИ:

 dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "databasename.db"); 


рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ-рдиреЗрдЯ рдЖрдкрдХреЛ Linq рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ ADO.NET рдХреА рд╢реИрд▓реА рдореЗрдВ рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

Sqlite-net рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбрд╝рдирд╛



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрддреНрдкрд╛рдж рдореЙрдбрд▓ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдФрд░ 250 рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдПрдХ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛:

 public class Product { [PrimaryKey, AutoIncrement] public int ProductId { get; set; } [MaxLength(250)] public string Name { get; set; } } 

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рд▓реЗрдпрд░ рдХреНрд▓рд╛рд╕ рд╣реИред рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдПрдБ:

 private readonly string dbPath; public DataLayer() { dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "products.db"); } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЙрддреНрдкрд╛рдж рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:

 public void Init() { using (var db = new SQLiteConnection(dbPath)) { db.CreateTable<Product>(); } } 

рдЬрдм рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ products.db рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдиреАрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд sqlite рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдореБрдлреНрдд SQLite рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрд░реЗрдЦ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдЫрд╡рд┐

рдЖрдЗрдП рдареЗрда рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:

 public Product AddProduct(string name) { var product = new Product() {Name = name}; using (var db = new SQLiteConnection(dbPath)) { db.Insert(product); } return product; } 

рдЬрдм рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Product рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ProductId рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЕрдиреБрднрд╛рдЧ рдЪрдпрдирд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:

 public Product GetProductById(int productId) { using (var db = new SQLiteConnection(dbPath)) { return db.Table<Product>().FirstOrDefault(i => i.ProductId == productId); } } 

рд░рд┐рдХреЙрд░реНрдб рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд░рддреНрдпрдХреНрд╖ sql рдХреНрд╡реЗрд░реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public Product GetProductById(int productId) { using (var db = new SQLiteConnection(dbPath)) { return db.Query<Product>("select * from product where ProductId=?", productId).FirstOrDefault(); } } 

рддрджрдиреБрд╕рд╛рд░, рд╣рдо рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public List<Product> GetAllProducts() { using (var db = new SQLiteConnection(dbPath)) { return db.Table<Product>().ToList(); } } 

рд░реИрдкрд░ рдХреА рдЕрдиреНрдп рдЕрдЪреНрдЫреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рдж рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ (рдЬреЛ LinqToSQL рдореЗрдВ рдЧрд╛рдпрдм рд╣реИ):

 public void DeleteProduct(int id) { using (var db = new SQLiteConnection(dbPath)) { db.Delete<Product>(id); } } 

рдкреБрд╕реНрддрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ (ADO.NET рдХреА рд╢реИрд▓реА рдореЗрдВ)



Linq рдкреНрд░рджрд╛рддрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ SQL рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордпред рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ-рдиреЗрдЯ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд╢реНрди рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬреЛ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд╢реНрдиреЛрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо 6.3 рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рдорд╛рди рдорд╛рдирддреЗ рд╣реИрдВред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд▓реЗрдпрд░ рдХреНрд▓рд╛рд╕:

 private readonly string dbPath; public DataLayer() { dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "products.db"); } 

рдПрдХ рд╕рдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 public void Init() { using (var db = new SQLiteConnection(dbPath)) { db.CreateCommand( @"CREATE TABLE ""Product""( ""ProductId"" integer primary key autoincrement not null , ""Name"" varchar(250) );" ).ExecuteNonQuery(); } } 

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрдирдкреБрдЯ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП sql рдХреНрд╡реЗрд░реА рдореЗрдВ "?" рдЪрд┐рд╣реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд╛рдо рд╕реЗ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 public void AddProduct(string name) { using(var db=new SQLiteConnection(dbPath)) { db.CreateCommand("INSERT INTO Product (Name) VALUES (?)", name).ExecuteNonQuery(); } } 

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдХреНрд╡реЗрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

 public int GetCount() { using (var db = new SQLiteConnection(dbPath)) { return db.CreateCommand("SELECT COUNT(ProductId) FROM Product").ExecuteScalar<int>(); } } 

рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдЯреЗрдмрд▓ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдореЙрдбрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 public class Product { public int ProductId { get; set; } public string Name { get; set; } } 

рдЕрдм рд╣рдо sql рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public List<Product> GetAllProducts() { using(var db=new SQLiteConnection(dbPath)) { return db.CreateCommand("select * from product").ExecuteQuery<Product>(); } } 


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


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

рдкреБрдирд╢реНрдЪ Coldillic рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдорджрдж, рд╕рд▓рд╛рд╣ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП VoldemarRinger рдФрд░ Stasus рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

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


All Articles