Monday, September 3, 2012

vb.net එක්ක MySQL - 3rd post

කොහොමද කස්ටිය...vacction නේ.. ;-)..ER එකක් උඩින් හරි පාත් වෙයි කියල බලන් හිටියේ.. ;-) කොහෙද ඉතින් එකෙක් වත් එවුවේ නෑනේ..ඒකයි ඔන්න පරක්කු උනේ මගේ වරදක් නෙවේ ඔන්න.. ;-)


අපි කර කර හිටපුවත් මතක නෑ..ම් ම් ..අපි කරන්න ගත්තේ database ගහන එකත් ලෙසියෙන්ම තෙරෙන්න ඒ ගමන්ම vb.net ගොඩ දාගන්නත් පුලුවන් වෙන්න වැඩේ කර ගන්නනේ..ඉතින් අපි පලවෙනි පොස්ට් එකෙන් MySQL අපේ වැඩේට සෙට් වෙන විදියට හදා ගත්තනේ..දෙවනි පොස්ට් එකෙන් mysql users ල mange කර ගෙන අපි හදන්න යන bookshop එකට හරියන software එකේ මූලික කොටස කරානේ..මම කියුවා මුලින්ම ER ගහ ගහ කරන්න ගියොත් වැඩේ අමාරුයි කියලා..ඒත් software එකක් පාවිච්චි කරන අයගේ උවමනා..ඒ වගේම ඒකෙන් එයාලගේ වැඩ කටයුතු පහසු කරන්න සමත් වෙන්න ඕනේ..එහෙම එකක් හදන්න නම් සම්පූර්ණයෙන්ම මේක පාවිච්චි කරන තැන ගැන අවබෝදයක් ගන්න ඕනේ..
අද පොස්ට් එකෙන් මම ඒ ගැන අවබොදයක් ලබා දෙන්න බලාපොරොත්තු වෙනවා.. ඒත් එක්කම පොඩි ER-Diagram එකක් අදින්නත්..එතකොට software එක හදන එක ගොඩක් ලේසි වෙයි. database subject එකක් විදියට කරන අය නම් දන්නවා..mini world scene එක.. ඒකෙන් bookshop එක ගැන අවබොදයක් ගන්න පුලුවන්. ආ ඒවා ඕනේ නෑ..පස්සේ කියනම්කෝ.. :-). ආ තව ER ගැන නොදන්න අයටත් තේරෙවි post එක අන්තිමේදි.. :-)


ඔන්න දැන් අපි හා හා පුරාද මොකද්ද කියල පටන් ගත්තේ bookshop එකකට පොඩි සොෆ්ට්වෙයාර් කෑල්ලක් හදන්නනේ..හරි දැන් අපි bookshop එකක වෙන දේවල් study පාරක් දාලා අපේ database එක කොයි වගේ වෙන්න ඕනේද කියලා බලමුකෝ...


හරි..මුලින්ම අපි බලමු bookshop එකකට සම්බන්ධවෙන කස්ටිය.. ;-)..මුලින්ම customers එයාල නැතුව ඉතින් මොන shopද නේ..ඊලගට මේ software එක පාවිච්චි කරන අය..users කියලා ගමුකෝ..manager,cashier තව bookshop එකේ store එකේ වැඩ කරන අය මේ users ල ඝනයට වැටෙනවා. ඊලගට suppliers මෙයාලනේ ඉතින් shop එකට පොත් දාන්නේ. database subject එකක් විදියට නොකරන අයට දැන ගන්නත් එක්ක කියන්නම්කෝ..මේ අපේ bookshop එක හා එකට සම්බන්ධ සියල්ලම subject එකේදි නම් database එකේ mini world එක කියල කියනවා. එතකොට මෙ කස්ටිය ඒ කියුවෙ ඔය customers ල users ල entity කියලා හදුන්වනවා. ආ තව මේකට සම්බන්ධ අජීවී දේවල් උනත් entity කියලම තමා කියන්නේ. උදාහරනයක් විදියට මේකෙදි නම් පොත්(books) ;-). තව account records ඒවත් ගන්න පුලුවන්. අපි ඔය account records කොටස් දෙකකට බෙදලා ගමු. sales record සහ purchase record කියලා. තේරෙනවනේ sales නම් customers ල හා shop එක අතර ගනු දෙනු purchase නම් suppliers ල හා shop එක අතර ගනු දෙනු. ආ ඒව නම් ඉතින් කජු වගේනෙ අපේ අයට econ එක්ස්ප්ර්ට්ස්ලනෙ ;-) බ්ලොග් එක බලන අනිත් ක්ස්ටියට කියුවෙ. ;-). හරි දැන් අපි අපේ bookshop සොෆ්ට්වෙයාර් එකේ database එකට අවශ්‍ය මූලික චරිත හා වස්තු තීරනය කරානේ.subject එකෙන්ම කියනවා නම් entities ඔන්න ඒවා තමා
customers, users, suppliers, books, sales records, purchase records.


හරි ඊලගට කලපනා කොරලා බැලුවොත් ඉතින් මේ ටික විතරක් database එකේ දාල වැඩක් නැති බව තේරෙනවනේ. database එක ෆුල් මීනින්ෆුල් වෙන්න නම් මෙයාලගෙ අල ගිය මුල ගිය ඒවත් දාන්න ඕනේ. 
ආ ඒ පාර බලනවා ඇති මෙ මොනවා කියවනවද කියල මෙහෙමයි.. දැන් පොතක් database එකට දානවානම් එකෙ නම විතරක් දාලා බෑනේ. ඒකේ ගාන, ලියපු කෙනා, පබ්ලිශ් කරපු අය මේවත් දාන්න ඕනේ. 
ඒ කියන්නෙ entitiy එකේ විස්තරත් ඕනේ..මෙවට subject එකේදි නම් attributes කියල කියනවා. ඇත්තටම ඒවලින් තමා අපේ entity විස්තර කරන්නේ. ඔන්න දැන් ඕවත් database එකට දාන්න ඕනේ. ඊලගට මේ entity අතර විවිධ සම්බන්ධතා තියෙනවා.. ආ ඒ මොනවද..

දැන් බලන්නකෝ suppliers ගෙන් කඩේට පොත් ගන්නවා, purchase කරනවා. මේ purchase කිරීම කරන්නේ කඩෙන් ඒත් එක්කම මේ හැම purchase එකකම record එකක් තියෙන්න ඕනේ ඒක database එකේ save වෙන්නත් ඕනේ. ඒ කියන්නේ මේ purchase එකක් software එක හරහා තමා වෙන්නේ.. ඉතින් තේරෙනවානෙ මේ purchase එක සිද්ධ වෙන්නෙ users ලා හා suppliers ල අතර..ඔන්න purchase කියන සම්බන්ධතාවය, relationship එක තියෙන්නෙ suppliers ලා හා users ල අතර හරිනේ.. :-).
ඒත් එක්කම ඒකට purchase records කියන entitiy එකත් සම්බන්ධ වෙන්න ඕනේ. මොකද ඒ ගැන සියලු විස්තර save කර ගන්න ඕනේ නිසා. ඒ වගේම users ල විසින් customers ලට පොත් විකුනනවා. එතනදි software එක use කරන cashier වගේ කෙනෙක් තමා user වෙන්නෙ. ඒ කියන්නේ users ල හා customers ල අතර sales කියල relationship එකක් තියෙනවා. purchase කියන relationship එකට purchase record සම්බන්ද උනා වගේම මෙතනදිත් sales record සම්බන්ද වෙන්න ඕනේ මොකද හැම sale එකකම විස්තර save වෙන්න ඕනේ නිසා. ඒ වගේම පොත් හා suppliers ලා අතර supply කියලා relationship එකක් තියෙනවා. ඇයි suppliers ල තමා කඩේට පොත් supply කරන්නෙ. ඒ වගේම පොත් හා customers ල අතර relationship එකක් තියෙනවා ඒක තමා buys මොකද customers ල තමා කඩෙන් පොත් සල්ලි දීල ගන්නෙ.හරි relationship ටික ඉවරයි. :-).

list එක ලියුවොත්

1. purchase - suppliers, users හා purchase record කියන entitiy 3 අතර..
2. sales - customers, users හා sales record කියන entitiy 3 අතර..
3. buy - customers හා book කියන entitiy 2 අතර
4. supply - suppliers හා book කියන entitiy 2 අතර

කියන්න ඕනේ මේක පොඩිම පොඩි කඩයක් නැත්නම් මේ database එක විශ්ලේශනය කරන්න ගිහින් බ්ලොග් කෙරුවාව එපාවෙයි.මේක ගත්තෙ අපේ software එක හදන්න ලෙසි වෙන්න. පස්සෙ ඕනේ නම් දියුණු කරගන්න පුලුවන්.

දැන් මේ කියපුවා ටික පැහැදිලි වෙන්න අපි පොඩි diagram එකක් අදිමු. එතකොට ඒක බලාගෙන software එක කොයි වගේ වෙන්න ඕනේද කියල හිතාගන්න ලේසියි. අපේ කස්ටියනම් දන්නවා ER-Diagram කිව්වම. දන්නේ නැති අය බලන්නකෝ ඔය බෝල බෝල ගැන කියන්නම්කෝ පස්සේ එතකොට තේරේවි හරිනේ :-)



මේක බොහොම සරල diagram එකක් මේකේ අර කියපු entity අතර තියෙන සම්බන්දතා පැහැදිලි වෙන්න ඇදපු, application එක හදන් යනගමන් ඒවගේ විශේෂ තැන් එකතු කරමු. බෝල බෝල ගැන කියනවානම් සෘජුකෝණාස්‍ර වලින් තමා entitiy පෙන්නනේ..එතකොට attributes ඕවල් හැඩයෙන්..relationships දියමන්ති හැඩෙන්(diamond). ඊලග පොස්ට් එකෙන් application එක හදන්න පටන් ගමු. ජය වේවා..

Friday, July 27, 2012

vb.net එක්ක MySQL - 2nd post


කොහොමද ඉතින්...අලුත් post එකකින් කට්ටියව බලන්න හිතුනා..strike එකට පින් දීල පටන් ගත්තට මොකද දැන් නම් මටත් එපා වෙලා තියෙන්නෙ...හරි එවා වැඩක් නෑ..අද අපි කරන්න යන්නෙ මොනවද කියල බලමුකෝ එහෙනම්. මම කලින් post එකෙන් කියුවනේ programme එකක් හදනවා කියල..එත් හොදටම design කරල හදන්න ගියොත්..Database model එක හදන හැටි ER - diagrams ගහන හැටි ඔක්කොම අදින්න වෙනවා..:D එක නිසා මම programme එකේ එක එක part කරන කොට එකට අදාලව database එක හදා ගන්න හැටි කියා දෙන්නම්..එහෙම හොදයි මට හිතෙන විදියට...

හොදයි මම bookshop එකකට තමයි programme එක හදන්න යන්නේ..දැන් ඉතින් කලපනා කරල බලන්නකෝ bookshop එකක මොනාද වෙන්නෙ කියල...අපි ඒ දේවල් එක එක සලකලා බලමු...හරි මුලින් ම අපි හදන මේ programme එක පාවිච්චි කරන users ලා ගොඩක් ඉන්න පුලුවන් කියලා තේරෙනවනේ..අද post එකෙන් මම users ලව manage කරන හැටියි කියා දෙන්න හදන්නේ...

MySQL වගේ DBMS - Data base management system එකක් අපේ database එක විදියට use කරන කොට අපට users ල handle කරන්න ක්‍රම 2ක් තියෙනවා..එකක් තමයි MySQL සපයන users ල...මේක තමා වඩා ආරක්ෂිත ක්‍රමය..හැබයි මේ ක්‍රමය web application එකකදි නම් use කරන්න අමාරුයි..ඇයි ඉතින් ඒවගෙදි users ලම account හදා ගන්නවනේ..එතකොට වෙනම users table එකක් තියාගෙන ඒකෙන තමයි users ල handle කරන්න ඕනේ... හැබැයි අපි මේ desktop application එකේ users ල ගනන සීමිතයි..ඒ වගෙ වෙලවට තමයි MySQL users ලාම අපේ application එකේ users ල විදියට යොදාගන්න පුලුවන්..අද අපි කරන්න යන්නෙ MySQL users යොදා ගෙන අපේ app එකට ලොග් වෙලා එකේ main window එක ගන්න විදිය...මේ ක්‍රමයට ඔයලගේ වෙනත් programme එකක users ලව manage කරන්නත් පුලුවන්...එහෙනම් ඔන්න පහල video guide 1කේ තියෙනව MySQL users ල add කරන හැටි... :-).ආ අහන්න අමතක උනා කටිටිය mysql windows installer එක try කරාද? නැත්නම් මෙතන කරන හැටි තියෙනවා..:-)




ඊලගට තියෙන්නේ VB වලින් පහල තියෙන screenshot වල වගේ window 2ක් හදා ගන්න එක..

Login Window එක මේ විදියට හදා ගන්න...


මේ වින්ඩෝ එකෙ පලවෙනි text box එකේ name එකට txtuser කියලත් දෙවෙනි එකට txtpasswd කියලත් දෙන්න. ඒ properties හදන window එක view -> properties window හෝ F4 එබීමෙන් ගන්න පුලුවන්..

Main Window එක මේ විදියට හදා ගන්න...


මේ තියෙන්නේ code එක..දන්නෙ නැති අය බයවෙන්න එපා හොදේ කියල දෙනම්කො.. :-)

 ලොකු කරලා බලන්න image එක click කරන්න..

දැන් code එක පැහැදිලි කර ගනිමු.. මුල්ම line එකේ Imports MySql.Data.MySqlClient මේකෙන් කියල තියෙන්නෙ vb.net MySQL එක්ක සම්බන්ධ කරන්න ඕනේ object හදා ගන්න ඕනේ class import කරපු එක. java වල වගේම තමයි :-)..ඒත් මේක කරන්න කලින් MySQL වලට referrence එක add කරලා තියෙන්න ඔනේ..මුල්ම post එකේ ඇති ;-)..

 ඊලග code එක ලියන්න කලින් design කරපු login window එකේ login button එක double click කරාම
 Private Sub btnlog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlog.Click

End Sub

කියල code කොටසක් generate වෙනවා..ඕක ඇතුලේ තමයි button එක click කරාම මොකක්ද වෙන්න ඔනේ කියල ලියන්න ඔනේ..

මේ කොටසට උඩින් සහ Public Class Form1 එකට යටින් Dim conn As MySqlConnection code කොටස ඇතුලු කරන්න ඕනේ..මේකෙන් කරලා තියෙන්නේ conn කියල variable එකක් declare කරපු එක..dim කියන්නෙ vb වල variable declare කරන type එකක්. අනිත් languages වල වගේම dim වලට scope එකක් තියෙනවා..හරියට c වල static අනම් මනම් වගේ..dim වැඩ කරන්නෙ අදාල form එකේ විතරයි..conn කියන variable එකේ type එක MySqlConnection වෙනවා..ඒ කියන්නෙ conn කියන variable එකට අල්ලන්න පුලුවන් MySqlConnection ජාතියේ ඒවා විතරයි..MySqlConnection ජාතියෙ object එකක් විතරයි..ගොඩනේ ;-)

ඊලගට බලමු අර double click කරලා ගනිපු code එක ඇතුලේ ලියපුවා ගැන..
conn = New MySqlConnection
        conn.ConnectionString = "server = localhost;" _
                                & "user id=" & txtuser.Text & ";" _
                                & "password=" & txtpasswd.Text & ";" _
                                & "database=bkshop"
        Try
            conn.Open()
            Form2.Show()
            conn.Close()
        Catch ex As MySqlException
            MsgBox("error occurred while opening database" & ex.Message)
        Finally
            conn.Close()
            Me.Hide()
            Me.Close()
        End Try
මුලින්ම කරලා තියෙන්නේ conn එකට MySqlConnection object එකක් හදලා එයාට ඒක අල්ල ගන්න කියපු එක..;-) new කියන key word එක java වල වගේම අලුත් object එකක් හදන්න vb වලදිත් යොදාගන්නවා. ඊට පස්සේ කරලා තියෙන්නේ හදාගනිපු conn object එකේ connectionstring කියන property එක set කරපු එක.
ඇත්තටම vb.net වල ඉදන් MySQL server එකට connect වෙන්න යොදාගන්නෙ MySqlConnection object එක. connect වෙන්න ඔනේ කොයි විදියටද කියන එක connection string property එකෙන් කියවෙනවා..
ඒක ලියන ක්‍රමය තමයි
server = server name; user id = username; password = password; database = database name;
 ඕකේ server name කියන තැනට අදාල server එකේ නමත් user id එකට server එකේ අදාල user ගෙ නමත් password කියන එකට අදාල user ගෙ password එකත් එන්න ඕනේ. database name එකට programme එකට අදාල database එකේ නමත් එන්න ඕනේ..
 conn.ConnectionString = "server = localhost;" _
                                & "user id=" & txtuser.Text & ";" _
                                & "password=" & txtpasswd.Text & ";" _
                                & "database=bkshop"
මේ කොටසෙදි ඒ අදාල නම් set කරලා තියෙනවා..vb වල string concatanate operator එක & එක.ඒ වගේම string එක පහල පේලියත් සමග සම්බන්ධ නම් _ operator එකෙන් ඒක කරන්න පුලුවන්.මේ දෙක යොදාගෙන අපි connection string එක ගොඩනගලා තියෙනවා..ඒකෙදි user name එකයි password එකයි login form එකේ text box දෙකෙන් අරන් තියෙනවා. txtuser.text එකෙන් username එකත් txtpasswd.text කියන එකෙන් password එකත් අරන් තියෙනවා.vb වල text box එකක property එකක් ගන්න නම් අදාල text box එකේ නම ගැහුවම properties ගොඩක් පෙන්නනවා. මෙතනදි අපට අවශ්‍ය වෙන්නෙ text property  එක.

ඊලග code කොටසෙන් කරලා තියෙන්නෙ connection string එකට අදාලව server එකට connect වීම. ඒ අතරතුර මොනයම් හෝ දත්තයක් වැරදීම නිසා හෝ වෙනත් හේතුවක් නිසා connection එක ගොඩ නගා ගන්න නොහැකි උනොත් programme එක terminate වෙන නිසා මෙතනදි exception handling කොටසක් යොදාගෙන තියෙනවා. ඇති දේයක් නෑ ඉතින් ;-)..try කොටස ඇතුලේ තියෙන code එක execute කරන්න try කොරලා බැරිඋනොත් වෙනදෙයක් කරන්න කියල තමයි exception handling කොටසෙන් කියන්නෙ. හරි ගියත් නැතත් කරන්න ඔනෙ දේ finally කොටසෙ ලියලා තියෙනවා.try එකේ මුලින්ම ලියලා තියෙන්න conn object එකේ open කියන method එක call කරපු එක. හරි ගියොත් හරි ;-). එහෙම උනොත් main form එක show කරනවා, වැඩේ වැරදුනොත්.එතකොට තමයි catch කොටස execute වෙන්නෙ..ඒකෙදි msg box එකක් display කරන්න code එක ලියලා තියෙන්නෙ. ඒකෙදි custom msg එකත් එක්ක exception එක ඇති වෙන්න හේතු උන error msg එක එකතුවක් විදියට පෙන්නනවා. මෙතනදි ඇති උනොත් ඇති වෙන්නේ mysql server  එකට connect වෙන්න යනකොට ඇති වෙන exception එකක ඒක නිසා exception එකේ ජාතිය mysqlexception ගනන් ගන්න එපා තෙරෙන්නෙ නැත්නම් පස්සෙ තෙරෙයි ;-). එයාට තියෙනව msg කියල property එකක් ඒකෙ තමා අදාල error msg එක තියෙන්නේ..හරිනේ..වැඩේ ඉවරයි finally conn එකේ close කියන මෙතඩ් එක call කරලා login form එක hide කරල පස්සේ ලොගින් ෆොර්ම් එක close කරනවා. වැඩේ ගොඩ.. :-D හරි නොතේරුන දෙයක් තියෙනවා නම් අහන්න දන්න විදියට කියලා දෙන්නම්කො..ඊලගට අපි bookshop එකට programme එක ටිකෙන් ටික හදමු.. ආස කෙනෙක් ඉන්නවා නම් ගැලපෙන ER - diagram එකක් ගහල එවන්න..ඒකට DB එකක් ගහලා programme එක හදමු..සැකයි ඉතින් එහෙම අය ඉදීද කියල නම්.. :-D හරි එහෙනම් ඊලග පොස්ට් එකෙන් හම්බවෙමු..:-) කරපුවා නොතේරුනා නම් video එක try කරන්න මෙතනින්.. :-)

