Conexão com Banco de Dados - watter/titanium GitHub Wiki

execução de conexão com o BD

Provável erro: Não há conexão aberta com o Banco de dados

Erro na execução

[ERROR][TiExceptionHandler(  585)] (main) [172,45411] ----- Titanium Javascript Runtime Error -----
[ERROR][TiExceptionHandler(  585)] (main) [0,45411] - In ui/handheld/winDatabase.js:21,21
[ERROR][TiExceptionHandler(  585)] (main) [0,45411] - Message: Uncaught TypeError: Object function (){
[ERROR][TiExceptionHandler(  585)] 
[ERROR][TiExceptionHandler(  585)] 	// Criamos um objeto que será nossa própria API do banco de dados
[ERROR][TiExceptionHandler(  585)] 	var api= {};
[ERROR][TiExceptionHandler(  585)] 
[ERROR][TiExceptionHandler(  585)] 
[ERROR][TiExceptionHandler(  585)] 	// Criamos uma conexão com o BD que, se não existir, será criado com o nome passado por parâmetro
[ERROR][TiExceptionHandler(  585)] 	var db = Ti.Database.open('pessoas');
[ERROR][TiExceptionHandler(  585)] 	
[ERROR][TiExceptionHandler(  585)] 	db.execute('CREATE TABLE IF NOT EXISTS usuarios(' +
[ERROR][TiExceptionHandler(  585)] 				'id INTEGER PRIMARY KEY, ' +
[ERROR][TiExceptionHandler(  585)] 				'nome TEXT, ' + 
[ERROR][TiExceptionHandler(  585)] 				'email TEXT)');
[ERROR][TiExceptionHandler(  585)] 				
[ERROR][TiExceptionHandler(  585)] 	// Fechamos a conexão após o uso para evitar pools de conexão
[ERROR][TiExceptionHandler(  585)] 	db.close();
[ERROR][TiExceptionHandler(  585)] 	
[ERROR][TiExceptionHandler(  585)] 	api.adicionarPessoa = function( /*objeto */ pessoa ){
[ERROR][TiExceptionHandler(  585)] 		// usamos a mesma função <execute> para fazer um INSERT comum
[ERROR][TiExceptionHandler(  585)] 		db.execute('INSERT INTO usuarios (nome, email) VALUES (?,?)', pessoa.nome, pessoa.email);
[ERROR][TiExceptionHandler(  585)] 		
[ERROR][TiExceptionHandler(  585)] 		// E retornamos o ID da linha inserida no banco para eventuais referências
[ERROR][TiExceptionHandler(  585)] 		// Esta é uma propriedade constante do objeto do banco de dados e é atualizada 
[ERROR][TiExceptionHandler(  585)] 		// com o valor da última linha inserida a cada operação
[ERROR][TiExceptionHandler(  585)] 		return db.lastInsertRowId;
[ERROR][TiExceptionHandler(  585)] 	}
[ERROR][TiExceptionHandler(  585)] 
[ERROR][TiExceptionHandler(  585)] 
[ERROR][TiExceptionHandler(  585)] 	// 
[ERROR][TiExceptionHandler(  585)] 	api.listarPessoas = function (){
[ERROR][TiExceptionHandler(  585)] 		
[ERROR][TiExceptionHandler(  585)] 		var pessoas = [];
[ERROR][TiExceptionHandler(  585)] 		
[ERROR][TiExceptionHandler(  585)] 		var resultado = db.execute('SELECT * FROM usuarios');
[ERROR][TiExceptionHandler(  585)] 		
[ERROR][TiExceptionHandler(  585)] 		while(resultado.isValidRow()){
[ERROR][TiExceptionHandler(  585)] 			pessoas.push({
[ERROR][TiExceptionHandler(  585)] 				id: resultado.fieldByName('id'),
[ERROR][TiExceptionHandler(  585)] 				nome: resultado.fieldByName('nome'),
[ERROR][TiExceptionHandler(  585)] 				email: resultado.fieldByName('email')
[ERROR][TiExceptionHandler(  585)] 			});
[ERROR][TiExceptionHandler(  585)] 			
[ERROR][TiExceptionHandler(  585)] 			resultado.next;
[ERROR][TiExceptionHandler(  585)] 		}
[ERROR][TiExceptionHandler(  585)] 		
[ERROR][TiExceptionHandler(  585)] 		resultado.close;
[ERROR][TiExceptionHandler(  585)] 		
[ERROR][TiExceptionHandler(  585)] 		return pessoas;
[ERROR][TiExceptionHandler(  585)] 	}; 
[ERROR][TiExceptionHandler(  585)] 	
[ERROR][TiExceptionHandler(  585)] 	return api;
[ERROR][TiExceptionHandler(  585)] } has no method 'adicionarPessoa'
[ERROR][TiExceptionHandler(  585)] (main) [1,45412] - Source: 		ultimoInsert = db.adicionarPessoa({
[ERROR][V8Exception(  585)] Exception occurred at ui/handheld/winDatabase.js:21: Uncaught TypeError: Object function (){
[ERROR][V8Exception(  585)] 
[ERROR][V8Exception(  585)] 	// Criamos um objeto que será nossa própria API do banco de dados
[ERROR][V8Exception(  585)] 	var api= {};
[ERROR][V8Exception(  585)] 
[ERROR][V8Exception(  585)] 
[ERROR][V8Exception(  585)] 	// Criamos uma conexão com o BD que, se não existir, será criado com o nome passado por parâmetro
[ERROR][V8Exception(  585)] 	var db = Ti.Database.open('pessoas');
[ERROR][V8Exception(  585)] 	
[ERROR][V8Exception(  585)] 	db.execute('CREATE TABLE IF NOT EXISTS usuarios(' +
[ERROR][V8Exception(  585)] 				'id INTEGER PRIMARY KEY, ' +
[ERROR][V8Exception(  585)] 				'nome TEXT, ' + 
[ERROR][V8Exception(  585)] 				'email TEXT)');
[ERROR][V8Exception(  585)] 				
[ERROR][V8Exception(  585)] 	// Fechamos a conexão após o uso para evitar pools de conexão
[ERROR][V8Exception(  585)] 	db.close();
[ERROR][V8Exception(  585)] 	
[ERROR][V8Exception(  585)] 	api.adicionarPessoa = function( /*objeto */ pessoa ){
[ERROR][V8Exception(  585)] 		// usamos a mesma função <execute> para fazer um INSERT comum
[ERROR][V8Exception(  585)] 		db.execute('INSERT INTO usuarios (nome, email) VALUES (?,?)', pessoa.nome, pessoa.email);
[ERROR][V8Exception(  585)] 		
[ERROR][V8Exception(  585)] 		// E retornamos o ID da linha inserida no banco para eventuais referências
[ERROR][V8Exception(  585)] 		// Esta é uma propriedade constante do objeto do banco de dados e é atualizada 
[ERROR][V8Exception(  585)] 		// com o valor da última linha inserida a cada operação
[ERROR][V8Exception(  585)] 		return db.lastInsertRowId;
[ERROR][V8Exception(  585)] 	}
[ERROR][V8Exception(  585)] 
[ERROR][V8Exception(  585)] 
[ERROR][V8Exception(  585)] 	// 
[ERROR][V8Exception(  585)] 	api.list
[WARN][InputManagerService(   77)] Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41375518
[WARN][ThrottleService(   77)] unable to find stats for iface rmnet0

⚠️ **GitHub.com Fallback** ⚠️