>

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.



Não consigo gerar objeto de conexão com SQLite


Na linha de definição do objeto para conexão com o SQLite gera o seguinte erro:
Wrong 2nd argument type. Found: 'int', required: 'android.database.sqlite.SQLiteDatabase.CursorFacatory'

Arquivo:


package br.com.site.vendas;

import android.content.Context;
import android.database.Cursor;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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

SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);

StringBuilder sqlProdutos = new StringBuilder();
sqlProdutos.append("CREATE TABLE IF NOT EXISTS [produtos](");
sqlProdutos.append("_id INTEGER PRIMARY KEY AUTOINCREMENT, ");
sqlProdutos.append("nome VARCHAR(100), ");
sqlProdutos.append("preco DOUBLE(10,2)); ");
db.execSQL(sqlProdutos.toString());

StringBuilder sqlVendas = new StringBuilder();
sqlVendas.append("CREATE TABLE IF NOT EXISTS [vendas](");
sqlVendas.append("_id INTEGER PRIMARY KEY AUTOINCREMENT, ");
sqlVendas.append("produto INTEGER, ");
sqlVendas.append("preco DOUBLE(10,2), ");
sqlVendas.append("la DOUBLE(10,9), ");
sqlVendas.append("lo DOUBLE(10,9)); ");
db.execSQL(sqlVendas.toString());
}

public void novaClick(View view) {
startActivity(new Intent(getBaseContext(), NovaVendaActivity.class));
}
}



4 Respostas


Estou com o mesmo problema. Utilizo AndroidStudio 2.2.3




Andrey

Pode me mostrar o código do erro citado?




Bom dia.

Error:(18, 85) error: incompatible types: int cannot be converted to CursorFactory




O código correto seria:

SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);

E não

SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);

Note que o método openOrCreateDatabase é da sua Activity, por isso pode chamar direto.

Recomendo que assista também ao curso de SQLite com Android em nosso site, para reforçar ainda mais essa parte.

Espero ter ajudado.

Abs