الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أتصل بقاعدة بيانات أنشأتها على موقع استضافة ؟

بدأه هدف الشمالي في 9 نوفمبر 2011 · 12 رد · 3,530 مشاهدة · في Android
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

كيف أتصل بقاعدة بيانات أنشأتها على موقع استضافة , ومعلوماتها كالتالي :

رابط استضافتي : http://daawah.ga2h.com or http://www.daawah.ga2h.com

نوع قاعدة البيانات التي أنشأتها : MySQL

اسم قاعدة البيانات التي أنشأتها : ganna_9543495_asd2791

وطبعاً لهذه القاعدة اسم مستخدم وكلمة مرور وهما موجدان لدي ,

وطلبي من الأساتذة الأفاضل طريقة الاتصال بهذه القاعدة وعمل العمليات التالية عليها :

إضافة جدول

إضافة بيانات للجدول

استعلام

حذف

تعديل

#2

السلام عليكم ..

بعد الدخول إلى cpanel ..تجد mysql databases تجد قواعد البيانات التي أنشأتها و بجانب كل واحدة رابط admin تدخل عليه و منه يمكنك إنشاء جداول و كتابة استعلامات ..

و بعد إنشاء القاعدة يعطيك اسم السيرفر على الشكل Server: sql306.byetcluster.com via TCP/IP و كذلك اسم المستخدم و كلمة المرور ترسل عند التسجيل إلى الايميل ..

أما الاتصال عليها خارجيا .. فهي باعتقادي اصبحت كأي قاعدة عادية ...نكتب الكود في php ... مع ادخال اسم السيرفر و القاعدة و اسم المستخدم و كلمة المرور ...(جرب أن يكون الكود على موقع الاستضافة و ليس على موقع آخر تجنبا للمشاكل)

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 9 نوفمبر 2011 في 16:27

2

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

الله يعطيك ألف عافيه

وجدت سيرفر القاعدة عندي بهذا الشكل : sql113.byetcluster.com

وأنا أريد الإتصال بالقاعدة عن طريق تطبيق جوال android ولاأعرف الخطوات المطلوبة ؟؟؟

قبل فترة وجدت في هذا القسم موضوع : (مشكلة في مثال لقاعدة بيانات sqllit) على الرابط :

/index.php?showtopic=248522

وقد شغلت التطبيق على المحاكي وشغال معي تمام , فهل إذا عدلت هالمشروع ووضعت sql113.byetcluster.com بدل عنوان القاعدة التي

في المشروع السابق سيشتغل معي تمام ؟؟

تم تعديل هذه المشاركة بواسطة هدف الشمالي في 9 نوفمبر 2011 في 17:04

#4

الإتصال بقاعده البيانات ال sqlite مختلف عن الاتصال بقاعده بيانات خارجية ، لذلك بالطبع لن يشتغل الكود معك الكود

للإتصال بقاعده بيانات خارجية يجب عليك بعد عمل قاعده البانات ، إنشاء صفحة php او jsp او .... على السرفر الخاص بك، مهمة هذا الصفحة هى الاتصال بقاعده البانات واسترجاع المعلومات

من تطبيق الاندرويد ، تقوم بالاتصال بتلك الصفحة (HttpPost) و استخراج البانات

هذا الموضوع يشرح العملية يالتفصيل ،

Connect to MySQL from Android

1
#6

ياإخوان مافيه حل لتبادل المعلومات عبر الانترنت فيما بين التطبيقات غير هذه الطريقة .

#7

عندك ثلاث حلول

1- استتخدام صفحه انترنت PHP or ASP or whatever ترسلها الاستعلام او الاضافه او اي شي على شكل Header request المثال بالاعل

2- عن طريق ويب سيرفيس

30 عن طريق السوكيت ... والسوكت مشاكله كثير

1
#8

أشكر جميع من شارك في الموضوع وأتمنى مساعدتي في المشكلة التي تواجهني الآن

أولًا عملت القاعدة وعملت صفحة php للإستعلام منها واسم الصفحة getAllPeopleBornAfter2.php

وهي على الرابط التالي :

http://daawah.atspace.co.uk/getAllPeopleBornAfter2.php

وعند زيارتها يتم عرض نتيجة الاستعلام بدون مشاكل , أنظر الصورة التالية :

e4f76c72ec.png

أظن الآن كل شيء تمام في السيرفر ولكن لما أشغل التطبيق على الـ AVD التالي :

1bee61cb8f.png

يتم طباعة التالي في الـ console :

589440a9c9.png

وفي الـ logcat تتم طباعة التالي :

c9dff2dd77.png

بعد كذا حاولت أشغل التطبيق على AVD آخر وشغلته على الـ AVD التالي :

79898014fe.png

وتمت طباعة النتيجة التالية في الـ console :

cf60c81477.png

كما تجدون كامل التطبيق في المرفقات وشكرًا سلفًا على المساعدة [/connctdb.7z

تم تعديل هذه المشاركة بواسطة هدف الشمالي في 13 نوفمبر 2011 في 22:10

#9

السلام عليكم ...

لحل الخطأ الأول :

Unable to resolve host "<XXX>"; No address associated with hostname

قم بإضافة السطر ..

<uses-permission android:name="android.permission.INTERNET" />

في الملف AndroidManifest.xml قبل </manifest> مباشرة ..ثم قائمة Project ثم Clean ثم قائمة Project ثم Build Project ..

أما الأخطاء التالية فهي .. ناتجة عن الإميوليتور .. اغلقه و اغلق الإكليبس و (قم بإعادة تشغيل الحاسب) .. ثم ..في الــ Eclipse قائمة Window ثم ADV Manager ثم تحدد الجهاز المطلوب ثم Start..(لو أردت إعدادت جيدة له ممكن أرسلها لك) .... و نتركه حتى يظهر القفل على الشاشة ثم نفتحة و نضغط على زر الــ Home .. ثم عندما نريد تشغيل التطبيق .. نقرة يمينية Run As ثم Android Application و كل مرة كذلك دون إغلاق الأميوليتور ... فقط نضغط رز الــ Home على الــ Emulator ثم على المشروع Run As ..Android Application (لأن إقلاعه بطئ جدا..)

مشكلة أخرى أن الرابط الذي ارسلته لنا يعطي أول سطر من الصفحة :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 
4.01 Transitional//EN">

و كذلك أسطر الــ HTML و الــ head و الــ Title ...

و هذا يسبب خطأ .. و يمكن رؤية ذلك بعرض مصدر الصفحة من المتصفح ...

خطأ آخر في الكود و الصحيح هو :

 is = entity.getContent();

و ليس كما كتبت أنت لأن is متحول على مستوى الصف Data Member in class ..

و الكود كاملا و هو يعمل :

package com.connctdb;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ConnctdbActivity extends Activity
{
	InputStream is;
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.main);

    	String result = "";
  	//the year data to send
  	//ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  	//nameValuePairs.add(new BasicNameValuePair("year","1980"));

  	//http post
  	try{
		  Log.i("start " , "GGGGGGGGG");	
		  HttpClient httpclient = new DefaultHttpClient();
          	HttpPost httppost = new HttpPost("http://daawah.atspace.co.uk/getAllPeopleBornAfter2.php");
          	//httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
          	HttpResponse response = httpclient.execute(httppost);
          	HttpEntity entity = response.getEntity();
          	is = entity.getContent();

  	}catch(Exception e){
          	Log.e("log_tag", "Error in http connection "+e.toString());
  	}
	//convert response to string
  	try{
		  //BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
		  BufferedReader reader = new BufferedReader(new InputStreamReader(is));
          	StringBuilder sb = new StringBuilder();
          	String line = null;
          	for(int i = 0 ; i < 7 ; i ++)
        		  Log.i("DDD" , reader.readLine());
          	Log.i("DDD" , "MMM");
          	while ((line = reader.readLine()) != null) {
        		  line.replaceAll("</head>", "");
        		  Log.i("DDD" , line);
                  	sb.append(line + "\n");
                 	break;
          	}
          	is.close();

          	result=sb.toString();
          	Log.i("DD", result);
         	}catch(Exception e){
          	Log.e("log_tag", "Error converting result "+e.toString());
  	}

  	//parse json data
  	try{
          	JSONArray jArray = new JSONArray(result);
          	for(int i=0;i<jArray.length();i++){
                 	JSONObject json_data = jArray.getJSONObject(i);
                  	Log.i("log_tag","id: "+json_data.getInt("id")+
                          	", name: "+json_data.getString("name")+
                          	", tybe: "+json_data.getInt("tybe")+
                          	", birthyear: "+json_data.getInt("birthyear")
                  	);
          	}

  	}catch(JSONException e){
          	Log.e("log_tag", "Error parsing data "+e.toString());
  	}
	}
}

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 14 نوفمبر 2011 في 02:42

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#10

وأنا أخوك بعد إضافة <uses-permission android:name="android.permission.INTERNET" /> لملف AndroidManifest

وتعديل السطر

 InputStream is = entity.getContent();

إلى

 is = entity.getContent();

حصل معي التالي :

797d5f1b22.png

تم تعديل هذه المشاركة بواسطة هدف الشمالي في 15 نوفمبر 2011 في 13:21

#11

السلام عليكم .. أخي الأسطر السبعة الأولى في الصفحة:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; 
charset=ISO-8859-1"
http-equiv="content-type">
<title>getAllPeopleBornAfter2</title>

لا يمكن إدخالها إلى الــ JSON لأنها ليست بالتنسيق المطلوب .. فإما حذفها من الصفحة أو عدم قرائتها كما فعلت انا بالكود :

for(int i = 0 ; i < 7 ; i ++)
                      	Log.i("DDD" , reader.readLine());

و كذلك كلمة </head> تأتي في نفس سطر البيانات لذلك يجب التخلص منها .. ارجع للكود في مشاركتي فهو يعمل ..

بالتوفيق ..

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 14 نوفمبر 2011 في 17:40

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#12

شكر خاص لك houssam11350_11350

وشكرًا للجميع , الحمد لله العملية تمت ,,,,

تم تعديل هذه المشاركة بواسطة هدف الشمالي في 15 نوفمبر 2011 في 00:14

#13

بعد اذنك ممكن شرح الطريقة الثانية الويب سيرفيس

مواضيع مشابهة