[TUTORIAL] Banco de dados || MySQL
+21
Khrys
numb123
sabbath
dazentt55
igorobm
BrunoHenRod
kaique2346
ruanzikaad
NKKF
Callyde Jr
marcos4503
Pika
fecirineu
MarcosSchultz
NyanHeavyBR
artplayer
Deiverson
rafaelllsd
Guilherme_cj852
Chilinger
RenanMSV
25 participantes
Página 1 de 1
[TUTORIAL] Banco de dados || MySQL
Após o tutorial de SQLite que eu postei a algum tempo atrás, venho trazer agora o tutorial de banco de dados MySQL.
O banco de dados MySQL é um banco de dados online, que fica em um servidor. Portanto você precisará ter um host já contratado e ativo.
Você pode contratar um serviço pago ou um gratuito neste site: http://www.freesqldatabase.com/. Ou varios outros gratuitos na internet. Este foi só um exemplo.
Independente de qual você escolher lhe será dado um hostname, um nome de usuario, uma senha e talvez uma porta. E será com essas informações que você vai poder utilizar seu banco de dados em seus jogos.
Muito bem, ja tenho tudo isso. Vamos começar? Vamos.
Precisamos baixar o MySQL Connector neste site: http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.9-noinstall.zip
Abra o zip e extraia o MySql.Data.dll que se encontra na pasta bin.
Crie uma pasta em seu Unity com o nome de Plugins e coloque a DLL lá.
Abra a pasta C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0 ( depende de onde você instalou seu Unity ) e copie os arquivos I18N.dll e I18N.West.dll para a pasta Plugins do seu projeto do Unity.
Agora você TERA QUE IR em Build Settings > Player Settings > Optimization e selecionar .NET 2.0
Caso você tenha escolhido usar o banco de dados do freesqldatabase.com basta voce logar aqui http://www.phpmyadmin.co/ para ter acesso a uma interface de administração de seu banco de dados.
Caso você escolha outro provedor do serviço verifique que o método dele é diferente.
Mas todos provedores vão levar você ao PHP My Admin.
Muito, bem agora vamos aos codigos.
Dentro do PHP My Admin clique em seu banco de dados, clique em SQL e cole este código aqui:
- Código:
CREATE TABLE IF NOT EXISTS `login_users` (
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`name_user` varchar(255) NOT NULL,
`pass_user` varchar(255) NOT NULL,
`email_user` varchar(255) NOT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
INSERT INTO `login_users` (`id_user`, `name_user`, `pass_user`, `email_user`) VALUES
(1, 'Usuario 1', 'senha123', 'asflasjf.com'),
(2, 'Usuario 2', 'senha321', 'asfhas@.com');
Clique em executar.
Com este código criamos uma tabela simples que guardará os usuarios de nosso jogo. Guardaremos nome, senha e email. Um ID será automaticamente criado para este usuario. Iremos nos basear sempre pelo ID do usuario para fazermos nossas requisições ao banco de dados.
Bem, feito isto podemos ir para o Unity.
Vejam aqui a string source usada para o MySQL se conectar: https://www.connectionstrings.com/mysql/
Crie um script C#:
- Código:
using UnityEngine;
using System.Collections;
using MySql.Data.MySqlClient; // importamos a dll
using UnityEngine.UI;
public class MyDataTut : MonoBehaviour {
public string Host; // host do seu banco de dados
public string Pass; // senha do seu banco de dados
public string User; // nome de usuario do seu banco de dados
public string DataBaseName; // nome do seu banco de dados
public string LoginTableName; // nome da tabela do seu banco de dados.
private MySqlConnection connection; // declaramos a conexao que iremos utilizar. podemos utilizar centenas de conexoes juntas
private string source;
void Start () {
source = "Server=" + Host + ";Database= " + DataBaseName + ";Uid=" + User + ";Pwd="+ Pass +";"; // Estamos criando a source string para conexoes MySQL
if (ConectarBanco(source)){ // perguntamos ao jogo se ele pode conectar
ListarTodosOsDados(connection);// pedimos para ele listar todos os dados existentes no banco
}
}
bool ConectarBanco(string _source){
print ("Criando conexao"); // Printamos que estamos criando a conexão
connection = new MySqlConnection (_source); // criando a conexao
print ("Abrindo conexao"); // Printamos que estamos abrindo a conexão
try { // tente
connection.Open (); // abrir a conexao
print ("Conexao aberta");
return true; // retorna verdadeiro
}catch(System.Exception e){ // se não conseguir
Debug.LogError (e); // mostre o erro no console
return false; // e retorne falso
}
}
void ListarTodosOsDados(MySqlConnection _conn){
MySqlCommand cmd = _conn.CreateCommand(); // criamos um comando vazio na conexao passada
cmd.CommandText = "SELECT * FROM " + LoginTableName; // colocamos uma requisicao sql no comando pertencente a esta conexao
MySqlDataReader dados = cmd.ExecuteReader (); // executamos este comando na conexao passada
while (dados.Read ()) { // enquanto houver dados
print("Dados: " + "ID: " + dados ["id_user"] + ". UserName: " + dados ["name_user"] + ". Senha: " + dados ["pass_user"] + ". Email: " + dados ["email_user"] + "\n"); // Mostramos estes dados
}
dados.Close(); // por fim fechamos a leitura e o comando
dados = null;
cmd.Dispose();
cmd = null;
}
void OnApplicationQuit (){ // Se a aplicação for fechada
connection.Close (); // Fechamos a conexao
connection = null;
print ("Database Fechado"); // Printamos que foi fechado
}
}
Para se pegar os dados utilizamos dados[nome do campo no banco de dados]. Exemplo:
- Código:
string PegarSenhaDoUsuarioPeloID(MySqlConnection _conn,int id){
string retSt;
MySqlCommand cmd = _conn.CreateCommand(); // criamos um comando vazio na conexao passada
cmd.CommandText = "SELECT pass_user FROM " + LoginTableName + "where id_user =" + id; // pegamos a senha do usuario que tiver o id passado
MySqlDataReader dados = cmd.ExecuteReader (); // executamos este comando na conexao passada
if (dados.Read ()) { // como existe apenas 1 usuario por id não precisamos do while.
print("Senha: " + dados[pass_user]); // Mostramos esta senha
retSt = dados[pass_user]);
}
dados.Close(); // por fim fechamos a leitura e o comando
dados = null;
cmd.Dispose();
cmd = null;
return retSt;
}
No exemplo criamos um simples método que pode ser usado para saber a senha do usuario a partir de seu id.
E retornamos esta senha. Iriamos utilizar assim:
- Código:
print(PegarSenhaDoUsuarioPeloID(connection,2)); // irá printar a senha
string senha = PegarSenhaDoUsuarioPeloID(connection,this.id); // irá atribuir a senha
Demais explicações estão no script.
Agora o resultado:
Console:
PHP My Admin:
Qualquer duvida mandem abaixo.
Até!
Última edição por RenanMSV em Sex Jul 01, 2016 8:52 pm, editado 1 vez(es) (Motivo da edição : Erro corrigido. Falha ao buscar por DLL.)
RenanMSV- Instrutor
- PONTOS : 4487
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Irmao eu sei fazer igual o seu mas descobri pouco tempo depois que fazer em php e mas rapido
Chilinger- MembroAvançado
- PONTOS : 4095
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Na unity deu esse erro no script
- Código:
Unhandled Exception: Mono.CSharp.InternalErrorException: Assets/Scripts/MyDataTut.cs(6,14): MyDataTut ---> Mono.CSharp.InternalErrorException: Assets/Scripts/MyDataTut.cs(12,33): MyDataTut.connection ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
Re: [TUTORIAL] Banco de dados || MySQL
Não é erro no banco de dados. Ocultei as informações para evitar de gente entrando.
Tente: Ir em Build Settings > Player Settings > Optimization e selecione .NET 2.0
Tente: Ir em Build Settings > Player Settings > Optimization e selecione .NET 2.0
Última edição por RenanMSV em Sex Jul 01, 2016 8:53 pm, editado 1 vez(es)
RenanMSV- Instrutor
- PONTOS : 4487
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Mudei para .NET 2.0 e funcionou, vlwRenanMSV escreveu:Não é erro no banco de dados. Ocultei as informações para evitar de gente entrando.
Tente:
Ir em Build Settings > Player Settings > Optimization e selecione .NET 2.0
Ou ir na pasta C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0 e copiar o arquivo System.Data.dll para a pasta Plugins de seu projeto.
Volte aqui e diga qual funcionou, ou se não funcionou.
Re: [TUTORIAL] Banco de dados || MySQL
Vi agora, esqueci de mencionar que precisa alterar isso. Ai as dll não precisam serem importadas.
Vou colocar isto no post. Obrigado.
Vou colocar isto no post. Obrigado.
RenanMSV- Instrutor
- PONTOS : 4487
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Que massa, esse assunto é novo para mim mais acho bem legal, muito bom.
rafaelllsd- ProgramadorMaster
- PONTOS : 5245
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Renan fui a tras da resposta certa e vi que eu tinha falado algo erro pois se nao for c# a unity tem que buscar uma biblioteca fora entao demora mas logo banco com c# e mas rapido.
No meu nao estou conseguindo cadastrar e logar ao msm tempo com c# mysql so com php.
No meu nao estou conseguindo cadastrar e logar ao msm tempo com c# mysql so com php.
Chilinger- MembroAvançado
- PONTOS : 4095
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Tenho uma preocupação relacionada na comunicação com o banco de dados remoto, podemos melhorar isso aplicando uma criptografia para que os dados não seja interceptados facilmente durante a comunicação?
Teria como fazer essa comunicação criptografada usando alguma API do Unity? Usar um HTTPS (até um certificado digital não valido) ou fazer essa consulta no banco via Webservice?
Teria como fazer essa comunicação criptografada usando alguma API do Unity? Usar um HTTPS (até um certificado digital não valido) ou fazer essa consulta no banco via Webservice?
Deiverson- Iniciante
- PONTOS : 3518
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Deiverson escreveu:Tenho uma preocupação relacionada na comunicação com o banco de dados remoto, podemos melhorar isso aplicando uma criptografia para que os dados não seja interceptados facilmente durante a comunicação?
Teria como fazer essa comunicação criptografada usando alguma API do Unity? Usar um HTTPS (até um certificado digital não valido) ou fazer essa consulta no banco via Webservice?
Por isso o ideal é você deixar que o servidor manipule o banco de dados e não a Unity em si. Você envia os dados via WWWforms pra uma página php com apenas os parâmetros definidos e deixa que o php faz a consulta retornando apenas o desejado.
Eu só trabalho com consultas desta forma, e só em jogos online, daí restrinjo o meu apache a aceitar conexões somente do servidor, impedindo que os forms sejam manipulados por usuários mau intencionados.
Re: [TUTORIAL] Banco de dados || MySQL
Sim, nesse caso você faz somente consultas, correto?
No caso da necessidade de sincronização de dados do cliente (podendo ser mobile ou pc) para servidor MySQL, qual seria uma solução do ponto de vista de uma arquitetura mais simples, para você conseguir inserir os dados remotos no banco? Webservice usando o PHP para inserir + algum outro mecanismo de criptografia?
Com o Apache HTTPD já da para garantir uma proteção maior evitando SQL Injection.
Minha preocupação seria na manipulação de dados envenenandos no POST, por que eu teria que sincronizar incluindo informações no banco de dados do servidor (não é Sql Injection e sim o jogador alterar por exemplo Level do personagem, que esta em 2, para 9999, alterar valores dos campos submetidos no form). Vou dar uma estudada nesse envio os dados via WWWforms, talvez já resolva.
Acho que pode depender muito mais da forma que está sendo projetado essa sincronização de dados, tanto de consumo do webservice como envio, no caso do envio que é mais complicado. Não sei se seria possivel ou bom encapsular os dados com criptografia um xml ou json (tambem não sei se o Unity suporta isso) e submeteria para o webservice descriptografar e fazer as atualizações no banco remoto. Talvez por HTTPS resolva essa questão de sincronização com segurança sem maiores problemas, vou dar uma verificada depois.
No caso da necessidade de sincronização de dados do cliente (podendo ser mobile ou pc) para servidor MySQL, qual seria uma solução do ponto de vista de uma arquitetura mais simples, para você conseguir inserir os dados remotos no banco? Webservice usando o PHP para inserir + algum outro mecanismo de criptografia?
Com o Apache HTTPD já da para garantir uma proteção maior evitando SQL Injection.
Minha preocupação seria na manipulação de dados envenenandos no POST, por que eu teria que sincronizar incluindo informações no banco de dados do servidor (não é Sql Injection e sim o jogador alterar por exemplo Level do personagem, que esta em 2, para 9999, alterar valores dos campos submetidos no form). Vou dar uma estudada nesse envio os dados via WWWforms, talvez já resolva.
Acho que pode depender muito mais da forma que está sendo projetado essa sincronização de dados, tanto de consumo do webservice como envio, no caso do envio que é mais complicado. Não sei se seria possivel ou bom encapsular os dados com criptografia um xml ou json (tambem não sei se o Unity suporta isso) e submeteria para o webservice descriptografar e fazer as atualizações no banco remoto. Talvez por HTTPS resolva essa questão de sincronização com segurança sem maiores problemas, vou dar uma verificada depois.
Última edição por Deiverson em Seg Dez 05, 2016 6:13 pm, editado 5 vez(es) (Motivo da edição : Adicionando mais informações sobre sincronização...)
Deiverson- Iniciante
- PONTOS : 3518
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Deiverson escreveu:Sim, nesse caso você faz somente consultas, correto?
No caso da necessidade de sincronização de dados do cliente (podendo ser mobile ou pc) para servidor MySQL, qual seria uma solução do ponto de vista de uma arquitetura mais simples, para você conseguir inserir os dados remotos no banco? Webservice usando o PHP para inserir + algum outro mecanismo de criptografia?
Com o Apache HTTPD já da para garantir uma proteção maior evitando SQL Injection.
Minha preocupação seria na manipulação de dados envenenandos no POST, por que eu teria que sincronizar incluindo informações no banco de dados do servidor (não é Sql Injection e sim o jogador alterar por exemplo Level do personagem, que esta em 2, para 9999, alterar valores dos campos submetidos no form). Vou dar uma estudada nesse envio os dados via WWWforms, talvez já resolva.
Acho que pode depender muito mais da forma que está sendo projetado essa sincronização de dados, tanto de consumo do webservice como envio, no caso do envio que é mais complicado. Não sei se seria possivel ou bom encapsular os dados com criptografia um xml ou json (tambem não sei se o Unity suporta isso) e submeteria para o webservice descriptografar e fazer as atualizações no banco remoto. Talvez por HTTPS resolva essa questão de sincronização com segurança sem maiores problemas, vou dar uma verificada depois.
Foi uma das minhas primeiras preocupações quando comecei a usar WWWForms. Também sou um pouco paranoico com segurança, até contestei isso no fórum da Unity. Sempre fiquei me perguntando uma maneira de evitar que alguém manipule os dados do form que está sendo enviado.
No final das contas, eu pensei em Ssh. Como eu disse, só preciso fazer isso em jogos online, oque é bem mais fácil de manter a segurança.
EDIT: Uma maneira eficaz de proteger os dados seria usar uma criptografia AES. Uma vez que ela usa uma chave secreta pra criptografar / descriptografar os dados, a única maneira de um hack conseguir a sua SecretKey seria descompilando o seu código. E, pra reforçar um pouco a segurança do código você poderia usar algum inibidor / ofuscador.
Última edição por artplayer em Seg Dez 05, 2016 7:27 pm, editado 3 vez(es) (Motivo da edição : Sugestão de criptografia AES.)
Re: [TUTORIAL] Banco de dados || MySQL
No caso eu tenho um sistema de noticias que seria uma tabela com 3 campos: titulo da noticia, descrição e data, teria como usar esse sistema só para consultar esses dados e mostrar na Unity?
NyanHeavyBR- MembroAvançado
- PONTOS : 3308
REPUTAÇÃO : 32
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
No caso do tutorial dele, ele insere as informações, eu quero é apenas verificar elas no banco de dados. como poderia fazer isso?
NyanHeavyBR- MembroAvançado
- PONTOS : 3308
REPUTAÇÃO : 32
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
verificar no banco de dados? Assim como da pra setar valores da pra consultar ué O.o
Qual exatamente o problema?
Qual exatamente o problema?
Re: [TUTORIAL] Banco de dados || MySQL
oh, não tinha reparado em uma parte do script que faria tudo dar certo! obrigado
NyanHeavyBR- MembroAvançado
- PONTOS : 3308
REPUTAÇÃO : 32
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
caraca tudo que eu queria muito obrigado Amigo.. Funcionou perfeitamente... você é 10MarcosSchultz escreveu:verificar no banco de dados? Assim como da pra setar valores da pra consultar ué O.o
Qual exatamente o problema?
Disponibilizando o Servidor Mysql Grautito que eu usei caso a galera queira testar::::
http://www.freesqldatabase.com/
Ele possui acesso externo.
Funcionou perfeitamente .. vlw
Re: [TUTORIAL] Banco de dados || MySQL
No meu projeto deu o erro abaixo:
Assets/Database/MyDataTut.cs(12,10): error CS0012: The type `System.Data.Common.DbConnection' is defined in an assembly that is not referenced. Consider adding a reference to assembly `System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Me ajuda porfavor?
Assets/Database/MyDataTut.cs(12,10): error CS0012: The type `System.Data.Common.DbConnection' is defined in an assembly that is not referenced. Consider adding a reference to assembly `System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Me ajuda porfavor?
Pika- Iniciante
- PONTOS : 2782
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Pika escreveu:No meu projeto deu o erro abaixo:
Assets/Database/MyDataTut.cs(12,10): error CS0012: The type `System.Data.Common.DbConnection' is defined in an assembly that is not referenced. Consider adding a reference to assembly `System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Me ajuda porfavor?
voce mudou no player setting para Versao net 2.0?
Re: [TUTORIAL] Banco de dados || MySQL
Pika escreveu:No meu projeto deu o erro abaixo:
Assets/Database/MyDataTut.cs(12,10): error CS0012: The type `System.Data.Common.DbConnection' is defined in an assembly that is not referenced. Consider adding a reference to assembly `System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Me ajuda porfavor?
Amigo, se você ta usando o Unity 5.5 ou superior, você vai ter que ir la na sua pasta do unity, onde voce pegou a DLL I81N, e vai pegar a DLL "System.Data.dll" e vai copiar pro seu projeto! Feito isso, é sucesso! flws
Re: [TUTORIAL] Banco de dados || MySQL
Crie uma pasta em seu Unity com o nome de Plugins
Coloque as Dll ( I18N.dll e I18N.West.dll e essas tambem System.Data.dll)
e no player setting para Versao net 2.0
pronto vai funcionar.
Coloque as Dll ( I18N.dll e I18N.West.dll e essas tambem System.Data.dll)
e no player setting para Versao net 2.0
pronto vai funcionar.
NKKF- ProgramadorMaster
- PONTOS : 4821
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Muito bomSouris escreveu:UP NESSE TÓPICO DELÍCIA, ISSO NÃO PODE MORRER NUNCA
ruanzikaad- Mestre
- PONTOS : 3191
REPUTAÇÃO : 47
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Você sabe que dá para criar um banco de dados direto no c# né ? sem usar php;Souris escreveu:UP NESSE TÓPICO DELÍCIA, ISSO NÃO PODE MORRER NUNCA
ruanzikaad- Mestre
- PONTOS : 3191
REPUTAÇÃO : 47
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Sim, porém tem defeitos nisto.
NKKF- ProgramadorMaster
- PONTOS : 4821
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Galera estou recebendo o seguinte erro ao no console do unity
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary`2[System.String,MySql.Data.MySqlClient.CharacterSet].get_Item (System.String key) [0x000a2] in
Quando vou ate o código diz que o erro refere a esta parte
mais eu não sei o que pode esta causando este erro alguém pode ajudar?
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary`2[System.String,MySql.Data.MySqlClient.CharacterSet].get_Item (System.String key) [0x000a2] in
Quando vou ate o código diz que o erro refere a esta parte
- Código:
Debug.LogError(e); // mostre o erro no console
mais eu não sei o que pode esta causando este erro alguém pode ajudar?
kaique2346- Iniciante
- PONTOS : 2686
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Boa tarde a todos!!
Tenho uma duvida sobre esse tópico, tenho uma aplicação com Unity e MySql e no Pc roda normalmente abrindo o banco e consultando ( no editor do Unity ), mas no android ele cai na exceção e não conecta, desculpe se a pergunta é muito obvia mas sou iniciante em unity . Na pasta assets tenho o system.data.dll e o mysql.data.dll , é necessario algum plugin?
Agradeço a atenção de todos !!!!!
Tenho uma duvida sobre esse tópico, tenho uma aplicação com Unity e MySql e no Pc roda normalmente abrindo o banco e consultando ( no editor do Unity ), mas no android ele cai na exceção e não conecta, desculpe se a pergunta é muito obvia mas sou iniciante em unity . Na pasta assets tenho o system.data.dll e o mysql.data.dll , é necessario algum plugin?
Agradeço a atenção de todos !!!!!
BrunoHenRod- Iniciante
- PONTOS : 2248
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Primeiro seu mysql está hospedado na internet ou está local? e como vc e iniciante, só mandar os dados para o PHP não faz pela unity não, usa o método post e o get para enviar para o php, deixa esse processamento de conexão com o php pois a unity não e muito compatível com isso. Tem outros post no fórum ensinado isso.BrunoHenRod escreveu:Boa tarde a todos!!
Tenho uma duvida sobre esse tópico, tenho uma aplicação com Unity e MySql e no Pc roda normalmente abrindo o banco e consultando ( no editor do Unity ), mas no android ele cai na exceção e não conecta, desculpe se a pergunta é muito obvia mas sou iniciante em unity . Na pasta assets tenho o system.data.dll e o mysql.data.dll , é necessario algum plugin?
Agradeço a atenção de todos !!!!!
igorobm- MembroAvançado
- PONTOS : 2837
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Estou com problemas, coloquei tudo, iniciei a Mysql.data e na hora de criar a conexao eu tenho esse erro:
Alguem ajuda?
- Código:
MySql.Data.MySqlClient.MySqlException: Reading from the stream has failed. ---> System.IO.IOException: Read failure ---> System.Net.Sockets.SocketException: Foi forçado o cancelamento de uma conexão existente pelo host remoto
Alguem ajuda?
dazentt55- Avançado
- PONTOS : 3016
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Resolvi o problema acima, era erro de versão do conector mysql
dazentt55- Avançado
- PONTOS : 3016
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Eu consigo fazer a conexão pelo localhost? se sim como eu faço para modificar a porta padrao?
dazentt55- Avançado
- PONTOS : 3016
REPUTAÇÃO : 10
Áreas de atuação : progamador
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Tenho uma dúvida consigo conectar um jogo mobile direto ao bando mysql, assim como se faz no pc,
sem usar as classe WWW do unity?
sem usar as classe WWW do unity?
sabbath- MembroAvançado
- PONTOS : 3366
REPUTAÇÃO : 24
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
sabbath escreveu:Tenho uma dúvida consigo conectar um jogo mobile direto ao bando mysql, assim como se faz no pc,
sem usar as classe WWW do unity?
Em um banco de dados local? ou na rede?
Re: [TUTORIAL] Banco de dados || MySQL
MarcosSchultz escreveu:sabbath escreveu:Tenho uma dúvida consigo conectar um jogo mobile direto ao bando mysql, assim como se faz no pc,
sem usar as classe WWW do unity?
Em um banco de dados local? ou na rede?
na rede usando a apk, no unity funciona
sabbath- MembroAvançado
- PONTOS : 3366
REPUTAÇÃO : 24
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Função insert plxxxx
numb123- Avançado
- PONTOS : 2319
REPUTAÇÃO : 11
Idade : 27
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
numb123 escreveu:Função insert plxxxx
- Código:
INSERT INTO table_name (column1, column2, column3, ...)[size=16][/size]
VALUES (value1, value2, value3, ...);
Khrys- Iniciante
- PONTOS : 2022
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Fala devs!
Eu tô com uma dificuldade na hora de acessar o banco de dados, o Unity me pede para definir o SSL, e eu não sei como é que pode fazer isso?
Alguém tem alguma ideia?
Eu tô com uma dificuldade na hora de acessar o banco de dados, o Unity me pede para definir o SSL, e eu não sei como é que pode fazer isso?
Alguém tem alguma ideia?
LuccaGiffoni- Iniciante
- PONTOS : 1340
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Em q linha? Manda seu código ou a linha
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
A real, é que eu já consegui solucionar os problemas do SSL, eu simplesmente desativei o SSL dentro do meu database. Mas, assim que eu desativei, surgiu esse problema de que está dessincronizado com meu DB. Não sei como resolver...Pokedlg escreveu:Em q linha? Manda seu código ou a linha
Esse foi o erro:
MySql.Data.MySqlClient.MySqlException (0x80004005): Out of sync with server
at MySql.Data.MySqlClient.NativeDriver.ReadOk (System.Boolean read) [0x00097] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.NativeDriver.AuthenticateNew () [0x000f6] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.NativeDriver.Authenticate () [0x00016] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.NativeDriver.Open () [0x002d1] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.Driver.Open () [0x0000b] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.Driver.Create (MySql.Data.MySqlClient.MySqlConnectionStringBuilder settings) [0x00022] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection () [0x00000] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection () [0x00083] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver () [0x00042] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.MySqlPool.GetConnection () [0x0001c] in <326e9aab93854e739606c3572c385a34>:0
at MySql.Data.MySqlClient.MySqlConnection.Open () [0x000f3] in <326e9aab93854e739606c3572c385a34>:0
at OpenConnection.ConectarBanco (System.String _source) [0x00024] in D:\Unity Docs\HoloLens Projects\MySQL Connection\Assets\Scripts\OpenConnection.cs:29
UnityEngine.Debug:LogError(Object)
OpenConnection:ConectarBanco(String) (at Assets/Scripts/OpenConnection.cs:35)
OpenConnection:Start() (at Assets/Scripts/OpenConnection.cs:17)
LuccaGiffoni- Iniciante
- PONTOS : 1340
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Eu alterei um pouco o código e esse erro desapareceu ao usar "OpenAsync", mas ainda assim continua não funcionando e as funções para mostrar os dados não funcionam...
void Start()
{
// Server=unity-azure.mysql.database.azure.com; Port=3306; Database={your_database}; Uid=lucca@unity-azure; Pwd={your_password}; SslMode=Preferred;
source = "Server=" + Host + "; Port=3306; Database=" + DataBaseName + ";Uid=" + User + ";Pwd=" + Pass; // Estamos criando a source string para conexoes MySQL
print("Criando conexao"); // Printamos que estamos criando a conexão
connection = new MySqlConnection(source); // criando a conexao
print("Abrindo conexao"); // Printamos que estamos abrindo a conexão
connection.OpenAsync(); // abrir a conexao
print("Conexao aberta");
}
public void CallDatabase(MySqlConnection _conn)
{
MySqlCommand cmd = _conn.CreateCommand(); // criamos um comando vazio na conexao passada
cmd.CommandText = "SELECT * FROM " + LoginTableName; // colocamos uma requisicao sql no comando pertencente a esta conexao
MySqlDataReader dados = cmd.ExecuteReader(); // executamos este comando na conexao passada
while (dados.Read())
{ // enquanto houver dados
print("Dados: " + "ID: " + dados["cod_cli"] + ". UserName: " + dados["nome"] + ". Profissao: " + dados["profissao"] + ". CEP: " + dados["cep"] + "\n"); // Mostramos estes dados
}
dados.Close(); // por fim fechamos a leitura e o comando
cmd.Dispose();
}
void OnApplicationQuit()
{ // Se a aplicação for fechada
connection.Close(); // Fechamos a conexao
connection = null;
print("Database Fechado"); // Printamos que foi fechado
}
}
void Start()
{
// Server=unity-azure.mysql.database.azure.com; Port=3306; Database={your_database}; Uid=lucca@unity-azure; Pwd={your_password}; SslMode=Preferred;
source = "Server=" + Host + "; Port=3306; Database=" + DataBaseName + ";Uid=" + User + ";Pwd=" + Pass; // Estamos criando a source string para conexoes MySQL
print("Criando conexao"); // Printamos que estamos criando a conexão
connection = new MySqlConnection(source); // criando a conexao
print("Abrindo conexao"); // Printamos que estamos abrindo a conexão
connection.OpenAsync(); // abrir a conexao
print("Conexao aberta");
}
public void CallDatabase(MySqlConnection _conn)
{
MySqlCommand cmd = _conn.CreateCommand(); // criamos um comando vazio na conexao passada
cmd.CommandText = "SELECT * FROM " + LoginTableName; // colocamos uma requisicao sql no comando pertencente a esta conexao
MySqlDataReader dados = cmd.ExecuteReader(); // executamos este comando na conexao passada
while (dados.Read())
{ // enquanto houver dados
print("Dados: " + "ID: " + dados["cod_cli"] + ". UserName: " + dados["nome"] + ". Profissao: " + dados["profissao"] + ". CEP: " + dados["cep"] + "\n"); // Mostramos estes dados
}
dados.Close(); // por fim fechamos a leitura e o comando
cmd.Dispose();
}
void OnApplicationQuit()
{ // Se a aplicação for fechada
connection.Close(); // Fechamos a conexao
connection = null;
print("Database Fechado"); // Printamos que foi fechado
}
}
LuccaGiffoni- Iniciante
- PONTOS : 1340
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Eu joguei o que eu estou alterando nesse código no GitHub pra poder ter mais gente trabalhando no código e identificando erros.
Se quiser dar uma olhada e ver o que estou fazendo de errado, e me ajudar (e bastante hahahah), é só acessar o repositório:
https://github.com/LuccaGiffoni/MySQLforUnity
Se quiser dar uma olhada e ver o que estou fazendo de errado, e me ajudar (e bastante hahahah), é só acessar o repositório:
https://github.com/LuccaGiffoni/MySQLforUnity
LuccaGiffoni- Iniciante
- PONTOS : 1340
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Fala devs!
(Sou eu de novo heheh)
Dessa vez eu consegui fazer as paradas funcionarem, mas surgiu um erro que eu não conheço. Alguém sabe como arrumar isso?
O projeto é meio urgente heheh
Valeu mesmo!
Segue o erro:
(Sou eu de novo heheh)
Dessa vez eu consegui fazer as paradas funcionarem, mas surgiu um erro que eu não conheço. Alguém sabe como arrumar isso?
O projeto é meio urgente heheh
Valeu mesmo!
Segue o erro:
- Código:
System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception. ---> System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.MySqlConfiguration' threw an exception. ---> System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.PlatformNotSupportedException: Operation is not supported on this platform.
at System.Configuration.ClientConfigPaths..ctor (System.String exePath, System.Boolean includeUserConfig) [0x00050] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ClientConfigPaths.GetPaths (System.String exePath, System.Boolean includeUserConfig) [0x00018] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ClientConfigurationHost.get_ConfigPaths () [0x0000a] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ClientConfigurationHost.GetStreamName (System.String configPath) [0x0006d] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ClientConfigurationHost.get_IsAppConfigHttp () [0x00000] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.Internal.DelegatingConfigHost.get_IsAppConfigHttp () [0x00006] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ClientConfigurationSystem..ctor () [0x00051] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ConfigurationManager.EnsureConfigurationSystem () [0x00024] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
--- End of inner exception stack trace ---
at System.Configuration.ConfigurationManager.EnsureConfigurationSystem () [0x00060] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ConfigurationManager.PrepareConfigSystem () [0x0000a] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at System.Configuration.ConfigurationManager.GetSection (System.String sectionName) [0x0000a] in <0e721f564ffa49e6b1d97ad7b9fda1f2>:0
at MySql.Data.MySqlClient.MySqlConfiguration..cctor () [0x00000] in <ca9a5c004c3044b3a5fad3f589c53f81>:0
--- End of inner exception stack trace ---
at MySql.Data.MySqlClient.Replication.ReplicationManager..cctor () [0x0001e] in <ca9a5c004c3044b3a5fad3f589c53f81>:0
--- End of inner exception stack trace ---
at MySql.Data.MySqlClient.MySqlConnection.Open () [0x00234] in <ca9a5c004c3044b3a5fad3f589c53f81>:0
at OpenConnection.ConnectDB (System.String _source) [0x00024] in D:\Unity Docs\HoloLens Projects\MySQL for Unitt Schultz\Assets\OpenConnection.cs:38
UnityEngine.Debug:LogError(Object)
OpenConnection:ConnectDB(String) (at Assets/OpenConnection.cs:45)
OpenConnection:Start() (at Assets/OpenConnection.cs:19)
LuccaGiffoni- Iniciante
- PONTOS : 1340
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Nao consigo resolver esse erro, alguem pode me ajudar ?
Loading assembly failed: "Assets/Plugins/I18N.West.dll" reason: File does not contain a valid CIL image
Loading assembly failed: "Assets/Plugins/I18N.dll" reason: File does not contain a valid CIL image
Loading assembly failed: "Assets/Plugins/I18N.West.dll" reason: File does not contain a valid CIL image
Loading assembly failed: "Assets/Plugins/I18N.dll" reason: File does not contain a valid CIL image
Celerom- Iniciante
- PONTOS : 1739
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Banco de dados || MySQL
Boa tarde!BrunoHenRod escreveu:Boa tarde a todos!!
Tenho uma duvida sobre esse tópico, tenho uma aplicação com Unity e MySql e no Pc roda normalmente abrindo o banco e consultando ( no editor do Unity ), mas no android ele cai na exceção e não conecta, desculpe se a pergunta é muito obvia mas sou iniciante em unity . Na pasta assets tenho o system.data.dll e o mysql.data.dll , é necessario algum plugin?
Agradeço a atenção de todos !!!!!
Meu problema é exatamente esse, estou desenvolvendo um jogo com Banco de Dados Online e quando faço testes diretamente dentro da Unity funciona normalmente, usando MySql e busca todos os dados remotamente, mas quando faço biuld, instalo no android, e inicio o jogo ele não sai da parte da conexão.
Já fiz com PHP usando o WWWFrom, mas achei ruim, e dava vários erros principalmente para salvar dados do jogador, finalização de partidas, dependia de uma resposta vinda por ele e o jogo craxava e o pior o jogador tinha que reiniciar o jogo e no fim nem tinha salvo as conquista da partida.
Teste essa com códigos MySql diretamente no C# e achei bem mais instável, como disse funciona perfeitamente no editor da Unity, mas depois de fazer biuld e tentar rodar no android, não faz nem a conexão, desculpa estar sendo redundante na pergunta, mas estou com esse problemas a dias e não tenho nem ideia de como resolver.
Tenho a mesma dúvida que é se precisa de algum plugin específico no projeto para funcionar?
Ou estou longe de uma solução?
Desde já obrigado.
jefersonpkl- Iniciante
- PONTOS : 1401
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] C# .NET | Visual Studio - conexão com banco de dados MySQL
» Banco de dados Mysql e PHP?
» Banco de dados MySQL
» Mysql Retorna Dados na Cena
» [TUTORIAL] Unity + PHP + Mysql (com PDO)
» Banco de dados Mysql e PHP?
» Banco de dados MySQL
» Mysql Retorna Dados na Cena
» [TUTORIAL] Unity + PHP + Mysql (com PDO)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos