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