Ya hago la conexion entre PHP y Oracle de hecho puedo agregar datos a Orackle desde PHP, pero cuando intento pasar datos entre Android y Oracle, parece ser que NO pasa los datos. Bueno NO los pasa por que NO marca error alguno en el Log.
Espero que me puedan ayudar por favor.
Este es mi script php, que se conecta con Oracle y debería agregar datos a Oracle.
Código PHP:
<?php
$conn = oci_connect('epc_cms', 'cmsdev', 'x.x.x.x:1521/SERVICE_NAME');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
die();
}
/* preparamos la sentencia sql
* como observan he declarado dos paramentros en la sentencia sql
* que comienzan con dos puntos(:) para que oci_bind_by_name
* los reconozca y reciba los datos.
*/
$st= oci_parse($conn, "INSERT INTO PORTADOR (ID,CREDENCIAL,DESTINO,FECHA,HORA,STAMPT,NICK,UBICACION,VISIBLE) VALUES (:id,:credencial,:destino,:fecha,:hora,:stampt,:nick,:ubicacion,:visible)");
//variables con los datos que vamos a utilizar
$id='';
$credencial=$_POST['credencial'];
$destino=$_POST['destino'];
$fecha=$_POST['fecha'];
$hora=$_POST['hora'];
$stampt=$_POST['stampt'];
$nick=$_POST['nick'];
$ubicacion=$_POST['ubicacion'];
$visible=$_POST['visible'];
/* Con oci_bind_by_name vinculamos nuestra variable en php
* con el parametro en la sentencia sql que hemos utilizado */
oci_bind_by_name($st, ":id", $nombres);
oci_bind_by_name($st, ":credencial", $credencial);
oci_bind_by_name($st, ":destino", $destino);
oci_bind_by_name($st, ":fecha", $fecha);
oci_bind_by_name($st, ":hora", $hora);
oci_bind_by_name($st, ":stampt", $stampt);
oci_bind_by_name($st, ":nick", $nick);
oci_bind_by_name($st, ":ubicacion", $ubicacion);
oci_bind_by_name($st, ":visible", $visible);
//ejecutamos la sentencia sin hacer commit en Oracle.
$ex=oci_execute($st, OCI_NO_AUTO_COMMIT);
//Verificamos si no hubo problema con la sentencia sql
if (!$ex){
$error= oci_error($st);
//si hubo error regresamos los cambios hechos con oci_rollback
oci_rollback($conn);
echo "ERROR: ".$error["message"];
}else{
//si todo esta bien ejecutamos todos los cambios con oci_commit
oci_commit($conn);
echo "termino";
}
//cerramos la conexion.
oci_close($conn);
?>
Código:
Espero que me puedan ayudar de veradad, NO se donde esta el error....Gracias y bendiciones de antemano. public class oracle extends Activity { @SuppressWarnings("unused") private Activity activity; private DataBaseManager manager; private Cursor cursor;//,cursor1; public Connection conexion; Statement stmt = null; public String driver; private Button insert; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); activity=this; setContentView(R.layout.oracle); //Pongo en marcha el Hilo en segundo plano insert=(Button)findViewById(R.id.insert); insert.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub new Insertar(oracle.this).execute(); } }); } private boolean insertar(){ manager = new DataBaseManager(oracle.this); //Acemos conexion con el servidor php HttpClient httpclient; List<NameValuePair> nameValuePairs; HttpPost httppost; httpclient=new DefaultHttpClient(); httppost= new HttpPost("http://10.60.143.124/SISCOM/insert.php"); // Url del Servidor System.out.println("Se conecto al Apache Service...."); ////////PASANDO DATOS BASE PORTADOR////// cursor = manager.cargaCursorPortador(); if (cursor.moveToFirst()){ do{ String IDW = cursor.getString(0); String CRE = cursor.getString(1); String DES = cursor.getString(2); String FE = cursor.getString(3); String HO = cursor.getString(4); String ST = cursor.getString(5); String NI = cursor.getString(6); String UB = cursor.getString(7); String VI = cursor.getString(87); System.out.println("ID: "+IDW+" Credencial: "+CRE+" Destino: "+DES+" Fecha "+FE+" Hora "+HO+" STAMPT "+ST+" Nick "+NI+" Ubicacion "+UB+" Visible "+VI); //Añadimos nuestros datos nameValuePairs = new ArrayList<NameValuePair>(8); nameValuePairs.add(new BasicNameValuePair("id",IDW)); nameValuePairs.add(new BasicNameValuePair("credencial",CRE)); nameValuePairs.add(new BasicNameValuePair("destino",DES)); nameValuePairs.add(new BasicNameValuePair("fecha",FE)); nameValuePairs.add(new BasicNameValuePair("hora",HO)); nameValuePairs.add(new BasicNameValuePair("stampt",ST)); nameValuePairs.add(new BasicNameValuePair("nick",NI)); nameValuePairs.add(new BasicNameValuePair("ubicacion",UB)); nameValuePairs.add(new BasicNameValuePair("visible",VI)); try { httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpclient.execute(httppost); return true; } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; }while(cursor.moveToNext()); }else{ System.out.println("No hay datos en la consulta DE PORTADOR");} // Toast.makeText(this, "No hay datos en la consulta DE PORTADOR",Toast.LENGTH_SHORT).show();} return false; } //AsyncTask para insertar Personas class Insertar extends AsyncTask<String,String,String>{ private Activity context; Insertar(Activity context){ this.context=context; } @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub if(insertar()) context.runOnUiThread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub Toast.makeText(context, "Script corrio con Exito.", Toast.LENGTH_LONG).show(); } }); else context.runOnUiThread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub Toast.makeText(context, "Scripst NO corrio con Exito", Toast.LENGTH_LONG).show(); } }); return null; } } }