Banco de dados em Unity v2021.3.4f1
4 participantes
Página 1 de 1
Banco de dados em Unity v2021.3.4f1
Eu estou tentando conectar meu banco de dados SQLite na Unity, mas sou novo nisso, e fiquei perdido. Vi uns tutoriais, porém sempre acabo preso em um erro na conexão ao banco.
Seguindo tutoriais, eu ficava em dúvida sobre qual arquivo mono da Unity utilizar, pois existem varios na pasta dela, então eu cheguei em um tutorial que pedia para colocar o unityjit-win32, então segui com ele, mesmo sabendo que meu PC era 64 bits, mas não tinha nenhum de 64.
Coloquei o Mono.Data.Sqlite.dll em uma pasta criada em Assets, com nome de Plugins. Em Plugins, eu também coloquei os 2 DLLs que precisava baixar no site da SQLite, além do arquivo database do meu banco de dados.
Porém, mesmo seguindo tudo isso, acontece esse erro:
SqliteException: SQLite error
table tb_usuarios has not column named Coluna1
Mas o nome está exatamente igual.
Ele também avisa de um erro na linha 20, que seria:
command.ExecuteNonQuery();
Eu utilizei dessas bibliotecas:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
using Mono.Data.Sqlite;
E foi esse o meu código:
(existem esses 3 comentários de conexão pois eu estava tentando encontrar uma solução para erros passados)
private void Start()
{
script = GetComponent<MeuScript>();
var connection = new SqliteConnection("URI=file:" + Application.dataPath + "/Plugins/" + "Flappy.db");
//var connection = new SqliteConnection("URI=file:Flappy.db");
//var connection = new SqliteConnection("URI=file::memory");
//var connection = new SqliteConnection("URI=file:");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "INSERT INTO tb_usuarios(Coluna1, Coluna2, Coluna3) VALUES('" + script.valor1 + "', '" + script.valor2 + "', '" + script.valor3 + "');";
command.ExecuteNonQuery();
connection.Close();
Seguindo tutoriais, eu ficava em dúvida sobre qual arquivo mono da Unity utilizar, pois existem varios na pasta dela, então eu cheguei em um tutorial que pedia para colocar o unityjit-win32, então segui com ele, mesmo sabendo que meu PC era 64 bits, mas não tinha nenhum de 64.
Coloquei o Mono.Data.Sqlite.dll em uma pasta criada em Assets, com nome de Plugins. Em Plugins, eu também coloquei os 2 DLLs que precisava baixar no site da SQLite, além do arquivo database do meu banco de dados.
Porém, mesmo seguindo tudo isso, acontece esse erro:
SqliteException: SQLite error
table tb_usuarios has not column named Coluna1
Mas o nome está exatamente igual.
Ele também avisa de um erro na linha 20, que seria:
command.ExecuteNonQuery();
Eu utilizei dessas bibliotecas:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
using Mono.Data.Sqlite;
E foi esse o meu código:
(existem esses 3 comentários de conexão pois eu estava tentando encontrar uma solução para erros passados)
private void Start()
{
script = GetComponent<MeuScript>();
var connection = new SqliteConnection("URI=file:" + Application.dataPath + "/Plugins/" + "Flappy.db");
//var connection = new SqliteConnection("URI=file:Flappy.db");
//var connection = new SqliteConnection("URI=file::memory");
//var connection = new SqliteConnection("URI=file:");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "INSERT INTO tb_usuarios(Coluna1, Coluna2, Coluna3) VALUES('" + script.valor1 + "', '" + script.valor2 + "', '" + script.valor3 + "');";
command.ExecuteNonQuery();
connection.Close();
}
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Olá seja um pouco mais especifico, me explica um pouco o que vc deseja fazer com o SQLite, ira utilizar ele para qual finalidade ? gravar pontuação do jogador ? ira fazer consultas das pontuações etc ?
Re: Banco de dados em Unity v2021.3.4f1
Eu planejo guardar a pontuação feita pelo jogador, e usar o banco de dados como saveData, fazendo uma consulta de quais são os dados dela, para preencher no Text de Pontuação.
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
No seu erro esta bem explicito, "SQLite error table tb_usuarios has not column named Coluna1", a tabela 'tb_usuarios ' não tem uma coluna chamada 'Coluna1'
Weslley- Moderador
- PONTOS : 5729
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Os nomes estão exatamente iguais, já copiei e colei para ter certeza, mas não muda.
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Poderia postar um print da sua tabela?
Weslley- Moderador
- PONTOS : 5729
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Obs: No código não está escrito "Coluna1", e tal. Foi apenas de exemplo.
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Olá fiz um pequeno CRUD para você acredito que poderá entender como funciona o SQLite com Unity.
Criei um Package para te facilitar, fiz com suporte para Windows, iOS, Android.
DOWNLOAD
https://drive.google.com/file/d/1oci1JTeM6RWMkTOM24gcrsZ3KUggmOu5/view?usp=share_link
Criei um Package para te facilitar, fiz com suporte para Windows, iOS, Android.
DOWNLOAD
https://drive.google.com/file/d/1oci1JTeM6RWMkTOM24gcrsZ3KUggmOu5/view?usp=share_link
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//References
using Mono.Data.Sqlite;
using System;
using System.Data;
using System.IO;
using UnityEngine.UI;
public class Unity : MonoBehaviour
{
private string conn, sqlQuery;
IDbConnection dbconn;
IDbCommand dbcmd;
private IDataReader reader;
public InputField t_id, t_Player, t_Pontos;
public Text resultado_dados; // TEXT Resultado
string BancoDados = "Player.db"; // Nome do banco de dados
void Start()
{
string caminhoArquivoSQLite = Application.dataPath + "/Plugins/" + BancoDados;
//Abrir conexão com o banco de dados SQLite
//WINDOWS
conn = "URI=file:" + caminhoArquivoSQLite;
Debug.Log("Estabelecendo conexão com: " + conn);
dbconn = new SqliteConnection(conn);
dbconn.Open();
//IOS
//var loadDb = Application.dataPath + "/Raw/" + BancoDados;
//File.Copy(loadDb, caminhoArquivoSQLite);
//WP8
//var loadDb = Application.dataPath + "/StreamingAssets/" + BancoDados;
//File.Copy(loadDb, caminhoArquivoSQLite);
//ANDROID
// WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + BancoDados);
// while (!loadDB.isDone) { }
// File.WriteAllBytes(caminhoArquivoSQLite, loadDB.bytes);
}
//Inserir
public void botao_registrar()
{
funcao_registrar(t_Player.text, t_Pontos.text);
}
//Buscar
public void botao_buscar()
{
resultado_dados.text = "";
funcao_buscar(t_id.text);
}
//Atualizar
public void botao_atualizar()
{
funcao_atualizar(t_id.text, t_Player.text, t_Pontos.text);
}
//Eliminar
public void botao_eliminar()
{
resultado_dados.text = "";
funcao_eliminar(t_id.text);
}
//Função Registrar
private void funcao_registrar(string Player, string Pontos)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Abre conexão com o banco de dados.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("insert into PlayerDb (Player, Pontos) values (\"{0}\",\"{1}\")", Player, Pontos); // SQL
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
resultado_dados.text = "";
Debug.Log("Registrado com sucesso! ");
funcao_while();
}
//Ler todos os dados para o banco de dados
private void funcao_while()
{
//Defina aqui suas strings
string LerPlayer, LerPontos;
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Abre conexão com o banco de dados.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT Player, Pontos " + "FROM PlayerDb"; // SQL
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
//Defina aqui suas strings
LerPlayer = reader.GetString(0);
LerPontos = reader.GetString(1);
resultado_dados.text += LerPlayer + LerPontos + "\n";
Debug.Log("Player =" + LerPlayer + " Pontos=" + LerPontos);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
}
//Pesquisar no banco de dados por ID
private void funcao_buscar(string IdRegistro)
{
using (dbconn = new SqliteConnection(conn))
{
//Defina aqui suas strings
string Player_busca, Pontos_busca;
dbconn.Open(); //Abre conexão com o banco de dados.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT Player,Pontos " + "FROM PlayerDb where id =" + IdRegistro; // SQL
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
//Defina aqui suas strings
Player_busca = reader.GetString(0);
Pontos_busca = reader.GetString(1);
resultado_dados.text += Player_busca + " - " + Pontos_busca + "\n";
Debug.Log(" Player =" + Player_busca + " Pontos=" + Pontos_busca);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
}
}
//Função Atualizar
private void funcao_atualizar(string update_id, string player_update, string pontos_update)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Abre conexão com o banco de dados.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("UPDATE PlayerDb set Player = @Player, Pontos = @Pontos where id = @id"); // SQL
SqliteParameter P_update_player = new SqliteParameter("@Player", player_update);
SqliteParameter P_update_pontos = new SqliteParameter("@Pontos", pontos_update);
SqliteParameter P_update_id = new SqliteParameter("@id", update_id);
dbcmd.Parameters.Add(P_update_player);
dbcmd.Parameters.Add(P_update_pontos);
dbcmd.Parameters.Add(P_update_id);
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
funcao_buscar(t_id.text);
}
}
//Eliminar
private void funcao_eliminar(string Eliminar_by_id)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Abre conexão com o banco de dados.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "DELETE FROM PlayerDb where id =" + Eliminar_by_id; // SQL
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
resultado_dados.text = Eliminar_by_id + " Excluir Concluído ";
}
}
}
Re: Banco de dados em Unity v2021.3.4f1
Obrigado pela ajuda! Deve ter dado trabalho.
Ficou melhor para compreender cada coisa, agradeço-lhe.
Podem colocar como Resolvido?
Ficou melhor para compreender cada coisa, agradeço-lhe.
Podem colocar como Resolvido?
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Se entendi direito e sou meio leigo no assunto, está faltando criar um campo pra "ID" dos usuários e esse "ID" deve ser do tipo "Integer" e coloque esse "ID" como "Primary Key".
Insurgente- Membro
- PONTOS : 2237
REPUTAÇÃO : 3
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Eu entendo que com ID fica melhor para identificação de algo, mas é obrigatório em todos os casos?
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
erickfabio366 escreveu:Eu entendo que com ID fica melhor para identificação de algo, mas é obrigatório em todos os casos?
Cara, sincereramente não sei dizer se é obrigatório sempre...hehe! Mas eu tentaria com certeza
Insurgente- Membro
- PONTOS : 2237
REPUTAÇÃO : 3
Respeito as regras :
Re: Banco de dados em Unity v2021.3.4f1
Blz, obrigado!
erickfabio366- Membro
- PONTOS : 1398
REPUTAÇÃO : 18
Respeito as regras :
Tópicos semelhantes
» Receber dados de um banco de dados e escrever em unity
» Unity Banco de Dados
» Salvar dados unity
» Banco de dados Remoto Unity
» Unity com BANCO DE DADOS EXTERNO ?
» Unity Banco de Dados
» Salvar dados unity
» Banco de dados Remoto Unity
» Unity com BANCO DE DADOS EXTERNO ?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos