Boa tarde, estou criando um app com banco local (apenas para testes) para fazer uma coleta de dados, entretanto estou com dificuldade na hora de fazer as heranças e inserts no banco, este é a criação do meu HelperDAO com todas as tabelas e foreign key:
public class HelperDAO extends SQLiteOpenHelper {
public HelperDAO(Context context) {
super(context, "db_app", null, 11);
}
@Override
public void onCreate(SQLiteDatabase db) {
String empresaSQL = "CREATE TABLE Empresas(empresa_id INTEGER PRIMARY KEY AUTOINCREMENT, empresa_nome TEXT NOT NULL, empresa_segmento TEXT NOT NULL);";
String unidadeSQL = "CREATE TABLE Unidades(unidade_id INTEGER PRIMARY KEY AUTOINCREMENT, unidade_nome TEXT NOT NULL, unidade_cidade TEXT NOT NULL," +
"empresa_nome TEXT NOT NULL, FOREIGN KEY (empresa_nome) REFERENCES Empresas(empresa_nome));";
String setorSQL = "CREATE TABLE Setores (setor_id INTEGER PRIMARY KEY AUTOINCREMENT, setor_nome TEXT NOT NULL, setor_atividade TEXT NOT NULL," +
"unidade_nome TEXT NOT NULL, FOREIGN KEY (unidade_nome) REFERENCES Unidades(unidade_nome));";
db.execSQL(empresaSQL);
db.execSQL(unidadeSQL);
db.execSQL(setorSQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String empresaSQL = "DROP TABLE IF EXISTS Empresas;";
String unidadeSQL = "DROP TABLE IF EXISTS Unidades;";
String setorSQL = "DROP TABLE IF EXISTS Setores;";
db.execSQL(empresaSQL);
db.execSQL(unidadeSQL);
db.execSQL(setorSQL);
onCreate(db);
}
}
Entretanto, na hora de trabalhar no insert de uma Unidade, por exemplo, eu não consigo trazer a empresa também. Segue código:
package br.com.hlnengenharia.tcc.dao;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.NonNull;
import java.util.ArrayList;
import java.util.List;
import br.com.hlnengenharia.tcc.helper.HelperDAO;
import br.com.hlnengenharia.tcc.model.Empresa;
import br.com.hlnengenharia.tcc.model.Unidade;
/**
* Created by rn-15 on 05/03/2018.
*/
public class UnidadeDAO {
private HelperDAO dao;
private Context context;
public UnidadeDAO(Context context) {
dao = new HelperDAO(context);
}
public void closeDAO(){
dao.close();
}
public void insere(Unidade unidade) {
SQLiteDatabase db = dao.getReadableDatabase();
ContentValues dados = pegaDadosUnidades(unidade);
db.insert("Unidades", null, dados);
}
public void altera(Unidade unidade) {
SQLiteDatabase db = dao.getWritableDatabase();
ContentValues dados = pegaDadosUnidades(unidade);
String[]params = {unidade.getUnidade_id().toString()};
db.update("Unidades", dados, "unidade_id=?", params);
}
public void deleta(Unidade unidade) {
SQLiteDatabase db = dao.getWritableDatabase();
String[]params = {unidade.getUnidade_id().toString()};
db.delete("Unidades", "unidade_id=?", params);
}
@NonNull
private ContentValues pegaDadosUnidades(Unidade unidade) {
ContentValues dados = new ContentValues();
dados.put("unidade_nome", unidade.getUnidade_nome());
dados.put("unidade_cidade", unidade.getUnidade_cidade());
dados.put("empresa_nome", unidade.getFk_empresa().equals(unidade.getEmpresa_nome()));
return dados;
}
public List<Unidade> buscaUnidade() {
String sql = "SELECT * FROM Unidades;";
SQLiteDatabase db = dao.getReadableDatabase();
Cursor c = db.rawQuery(sql, null);
List<Unidade> unidades = new ArrayList<>();
while (c.moveToNext()){
Unidade u = new Unidade();
u.setUnidade_id(c.getLong(c.getColumnIndex("unidade_id")));
u.setUnidade_nome(c.getString(c.getColumnIndex("unidade_nome")));
u.setUnidade_cidade(c.getString(c.getColumnIndex("unidade_cidade")));
u.setFk_empresa(c.getString(c.getColumnIndex("empresa_nome")));
unidades.add(u);
}
c.close();
return unidades;
}
}
Será que alguém poderia me ajudar?