2015-01-21 6 views
1

Так что я действительно новичок в этом. Я следовал учебнику по сети, в котором показано, как подключить эти два. Но все, что я делаю, просто прыгает, чтобы поймать часть, и в ней говорится: «Нет связи». Что мне не хватает? Я также подключаюсь к http-серверу для использования PHP-скрипта, который запрашивает имя пользователя и пароль из базы данных.Подключение Android к MySQL

try 
    { 
     nameValuePairs = new ArrayList<NameValuePair>(); 

     nameValuePairs.add(new BasicNameValuePair("username", username)); 
     nameValuePairs.add(new BasicNameValuePair("password", password)); 

     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     response = httpClient.execute(httpPost); 

     if(response.getStatusLine().getStatusCode()==200) 
     { 
      entity = response.getEntity(); 

      if(entity != null) 
      { 
       InputStream instream = entity.getContent(); 

       JSONObject jsonResponse = new JSONObject(instream.toString()); 

       String retUser = jsonResponse.getString("upime"); 
       String retPass = jsonResponse.getString("geslo"); 

       if(username.equals(retUser) && password.equals(retPass)) 
       { 
        SharedPreferences sp = getSharedPreferences("logindetails", 0); 

        SharedPreferences.Editor spedit = sp.edit(); 

        spedit.putString("upime", username); 
        spedit.putString("geslo", password); 

        spedit.commit(); 

        Toast.makeText(getBaseContext(), "Login successful", Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        Toast.makeText(getBaseContext(), "Failed to login", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Toast.makeText(getBaseContext(), "No connection", Toast.LENGTH_LONG).show(); 
    } 
+0

можете использовать дать мне выход, когда "Нет подключения" не заменяется e.getMessage() –

+0

Если я использую e.getMessage() вместо строки «Нет соединения»? – Polkovnik

+0

что вы получаете? –

ответ

0
<?php 
header('Content-Type: application/json'); 
$dbhost ="localhost"; 
$dbuser = "username"; 
$dbpass = "password"; 
$dbdb = "db"; 
$connect = mysql_connect($db_host, $dbuser, $dbpass) or die("connection error"); 

mysql_select_db($dbdb); 
$username =$_POST['username']; 
$password=$_POST['password']; 
$query = mysql_query("SELECT * FROM users WHERE user='$username' AND pass='$password'"); 

    $num = mysql_num_rows($query); 
if($num == 1) 
{ 
while($list=mysql_fetch_assoc($query)) 
{ $output = $list; 
} 
    mysql_close(); 


echo json_encode($output); 


?> 

редактировать окончательный "echou" к эхо и добавить

header('Content-Type: application/json'); 
+0

Теперь, если это правильно, я думаю, у меня есть тонна «ошибок» в коде Java. – Polkovnik

+0

Вы должны отлаживать, а в другом месте это не удается – Badulake

+0

Да, так и было. Большое спасибо! – Polkovnik

0

Необходимо создать веб-сервис, в котором написан PHP-код. веб-сервисом может быть мыло и отдых. и вы должны написать URL-адрес веб-службы в http-клиентском объекте.

Посредством этого вы можете подключиться android и mysql.

HttpPost postD=new HttpPost("url"); 
+0

У меня есть это написано прямо перед предложением try. 'httpClient = new DefaultHttpClient(); httpPost = новый HttpPost ("script.php"); – Polkovnik

0

Вы дали разрешение в Интернете в манифесте андроида?

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

Да, я дал разрешение. – Polkovnik

+0

напишите свой php-код здесь. Вы устанавливаете json как заголовок возвращаемых значений в PHP? header ('Content-Type: application/json'); – Badulake

+0

' ' Где я должен установить json в качестве заголовка? – Polkovnik