>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Android com Mysql - Erro ao inserir na tabela do postgres


Olá,

Estou fazendo o curso cujo nome segue em assunto deste, está me exibindo um erro na hora em que vai fazer o insert no banco que no meu caso utilizo postgres.
Obs: Estou realizando o insert pelo navegador e o mesmo está funcionando perfeitamente, me retornando OK ou ERRO.

Segue código PHP



$nome = $_GET["nome"];
$email = $_GET["email"];


//$conn = new pg_connect("localhost", "postgres", "asd1833", "rlsystem");
$conn = pg_connect("host=localhost port=5432 dbname=rlsystem user=postgres password=asd1833");

$result = pg_query($conn, "INSERT INTO cliente (nome, email) VALUES('$nome', '$email')");

$linha = pg_affected_rows($result);
if($linha > 0){
print "OK";
}else{
print "ERRO";
}

pg_close($conn);
?>


Segue código CadastroActivity.java

package androidcommysql.rlsystem.com.br.androidcommysql;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class CadastroActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro);

Button btnCadastro2 = (Button) findViewById(R.id.btnCadastro2);
btnCadastro2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v){

try {
EditText txtNome = (EditText) findViewById(R.id.edtnome);
EditText txtEmail = (EditText) findViewById(R.id.edtemail);

StringBuilder strURL = new StringBuilder();
strURL.append("http://192.168.2.104:8081/inserir.php?");

strURL.append("nome=");
strURL.append(URLEncoder.encode(txtNome.getText().toString(), "UTF-8"));

strURL.append("&email=");
strURL.append(URLEncoder.encode(txtEmail.getText().toString(), "UTF-8"));

new HttpRequest().execute(strURL.toString());
}catch (Exception ex){

}

}
});

}
//HttpRequest pode ser chamada de qualquer outro nome;
private class HttpRequest extends AsyncTask{

@Override
protected String doInBackground(String... params) {
String retorno = null;
try {
String urlHttp = params[0];
URL url = new URL(urlHttp);
HttpURLConnection http = (HttpURLConnection) url.openConnection();

//Lendo objeto
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader bfr = new BufferedReader(ips);
retorno = bfr.readLine();

} catch (Exception ex) {

}
return retorno;
}

@Override
protected void onPostExecute(String result){

if(result.equals("OK"))
{
Toast.makeText(getBaseContext(), "Cadastrado com sucesso!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getBaseContext(), "Erro ao cadastrar!", Toast.LENGTH_SHORT).show();
}
}

}

}



Segue abaixo o erro que exibe no log:

05-02 00:13:29.610 9086-9086/androidcommysql.rlsystem.com.br.androidcommysql E/AndroidRuntime: FATAL EXCEPTION: main
Process: androidcommysql.rlsystem.com.br.androidcommysql, PID: 9086
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at androidcommysql.rlsystem.com.br.androidcommysql.CadastroActivity$HttpRequest.onPostExecute(CadastroActivity.java:77)
at androidcommysql.rlsystem.com.br.androidcommysql.CadastroActivity$HttpRequest.onPostExecute(CadastroActivity.java:53)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
05-02 00:18:17.806 13414-13440/androidcommysql.rlsystem.com.br.androidcommysql E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb4098200



Poderia me ajudar com este erro?

Obrigado!



3 Respostas


Olá

Ele esta cadastrando?




Quando eu faço a inserção pelo Android não insere.




Consegui aqui, não mudei absolutamente nada no código, fui mexer agora no projeto e consegui inserir o registro normalmente.