2
I’m trying to display a string value in a textview via a query in sqlite, but when I run the code a numeric log of the Android sqlite class is displayed randomly. I’m just trying to display the string as the field value in textview.
Follows class of database:
public class DatabaseHelper extends SQLiteOpenHelper {
//nome do banco de dados
public static final String DATABASE_NAME = "banco.db";
//tabelas referentes as seções de produtos
public static final String TABLE_1 = "produto_1";
public static final String TABLE_2 = "produto_2";
public static final String TABLE_3 = "produto_3";
public static final String TABLE_4 = "produto_4";
public static final String TABLE_5 = "produto_5";
//colunas da tabela de produto 1
public static final String TABLE_1_C_ID = "id_produto_1";
public static final String TABLE_1_C_QTD = "quantidade_produto_1";
//colunas da tabela de produto 2
public static final String TABLE_2_C_ID = "id_produto_2";
public static final String TABLE_2_C_QTD = "quantidade_produto_2";
//colunas da tabela de produto 3
public static final String TABLE_3_C_ID = "id_produto_3";
public static final String TABLE_3_C_QTD = "quantidade_produto_3";
//colunas da tabela de produto 4
public static final String TABLE_4_C_ID = "id_produto_4";
public static final String TABLE_4_C_QTD = "quantidade_produto_4";
//colunas da tabela de produto 5
public static final String TABLE_5_C_ID = "id_produto_5";
public static final String TABLE_5_C_QTD = "quantidade_produto_5";
public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
    SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(
            "create table "
            + TABLE_1
            + "(id_produto_1 INTEGER PRIMARY KEY AUTOINCREMENT, quantidade_produto_1 TEXT) "
    );
    db.execSQL(
            "create table "
                    + TABLE_2
                    + "(id_produto_2 INTEGER PRIMARY KEY AUTOINCREMENT, quantidade_produto_2 TEXT) "
    );
    db.execSQL(
            "create table "
                    + TABLE_3
                    + "(id_produto_3 INTEGER PRIMARY KEY AUTOINCREMENT, quantidade_produto_3 TEXT) "
    );
    db.execSQL(
            "create table "
                    + TABLE_4
                    + "(id_produto_4 INTEGER PRIMARY KEY AUTOINCREMENT, quantidade_produto_4 TEXT) "
    );
    db.execSQL(
            "create table "
                    + TABLE_5
                    + "(id_produto_5 INTEGER PRIMARY KEY AUTOINCREMENT, quantidade_produto_5 TEXT) "
    );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(
            "DROP TABLE IF EXISTS " + TABLE_1 + TABLE_2 + TABLE_3 + TABLE_4 + TABLE_5);
    onCreate(db);
}
//insere dados na tabela 1
public boolean insereDados_na_TABLE_1(String quantidade_1)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValue = new ContentValues();
    contentValue.put(TABLE_1_C_QTD , quantidade_1);
    long resultado = db.insert(TABLE_1, null, contentValue);
    if(resultado == -1)
        return false;
    else
        return true;
}
//insere dados na tabela 2
public boolean insereDados_na_TABLE_2(String quantidade_2)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValue = new ContentValues();
    contentValue.put(TABLE_2_C_QTD, quantidade_2);
    long resultado = db.insert(TABLE_2, null, contentValue);
    if(resultado == -1)
        return false;
    else
        return true;
}
//insere dados na table 3
public boolean insereDados_na_TABLE_3(String quantidade_3)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValue = new ContentValues();
    contentValue.put(TABLE_3_C_QTD, quantidade_3);
    long resultado = db.insert(TABLE_3, null, contentValue);
    if(resultado == -1)
        return false;
    else
        return true;
}
//insere dados na table 4
public boolean insereDados_na_TABLE_4(String quantidade_4)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValue = new ContentValues();
    contentValue.put(TABLE_4_C_QTD, quantidade_4);
    long resultado = db.insert(TABLE_4, null, contentValue);
    if(resultado == -1)
        return false;
    else
        return true;
}
//insere dados na table 5
public boolean insereDados_na_TABLE_5(String quantidade_5)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValue = new ContentValues();
    contentValue.put(TABLE_5_C_QTD, quantidade_5);
    long resultado = db.insert(TABLE_5, null, contentValue);
    if(resultado == -1)
        return false;
    else
        return true;
}
//////////////para pegar todos os dados inseridos
//table 1
public Cursor pegaTodosDados_1(){
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res1 = db.rawQuery("select * from " +TABLE_1+ " ORDER BY " + TABLE_1_C_ID + " DESC LIMIT 1", null);
    return res1;
    //res1.moveToLast(res1.toString());
}
follows the view:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical"
    tools:context=".produtoActivity"
    >