Wednesday, June 13, 2012

vb.net එක්ක MySQL - 1st post


කොහොමද යාලුවනේ ඉතින්....කාලෙක ඉදන් blog එකක් පටන් ගන්න හිතන් හිටියට කරගන්න බැරිඋනානේ...strike එකට පින්සිද්ධ වෙන්න ඔන්න හා හා පුරා කියල පටන් ගන්නයි යන්නෙ.. දැන් ඉතින් මොනවද ලියන්නෙ.. :D ගොඩක් දෙවල් හිතේ තියෙනවා...මේ දවස් වල අපේ කට්ටිය බැහලම database ගහනවා...ඉතින් මම දන්න විදියට පොඩි sup එකක් දෙන්න හිතුවා. vb.net එක්ක mySQL හොදයි ද?..එක පාර ඔක්කොම බදා ගත්තොත් දොඩං ගොඩක් බදා ගත්තා වගේ වෙනවනේ...ඉතින් මම මුල්ම post එකෙන් අල කරගන්නෙ නැතුව MySQL install  කරගන්න හැටියි vb.net project එකක් අරන් ඒකට MySQL Database එක්ක ගනුදෙනු කරන්න ඕනේ .NET Connector එක reference එකක් විදියට දා ගන්න හැටියි කියා දෙන්නම්කෝ...

මුලින්ම එහෙනම් මේ අනං මනං ටික video එක බලලා download කර ගන්නකෝ....




දැන් එහෙනම් MySQL install කරලා දාමු නේද?...  :D




මම දන්නවා කට්ටියට vb.net තියෙන Microsoft Visual Studio එක install කරගන්න එක නම් කජු කනවා
වගේ කියලා..එක install කරද්දි මතක ඇතුව vb.net වලට ටික් එක දාන්න හොදේ.. :-) visual studio වල free දෙන express edition එක උනත් වැඩේට ඇති මෙන්න බා ගන්නවානම් ලින්කුව.

දැන් එහෙනම් vb.net වලට ගිහින් ඊලග video guide එකේ විදියට කරන්නකෝ......




හරි දැන් කට්ටියට vb.net project එකකට MySQL  වලට Reference එකක් දාගන්න හැටි තෙරෙන්න ඇතිනේ...හැබයි ඉතින් වෙන අලුත් project එකක් අරන් ඒකට MySQL code ලියලා වැඩ කරන්නෙ නෑයි කියල කියන්න එපා මොකද හැම අලුත් project එකකටම අර විදියට reference එකක් දාන්න ඕනේ හොදේ..අදට ඇති.. ;-) ඊලග post එකෙන් MySQL Database users ලත් එක්ක ගනු දෙනු කරන පොඩි programme එකක් හදමු...


කට්ටිය මගෙ උත්සාහය ගැන අදහස් පලකරනවා නම් කැමතියි...යෝජනා චෝදනා ඔක්කෝම බාර ගන්නවා..පස්සෙ හිමිහිට බැනපු comments අයින් කරන්න බැරියැ නේද?... ;-) . මට මුලින්ම MySQL GUI Tools ගැන කියා දීපු ප්‍රභාත් අයියාට (csir) ස්තූතිවන්ත වෙනවා..එත් එක්කම මගේ යාලුවෝ සෙට් එකටත්..