{"id":600,"date":"2017-02-20T20:50:58","date_gmt":"2017-02-20T17:50:58","guid":{"rendered":"http:\/\/delimuhendis.org\/?p=600"},"modified":"2022-12-20T21:34:59","modified_gmt":"2022-12-20T21:34:59","slug":"android-mysql","status":"publish","type":"post","link":"https:\/\/www.delimuhendis.org\/?p=600","title":{"rendered":"Android ile MySQL Ba\u011flant\u0131s\u0131 (Volley)"},"content":{"rendered":"<p>Merhaba arkada\u015flar bug\u00fcn sizlerle Android, PHP ve MySql kullanarak uzak sunucudaki veritaban\u0131m\u0131za kullan\u0131c\u0131 kayd\u0131 yapaca\u011f\u0131z. Bunun i\u00e7in Android&#8217;in Volley k\u00fct\u00fcphanesini kullanaca\u011f\u0131z ve bu \u015fekilde kullan\u0131c\u0131 ad\u0131 ve \u015fifre gibi de\u011ferleri web servisimize post ataca\u011f\u0131z. Web servisimiz de bu kullan\u0131c\u0131 ad\u0131na sahip ba\u015fka bir \u00fcyenin olup olmad\u0131\u011f\u0131na bakacak ve sonras\u0131nda bize &#8220;Eklendi&#8221; yada &#8220;Eklenemedi&#8221; \u015feklinde bildirimde bulunacakt\u0131r. Bu \u015fekilde bizde d\u0131\u015f d\u00fcnya ve internetle daha i\u00e7li d\u0131\u015fl\u0131 bir uygulama geli\u015ftirmi\u015f olaca\u011f\u0131z.<code><\/code><\/p>\n<p><a href=\"http:\/\/delimuhendis.org\/wp-content\/uploads\/2017\/02\/ss.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-609\" src=\"http:\/\/delimuhendis.org\/wp-content\/uploads\/2017\/02\/ss-1024x640.png\" alt=\"\" width=\"630\" height=\"394\"><\/a><\/p>\n<h3>1)Layout Tasar\u0131m\u0131<\/h3>\n<p>Android St\u00fcdyoyu a\u00e7\u0131yoruz ve <strong>MySQLBaglantisi<\/strong> adl\u0131 bir proje olu\u015fturuyoruz. Activity ismine is MainActivity ismini veriyoruz.<\/p>\n<p>Sonras\u0131nda ise activity_main.xml dosyas\u0131n\u0131 a\u00e7\u0131yoruz ve <strong>RelativeLayout<\/strong>\u2019\u0131 <strong>LinearLayout<\/strong>\u2019a \u00c7eviriyoruz. <strong>android:orientation=\u201dvertical\u201d<\/strong> diyoruz.<\/p>\n<p>Sonras\u0131nda ise \u015fu sat\u0131rlar\u0131 <strong>LinearLayout<\/strong> tagleri aras\u0131na ekliyoruz.<\/p>\n<blockquote>\n<p style=\"text-align: left;\">&lt;<strong>TextView<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_width=<\/strong><strong>&#8220;wrap_content&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_height=<\/strong><strong>&#8220;wrap_content&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:text=<\/strong><strong>&#8220;Username&#8221;<\/strong>\/&gt;<\/p>\n<p>&lt;<strong>EditText<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_width=<\/strong><strong>&#8220;match_parent&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_height=<\/strong><strong>&#8220;50dp&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:id=<\/strong><strong>&#8220;@+id\/txtUsername&#8221;<br \/>\n<\/strong><strong>android:textColor=&#8221;#111111&#8243;<br \/>\n<\/strong><strong>android<\/strong><strong>:background=<\/strong><strong>&#8220;@android:color\/background_light&#8221; <\/strong>\/&gt;<\/p>\n<p>&lt;<strong>TextView<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_width=<\/strong><strong>&#8220;wrap_content&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_height=<\/strong><strong>&#8220;wrap_content&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:text=<\/strong><strong>&#8220;Password&#8221;<\/strong>\/&gt;<\/p>\n<p style=\"text-align: left;\">&lt;<strong>EditText<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_width=<\/strong><strong>&#8220;match_parent&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_height=<\/strong><strong>&#8220;50dp&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:id=<\/strong><strong>&#8220;@+id\/txtPassword&#8221;<br \/>\n<\/strong><strong>android:textColor=&#8221;#111111&#8243;<br \/>\n<\/strong><strong>android<\/strong><strong>:background=<\/strong><strong>&#8220;@android:color\/background_light&#8221; <\/strong>\/&gt;<\/p>\n<p style=\"text-align: left;\">&lt;<strong>Button<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_width=<\/strong><strong>&#8220;match_parent&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:layout_height=<\/strong><strong>&#8220;50dp&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:id=<\/strong><strong>&#8220;@+id\/btnEkle&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:textColor=<\/strong><strong>&#8220;#000000&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:text=<\/strong><strong>&#8220;Ekle&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:background=<\/strong><strong>&#8220;#d9d9d9&#8221;<br \/>\n<\/strong><strong>android<\/strong><strong>:onClick=<\/strong><strong>&#8220;ekle&#8221; <\/strong>\/&gt;<\/p>\n<\/blockquote>\n<h3>2)K\u00fct\u00fcphanenin Projeye Eklenmesi ve \u0130zinler<\/h3>\n<p>\u015eimdi sol taraftaki Project sekmesine t\u0131kl\u0131yoruz Gradle Scripts ba\u015fl\u0131\u011f\u0131n\u0131n alt\u0131ndaki build.gradle(Module:app) dosyas\u0131n\u0131 a\u00e7\u0131yoruz ve <strong>dependencies <\/strong>b\u00f6l\u00fcm\u00fcn\u00fcn i\u00e7ine<\/p>\n<blockquote><p>compile &#8216;com.android.volley:volley:1.0.0&#8217;<\/p><\/blockquote>\n<p>ekliyoruz ve gradle.build dosyas\u0131nda de\u011fi\u015fiklik yapt\u0131\u011f\u0131m\u0131z i\u00e7in <strong>Sync Now<\/strong> butonu geliyor ekrana ve ona t\u0131kl\u0131yoruz.<\/p>\n<p>B\u00f6ylece Volley K\u00fct\u00fcphanesini projeye eklemi\u015f olduk.<\/p>\n<p>S\u0131rada bu k\u00fct\u00fcphaneyi kullanabilmek i\u00e7in internet iznini vermek gerekiyor. Bunun i\u00e7in de AndroidManifest dosyas\u0131n\u0131 a\u00e7\u0131p &lt;manifest&gt; teginin aras\u0131na a\u015fa\u011f\u0131daki izni ekliyoruz.<\/p>\n<blockquote><p>&lt;<strong>uses-permission <\/strong><strong>android<\/strong><strong>:name=<\/strong><strong>&#8220;android.permission.INTERNET&#8221; <\/strong>\/&gt;<\/p><\/blockquote>\n<h3>3)Mobilden al\u0131nan de\u011ferlerin&nbsp;web servise&nbsp;post&nbsp;edilmesi<\/h3>\n<p>MainActivity.java dosyas\u0131n\u0131 a\u00e7\u0131yoruz. A\u015fa\u011f\u0131daki fonksiyonu s\u0131n\u0131f i\u00e7ine ekliyoruz.<\/p>\n<pre>public void ekle(View view)\n{\n    EditText txtUsername=(EditText)findViewById(R.id.txtUsername);\n    EditText txtPassword=(EditText)findViewById(R.id.txtPassword);\n\n    final String username=txtUsername.getText().toString();\n    final String password=txtPassword.getText().toString();\n\n    if(username.equals(\"\")==false &amp;&amp; password.equals(\"\")==false)\n    {\n        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);\n\n        String url = \"http:\/\/DOSYAADRESI\/kaydol.php\";    \/\/ Post at\u0131lan adres.\n        StringRequest postRequest = new StringRequest(Request.Method.POST, url,\n                new Response.Listener&lt;String&gt;()\n                {\n                    @Override\n                    public void onResponse(String response) {\n                        Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();\n\n                    }\n                },\n                new Response.ErrorListener()\n                {\n                    @Override\n                    public void onErrorResponse(VolleyError error) {\n                        Toast.makeText(MainActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show();\n                    }\n                }\n        ) {\n            @Override\n            protected Map&lt;String, String&gt; getParams()\n            {\n                Map&lt;String, String&gt;  params = new HashMap&lt;String, String&gt;();\n                params.put(\"username\", username);\n                params.put(\"password\", password);\n\n                return params;\n            }\n        };\n        queue.add(postRequest);\n    }\n    else\n    {\n        Toast.makeText(MainActivity.this,\"L\u00fctfen Gerekli Alanlar\u0131 Doldurun\",Toast.LENGTH_LONG).show();\n    }\n\n}<\/pre>\n<h3><\/h3>\n<h3>4)Veritaban\u0131,Tablo olu\u015fturma ve Web Servisi(kaydol.php) Yazma<\/h3>\n<p>b\u00f6ylece \u0130\u015fin mobil uygulama taraf\u0131 tamamlan\u0131yor. Art\u0131k mobil uygulamadan att\u0131\u011f\u0131m\u0131z post istekleri kar\u015f\u0131layacak ve gerekti\u011finde veritaban\u0131na ekleyecek web servisini(yukar\u0131da post att\u0131\u011f\u0131m\u0131z kaydol.php dosyas\u0131 yani) yazaca\u011f\u0131z ve bunun i\u00e7in <strong>php<\/strong> dilini kullanca\u011f\u0131z.<br \/>\nS\u0131rada ise veritaban\u0131m\u0131z\u0131 olu\u015fturmaya geldi. MySql Workbench veya PhpMyAdmin(Hangisini kullan\u0131yorsan\u0131z) gibi ara\u00e7lar\u0131n arac\u0131l\u0131\u011f\u0131 ile Veritaban\u0131m\u0131z\u0131 ve tablomuzu olu\u015fturuyoruz.<\/p>\n<p>Veritaban\u0131m\u0131 olu\u015fturduktan sonra o veritaban\u0131na <strong>\u00fcyeler <\/strong>isimli bir tablo ekliyoruz.<\/p>\n<p>Bu tablo 3&nbsp; sutundan olu\u015fuyor <strong>id(int), username(varchar), password(varchar)<\/strong>.<\/p>\n<p><strong>\u0130d<\/strong> s\u00fctunu &nbsp;primary key, auto increment ve not null olarak i\u015faretlenmeli.<\/p>\n<p>Ayr\u0131ca <strong>username<\/strong> ve <strong>password<\/strong> s\u00fctunlar\u0131 da not null olarak i\u015faretlenmeli.<br \/>\nVe \u015fimdi kaydol.php diye bir dosya olu\u015fturuyoruz, ard\u0131ndan da a\u015fa\u011f\u0131daki kodlar\u0131 dosyaya ekliyoruz.<\/p>\n<p><strong>kaydol.php&nbsp;<\/strong><\/p>\n<pre><code>\n&lt;?php\n        $username=$_POST[\"username\"];\n        $password=$_POST[\"password\"];\n       \n        $servername = \"Sunucu Adresin\";         \/\/ Veritaban\u0131 adresi yada ip'si yer almal\u0131\n        $user = \"Veritaban\u0131 Kullan\u0131c\u0131s\u0131\";            \/\/ bu alanda ise veritaban\u0131n\u0131n kullan\u0131c\u0131 ad\u0131 yer almal\u0131.\n        $pass = \"Veritaban\u0131 kullan\u0131c\u0131 \u015fifresi\";     \/\/ bu alanda veritaban\u0131 kullan\u0131c\u0131 \u015fifresi yer almal\u0131.\n        $dbname = \"Veritaban\u0131 ad\u0131\";                  \/\/ bu alanda veritaban\u0131 ad\u0131 yer almal\u0131\n        $isExist=false;\n \n \n        $conn = new mysqli($servername, $user, $pass, $dbname);\n        if ($conn-&gt;connect_error)\n        {\n            die(\"Connection failed: \" . $conn-&gt;connect_error);\n        }\n        $sql = \"SELECT * FROM uyeler where username='$username'\";\n        $result = $conn-&gt;query($sql);\n \n        if ($result-&gt;num_rows &gt; 0)\n        {\n                $isExist=true;\n                $conn-&gt;close();\n                echo 'B\u00f6yle bir kullan\u0131c\u0131 zaten mevcut';\n        }\n        else\n        {\n            $conn-&gt;close();\n            $conn2 = new mysqli($servername, $user, $pass, $dbname);\n           if ($conn2-&gt;connect_error)\n            {\n                die(\"Connection failed: \" . $conn2-&gt;connect_error);\n            }\n            $sql2 = \"INSERT INTO uyeler (username, password) VALUES ('$username', '$password')\";\n            if ($conn2-&gt;query($sql2) === TRUE)\n            {\n                echo \"Kullan\u0131c\u0131 ba\u015far\u0131yla kaydedildi!\";\n            }\n            else\n            {\n                echo \"Error: \" . $sql2 . \"&lt;br&gt;\" . $conn2-&gt;error;\n            }\n            $conn2-&gt;close();\n        }\n    ?&gt;\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba arkada\u015flar bug\u00fcn sizlerle Android, PHP ve MySql kullanarak uzak sunucudaki veritaban\u0131m\u0131za kullan\u0131c\u0131 kayd\u0131 yapaca\u011f\u0131z. Bunun i\u00e7in Android&#8217;in Volley k\u00fct\u00fcphanesini&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[40,272,404,457,506,511,606,608],"class_list":["post-600","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programlama","tag-android","tag-http","tag-mysql","tag-post","tag-servis","tag-signup","tag-volley","tag-web"],"_links":{"self":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts\/600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=600"}],"version-history":[{"count":1,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts\/600\/revisions"}],"predecessor-version":[{"id":1414,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts\/600\/revisions\/1414"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/media\/1409"}],"wp:attachment":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}