String ou StringBuilder

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

Utilizando o código:

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);

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());  
}  

Qual desses métodos é melhor para criar as tabelas e suas diferenças qto a performance?

ao meu ver não vejo diferença…
pois um é imutavel e o outro é mutavel… é essa a diferença, não tem perda de performance…

agora se fosse uma discussãoentre StringBuffer e StringBuilder ai seria outra historia o.O

E vantagens e desvantagens, tem? Como assim mutável e imutável?

Eu prefiro isto aqui:

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)]);";    

Se você ler a especificação da linguagem, NESTE CASO é mais vantagem fazer isto porque a concatenação de constantes strings é uma constante string (ou seja, só neste caso “a” + “b” é exatamente igual a “ab”). Ou seja, não é gerado nenhum código adicional lento do tipo “String.concat”, que normalmente é usado para concatenar strings.

Ok, porque o uso dos []

[quote=entanglement]Eu prefiro isto aqui:

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)]);";    

Se você ler a especificação da linguagem, NESTE CASO é mais vantagem fazer isto porque a concatenação de constantes strings é uma constante string (ou seja, só neste caso “a” + “b” é exatamente igual a “ab”). Ou seja, não é gerado nenhum código adicional lento do tipo “String.concat”, que normalmente é usado para concatenar strings. [/quote]

Esse lento é tão insignificante que vc nem nota… se duvidar é no maximo 3 ciclos de processamento… é muito rapido para se notar… eu particularmente prefiro a maneira com StringBuilder pois vc não fica gerando variavel auxiliar para concatenar…

Respondendo ao fbrigatt

da uma lida nesse artigo…

http://blog.caelum.com.br/strings-imutaveis/

é um pequeno artigo e de facil compreensão xD

achei tbm outro topico aqui no guj discutindo sobre…

http://www.guj.com.br/java/54259-o-que-e-a-classe-stringbuilder-

Ok, vou ler.

Mas me digam uma coisa, porque colocar [] entre os campos? Apenas para diferenciar?

[quote=fbrigatt]Ok, vou ler.

Mas me digam uma coisa, porque colocar [] entre os campos? Apenas para diferenciar?[/quote]

olha não sei dizer… nunca fiz isso criação de tabela via fonte… ou sempre deixava o hibernate criar, ou eu criava na mão a tabela… mas olhando por cima levo a crer que é apenas para distinguir um campo do outro…

ok, poderia me ajudar nesse link:

Layout com botões estilo Windows 8

http://www.guj.com.br/java/302081-layout-com-botoes-estilo-windows-8

[quote=fbrigatt]ok, poderia me ajudar nesse link:

Layout com botões estilo Windows 8

http://www.guj.com.br/java/302081-layout-com-botoes-estilo-windows-8[/quote]

Não manjo muito de criar tela… sempre sai feia rsrsrs
não sou o mais indicado para te ajudar nesse assunto… sorry

mas se nao me engano o windows 8 é feito com html5, mas deve dar para fazer algo com CSS tbm

Quero criar apenas os botões, um ao lado do outro, entendeu?