Fórum Criação de tabelas #447565

02/07/2013

0

Meus amigos, qual o melhor e mais prático jeito de criar tabelas?

Utilizando o código:

private static String sql = "CREATE TABLE [clientes] (  [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] [VARCHAR(30)],   [email] [VARCHAR(40)],   [endereco] [VARCHAR(50)],   [numero] [VARCHAR(10)]);";  
db.execSQL(sql);  


ou

@Override  
public void onCreate(SQLiteDatabase db) {  
    SQLiteDatabase db = new DB(ctx).getWritableDatabase(); // esse código viria de uma classe DAO, correto?  
  
    StringBuilder sqlClientes = new StringBuilder();  
    sqlClientes.append("CREATE TABLE [clientes] (");  
    sqlClientes.append("[idCliente] INTEGER PRIMARY KEY AUTOINCREMENT, ");  
    sqlClientes.append("nome varchar(30), ");  
    sqlClientes.append("email varchar(40), ");  
    sqlClientes.append("endereco varchar(50), ");  
    sqlClientes.append("numero varchar(10));");  
    db.execSQL(sqlClientes.toString());  
}  


E assim faria para outras tabelas que tivessem. Qual é o método mais adequado?
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

02/07/2013

Joel Rodrigues

Como na primeira forma você criou uma string só, eu acho ela mais adequada, pois é só um objeto string definido uma única vez. Na segunda, além de usar um StringBuilder, você chama o método para adicionar as strings várias vezes, além do ToString, etc.

NESSE CASO, eu acho a primeira mais adequda.
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

Obrigado Joel, pelo retorno. Então poderia fazer simplesmente assim:

private static String sqlClientes = "CREATE TABLE [clientes] (  [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] [VARCHAR(30)],   [email] [VARCHAR(40)],   [endereco] [VARCHAR(50)],   [numero] [VARCHAR(10)]);";  

private static String sqlOutraTabela = "CREATE TABLE [outratabela] (  [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] [VARCHAR(30)],   [email] [VARCHAR(40)],   [endereco] [VARCHAR(50)],   [numero] [VARCHAR(10)]);";  

db.execSQL(sqlClientes);
db.execSQL(sqlOutraTabela);


OutraTabela seria um exemplo para criar mais uma. O campo id pode por qualquer nome, não precisa ser _id, como tenho visto?
Responder

Gostei + 0

02/07/2013

Joel Rodrigues

Perfeitamente, pode criar quantas strings precisar. E com relação ao nome dos campos, como já vimos, pode ser qualquer um.
Responder

Gostei + 0

02/07/2013

Joel Rodrigues

OBSERVAÇÃO: O nome dos campos pode ser qualquer um, mas claro que você deve usar nomes significativos e seguir as regras de nomenclatura.
Responder

Gostei + 0

02/07/2013

Eduardo Pessoa

isso melhora em perfomance, ou não tem nada haver?
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

Mais uma dúvida, os campos precisam estar entre []? Pode fazer simplesmente assim:

private static final String DATABASE_CREATE_CLIENTES = "create table clientes ("id_Cliente integer primary key autoincrement, nome text, data text, telefone text, celular text, email text);";
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

mais uma dúvida, os campos precisam estar entre []? pode fazer simplesmente assim:


private static final string database_create_clientes = "create table clientes ("id_cliente integer primary key autoincrement, nome text, data text, telefone text, celular text, email text);";


Está errado, o correto seria:

private static final string database_create_clientes = "create table clientes (id_cliente integer primary key autoincrement, nome text, data text, telefone text, celular text, email text);";
Responder

Gostei + 0

02/07/2013

Joel Rodrigues

Olha, com relação a isso vou lhe pedir para testar, pois não tenho certeza. Geralmente os [] não são necessários.
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

Ok, vou fazer sem [] para testar. Obrigado pela ajuda. Resolvido
Responder

Gostei + 0

02/07/2013

Joel Rodrigues

Valeu, amigo.
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

Joel, uma duvida. Como perguntou o colega, tem diferença de um jeito para outro na performance do código?
Responder

Gostei + 0

02/07/2013

Joel Rodrigues

Ótima pergunta, acabei não respondendo.
Vamos lá a uma comparação dos códigos:

No primeiro formato você cria e já dá um valor a uma única string e a usa no método para executar a instrução.

No segundo formato você cria um StringBuilder (classe mais complexa), chama o método para inserir strings várias vezes e por fim ainda chama o ToString(). Já percebemos que o primeiro é bem mais simples, logo, executado com mais facilidade.

Dificilmente essa diferença será notada, mas em aplicações grande, ao longo do tempo isso pode se tornar fundamental.

Existe, porém, uma situação em que StringBuilder é melhor que String. Desejam saber?
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

Sim, por favor.
Responder

Gostei + 0

02/07/2013

Frederico Brigatte***

Joel, quando que StringBuilder é melhor que String?
Responder

Gostei + 0

02/07/2013

Joel Rodrigues

Joel, quando que StringBuilder é melhor que String?

Cara, só por curiosidade, você nasceu de 7 meses? Apressado pra caramba, hein?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar