рдпреВрдирд┐рдЯреА 3 рдбреА + SQLite

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

рдпрд╣ рдХреНрдпрд╛ рд╣реИ

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

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

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

рдХреИрд╕реЗ?

рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдкрд╕рдВрдж SQLite Manager рдкрд░ рдЧрд┐рд░ рдЧрдИ - рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рд╣реИ, рдпрд╣ рдореБрдлрд╝реНрдд, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдереА, рд╡рд╣ рдпрд╣ рдереА рдХрд┐ рдореБрдЭреЗ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдерд╛, рд╕рд╛рде рд╣реА рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рджреГрд╢реНрдп рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдХреНрд╖рдорддрд╛ рднреА рдереАред рдФрд░ рдмрд╛рдХреА рд╕рдм рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдк рд╕реНрд╡рдпрдВ (.db, .sqlite, .bytes, рдЗрддреНрдпрд╛рджрд┐) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХрддрд╛ рдХреЗрд╡рд▓ ".bytes" рдХреЛ рд╕рдордЭрддреА рд╣реИред

рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рдЪрд┐рддреНрд░реЛрдВ, рд╕рдВрдЧреАрдд, рд╡реАрдбрд┐рдпреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдЦрдиреЗ рд╕реЗ рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдЬреЛ 100 рдХреЗрдмреА рд╕реЗ рдЕрдзрд┐рдХ рд╡рдЬрди рдХрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рдкрде рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдмрд╛рдЗрдирд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдЕрдм рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдПрдХрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпрд╣ рд╕рдм рд░рдЦреЗрдВред SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, sqlite.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА (Win, iOS рдФрд░ MacOS рдХреЗ рд▓рд┐рдП) рдФрд░ sqlite.os (Android рдХреЗ рд▓рд┐рдП) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд╣рдо рдпрд╣рд╛рдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬрдЧрд╣ рджреЗрддреЗ рд╣реИрдВ - Assets/Plugins/sqlite.dll рдФрд░ Assets/Plugins/Android/sqlite.so ред рдЕрдЧрд░ рдХреЛрдИ Plugins рдкрд┐рддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВред рдмрдирд╛рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ db.bytes рдХрд╣рддреЗ рд╣реИрдВ) рдХреЛ Assets/StreamingAssets db.bytes рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдпрджрд┐ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ)ред рдирддреАрдЬрддрди, рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░рд╛ рдЖрдзрд╛рд░ рдпрд╣рд╛рдВ рд╣реЛрдЧрд╛:

рдЬреАрдд рдФрд░ рдореИрдХ рдУрдПрд╕:
 Application.dataPath + "/StreamingAssets/db.bytes" 

iOS:
 Application.dataPath + "/Raw/db.bytes" 

рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕реЗ рдПрдкреАрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 "jar:file://" + Application.dataPath + "!/assets/db.bytes". 
рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WWW рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдлрд┐рд░ Application.persistentDataPath + "/" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред

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

рдЬреАрдд рдФрд░ рдореИрдХ рдУрдПрд╕:
 Application.dataPath + "/db.bytes" 

iOS:
 string path = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/")); path = path.Substring(0, path.LastIndexOf("/")) + "/Documents/db.bytes"; 
рдпрд╛ рддреЛ
 string path = Application.dataPath.Substring(0, Application.dataPath.length - 5); path = path.Substring(0, path.LastIndexOf("/")) + "/Documents/db.bytes"; 
рдпрд╛ рддреЛ
 string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "/db.bytes"; 

Android рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИред

рдлрд┐рд░ рд╣рдо System.IO рдкреИрдХреЗрдЬ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
 File.Copy(openPath, savePath); 

рдХреНрд░рдорд╢рдГ Android рдХреЗ рд▓рд┐рдП
 WWW www = new WWW(openPath); while(!www .isDone) {} //   ,   File.WriteAllBytes(savePath, www.bytes); 

рдЦреИрд░, рд╕рдВрд╕рд╛рдзрди рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝: рдореЙрдбрд▓, рд╡реАрдбрд┐рдпреЛ, рд╕рдВрдЧреАрдд рдЖрджрд┐, рдлрд╝реЛрд▓реНрдбрд░ Assets/Resources/ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рд╡реЗ resources.assets рдореЗрдВ рдкреИрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдмрд╛рдЗрдирд░реАред рдФрд░ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ - рд╕рдВрд╕рд╛рдзрдиред рд▓реЛрдб (рдкрде рдкрде) ред рдареАрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдзреНрд╡рдирд┐ рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ Assets/Resources/Sounds/sound1.mp3 , рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд░рд┐рдХреЙрд░реНрдб Sounds/sound1.mp3 , рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛
 AudioClip a = Resources.Load("Sounds/sound1.mp3") as AudioClip; 

рдЕрдм рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВ SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдирд╛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ SQLite-net ORM рдУрдкрдирд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ SQLite рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛, рдпрд╣ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдПрдХ рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреА рд╣реИред рдпрд╣рд╛рдБ рд▓рд┐рдиреЗрдХ рд╕рдорд░реНрдерди рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public class Favorite { [PrimaryKey, AutoIncrement] public int Id { get; set; } public int UserId { get; set; } public string Url { get; set; } } public Favorite[] GetFavorites(SQLiteConnection c, int id) { var q = from f in c.Table<Favorite>() where f.UserId == id select f; return q.ToArray(); } 

рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 public void AddFavorite(SQLiteConnection c, string url, int id) { var fav = new Favorite() { UserId = id, Url = url };  c.Insert(fav); } 

рд▓реЗрдХрд┐рди Linq рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JOIN рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА SQL рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рдмреЛрдирд╕ рдХрд╣рд╛рдВ рд╣реИ?

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

рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВред

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


All Articles