Visualizzazione stampabile
-
ovviamente con i permessi intendevo questa riga
codice:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
comunque controlla meglio, perchè nonostante non abbia mai lavorato con database microsoft, mi sembra strano che per accedere sia richiesta solo una password. Controlla meglio.
-
Ciao a tutti ho abbandonato il primo netodo che usa jdbc ora sto provando con il php,ho creato lato php questo script:
codice:
<?php
$pw = "gmpa";
require_once ("config.php");
$variab = $_REQUEST['VARIABLE'];
$cn = new COM("ADODB.Connection") or die("Cannot start ADO");
$cn->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Jet OLEDB:Database Password=gmpa;Data Source=C:\Users\Paolo\Dropbox\Programmazione\c#\dati.mdb;");
//$query = "SELECT * FROM table WHERE (Variable = '".$variab."')";
$query = "SELECT * FROM WHERE (Variable = '".$variab."')";
$data = $cn->Execute($query);
while (!$data->EOF)
{
echo $data ->Fields[0]->value . ":";
//echo $data ->Fields[1]->value . " \n";
$data ->MoveNext();
}
?>
e ho verificato e funziona.
Poi nel lato android ho fatto direttamente nella mia activity principale una cosa semlicissima per vedere se funzionava il collegamento ma non va mi dice problem connection,come menzionato nel blocco try cach. DOVE SBAGLIO devo mettere il tutto in un blocco asynkTask?
codice:
package com.example.access;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
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.apache.http.params.HttpConnectionParams;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String pippo = "tipipag";
connect_access(pippo);
}
public void connect_access(String vars)
{
List<NameValuePair> itemstring = new ArrayList<NameValuePair>();
itemstring.add(new BasicNameValuePair("VARIABLE", vars));
HttpClient httpclient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 10000);
try
{
HttpPost httppost = new HttpPost("http://10.0.2.2:8080/access/provaRicerca.php");
//HttpPost httppost = new HttpPost("localhost/access/provaRicerca.php");
httppost.setEntity(new UrlEncodedFormEntity(itemstring));
HttpResponse response = httpclient.execute(httppost);
InputStream content = response.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String s;
while ((s = buffer.readLine()) != null) {
Toast.makeText(getApplicationContext(),
"Valori tapipag: " + s,
Toast.LENGTH_LONG).show();
}
}catch (Exception e) {
Toast.makeText(getApplicationContext(),"Connection Problem !", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}
Questo è il Manifest:
codice:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.access"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
-
Quote:
Originariamente inviato da
nio74android
e ho verificato e funziona.
Ci stai facendo uno scherzetto, oppure questo è un test?
codice:
$query = "SELECT * FROM WHERE (Variable = '".$variab."')";
La query è sbagliata!
Dobrebbe essere qualcosa del tipo
$query = "SELECT * FROM Tabella! Ho detto Tabella! WHERE (Variable = '".$variab."')";
-
Ragazzi scusate ho avuto un po di problemi fisici.Allora ho fatto lo script php cosi,
codice:
<?php
$pw = "gmpa";
$variab = $_REQUEST['VARIABLE'];
$cn = new COM("ADODB.Connection") or die("Cannot start ADO");
$cn->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Jet OLEDB:Database Password=gmpa;Data Source=C:\Users\Paolo\Dropbox\Programmazione\c#\dati.mdb;");
//$query = "SELECT * FROM table WHERE (Variable = '".$variab."')";
$query = "SELECT * FROM $variab";
$data = $cn->Execute($query);
while (!$data->EOF)
{
echo $data ->Fields[0]->value . " : ";
//echo $data ->Fields[1]->value . " \n";
$data ->MoveNext();
}
?>
Poi sto tentando di capire bene come fare la classe asynktask,volevo far si che si vedesse il risultato in un toast,ma nonriesco a capire come passare il valore del risultato che ho ciclato nel metodo doInBackground nel metodo onpostexecute.Forse dovrei ciclarlo nel onPostExecute?
vi posto il codice
codice:
package com.example.access;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
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.apache.http.params.HttpConnectionParams;
import android.app.Activity;
import android.app.Application;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
String s = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
TaskAsincrono mAuthTask = null;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String vars="tipipag";
mAuthTask = new TaskAsincrono();
mAuthTask.execute(vars);
}
public class TaskAsincrono extends AsyncTask<String, Void, String>{
public String doInBackground(String... params) {
//qui andrebbe controllata la validità del dato
String vars=params[0];
List<NameValuePair> itemstring = new ArrayList<NameValuePair>();
itemstring.add(new BasicNameValuePair("VARIABLE", vars));
HttpClient httpclient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 10000);
try
{
HttpPost httppost = new HttpPost("http://10.0.2.2/access/provaRicerca.php");
httppost.setEntity(new UrlEncodedFormEntity(itemstring));
HttpResponse response = httpclient.execute(httppost);
InputStream content = response.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
while ((s = buffer.readLine()) != null) {
System.out.println("questo è il risultato "+s);
}
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), "risultato"+result, Toast.LENGTH_LONG).show();
}
}
}
il logcat dimostra che funziona il collegamento(vi mostro il risultato del "System.out.println("questo è il risultato "+s);"
codice:
09-06 05:28:18.053: I/System.out(533): questo è il risultato <Utente> : 30 : 30 fm : 60 : 60 fm : 30 60 : 30 60 fm : 60 90 : 60 90 fm : 30 60 90 : 30 60 90 fm : 30 60 90 120 : 30 60 90 120 fm : 30...150 : 30...150 fm : 30...150 180 : 30...150 180 fm : 60 90 120 : 60 90 120 fm : Rimessa Diretta :
-
Ci sono riuscito tramite degli amici di un'altro forum ma vorrei postare come ho fatto in modo da poter aiutare chi come me ha avuto difficoltà,allora ho dichiarato una variabile al difuori del wile e po all'interno del wile ho assegnato il valore del ciclo ad essa per poi far il return ad essa,forse è meglio che vi posto il codice cosi capite meglio.
codice:
package com.example.access;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
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.apache.http.params.HttpConnectionParams;
import android.app.Activity;
import android.app.Application;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
String s = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
TaskAsincrono mAuthTask = null;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String vars="tipipag";
mAuthTask = new TaskAsincrono();
mAuthTask.execute(vars);
}
public class TaskAsincrono extends AsyncTask<String, String, String>{
public String doInBackground(String... params) {
//qui andrebbe controllata la validità del dato
String vars=params[0];
List<NameValuePair> itemstring = new ArrayList<NameValuePair>();
itemstring.add(new BasicNameValuePair("VARIABLE", vars));
HttpClient httpclient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 10000);
//Imposto la stringa da passare come risultato
String str = null;
try
{
HttpPost httppost = new HttpPost("http://10.0.2.2/access/provaRicerca.php");
httppost.setEntity(new UrlEncodedFormEntity(itemstring));
HttpResponse response = httpclient.execute(httppost);
InputStream content = response.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
while ((s = buffer.readLine()) != null) {
// assegno il risultato a str
str += s;
//System.out.println("questo è il risultato "+s);
}
}catch (Exception e) {
e.printStackTrace();
}
//passo il risultato al return in modo che
//il result del onPostExecute lo legga
return str;
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), "risultato"+result, Toast.LENGTH_LONG).show();
}
}
}