<TextView
   android:id="@+id/ProdutoSelecionado"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:textStyle="bold"
   android:textSize="18dp"
    />
    <TextView
   android:id="@+id/textView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/qtd" />
<EditText
    android:id="@+id/quantidade"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="@string/apN"
    android:inputType="number" />
<Button
    android:id="@+id/btSalvar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/btSv" />
<TextView
    android:id="@+id/Registro"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text=""
    android:textFontWeight="bold"
    />
<Button
    android:id="@+id/btExibirRegistros"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/bt_exibirregistro" />
follows the Activity class in which I am trying to insert the string from the database:
import android.content.Intent;
import android.database.Cursor;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import static com.example.testegigaservices.testegigaservices.DatabaseHelper.DATABASE_NAME;
import static com.example.testegigaservices.testegigaservices.DatabaseHelper.TABLE_1_C_ID;
import static com.example.testegigaservices.testegigaservices.DatabaseHelper.TABLE_1_C_QTD;
public class produtoActivity extends AppCompatActivity {
    DatabaseHelper meuBD;
    public static final String EXTRA_PRODUTO = "extra_produto";
    public static String sobrevalor = "Ultimo valor salvo: ";
    private EditText mQuantidade;
    Button exibesql;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_produto);
        meuBD = new DatabaseHelper(this);
        //nomeia a activity
        Intent anterior = getIntent();
        final String stringTitle = anterior.getStringExtra(EXTRA_PRODUTO);
        this.setTitle(stringTitle);
        //pega o número digitado
        mQuantidade = (EditText)findViewById(R.id.quantidade);
        Button salvar = (Button)findViewById(R.id.btSalvar);
        final TextView registro = (TextView)findViewById(R.id.Registro);
        salvar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String calculo = mQuantidade.getText().toString();
                if (!TextUtils.isEmpty(calculo)) {
                    mQuantidade.getText().clear();
                    Toast.makeText(getApplicationContext(), "Quantidade solicitada salva: " + calculo, Toast.LENGTH_SHORT).show();
                    registro.setText(sobrevalor + calculo);
                    //seleciona o valor e insere no banco de dados
                    boolean inserido = meuBD.insereDados_na_TABLE_1(calculo);
                    if (inserido = true) {
                        Toast.makeText(produtoActivity.this, "dados inseridos: " + calculo, Toast.LENGTH_SHORT).show();
                        String valor_final = "Valor final: " + inserido;
                    }
                    else{ Toast.makeText(produtoActivity.this , "dados não inseridos", Toast.LENGTH_SHORT).show();}
                } else {
                    Toast.makeText(getApplicationContext(), "Valor invalido ", Toast.LENGTH_SHORT).show();
                    Toast.makeText(getApplicationContext(), "Nenhuma alteração no banco de dados ", Toast.LENGTH_SHORT).show();
                    mQuantidade.getText().clear();
                }
                Button exibesql = (Button)findViewById(R.id.btExibirRegistros);
                final Cursor cursor1 = meuBD.pegaTodosDados_1();
                exibesql.setOnClickListener(
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                    //fazer algo
                                if (meuBD.TABLE_1_C_ID != null)
                                {
                                    //Toast.makeText(produtoActivity.this, "não nulo, " + calculo, Toast.LENGTH_SHORT).show();
                                    Toast.makeText(produtoActivity.this, "não nulo, " + cursor1, Toast.LENGTH_SHORT).show();
                                    //registro.setText(String.format("Ultima quantidade: %s", cursor1));
                                    registro.setText(String.format("Ultima quantidade: %s" , cursor1));
                                }
                                else if (meuBD.TABLE_1_C_ID == null)
                                {
                                    Toast.makeText(produtoActivity.this, "Banco de dados vazio", Toast.LENGTH_SHORT).show();
                                }
                                else
                                {
                                    Toast.makeText(produtoActivity.this, "deu erro", Toast.LENGTH_SHORT).show();
                                }
                            }
                        }
                );
            }
        });
    }
}
and according to android studio, this is log by logcat of what I could understand by errors, or exceptions listed:
    10-25 15:07:06.203 4378-4378/? E/memtrack: Couldn't load memtrack module (No such file or directory)
10-25 15:07:06.203 4378-4378/? E/android.os.Debug: failed to load memtrack module: -2
10-25 15:07:50.913 4406-4406/com.example E/EGL_emulation: tid 4406: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)
10-25 15:07:51.953 4406-4406/com.example E/EGL_emulation: tid 4406: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)
10-25 15:22:00.013 1699-1699/com.android.systemui E/OpenGLRenderer:   GL_INVALID_OPERATION
Okay, I get the logic you’re trying to make. in this case, I used: record.setText(String.format("Last quantity: %s" , cursor1.getString(cursor1.getColumnIndex("quantity_product_1"))); .
– Jonathan Viana
That’s it, that’s it ;)
– Woton Sampaio