質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1426閲覧

UnityからAWSのMySQLデータベースへ接続したい

RukonA

総合スコア7

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2017/12/16 09:28

###前提・実現したいこと
UnityからAWSのMySQLデータベースへ接続し、データの取得や更新、追加等の処理を行う

###発生している問題・エラーメッセージ
MySQLへ接続できない

KeyNotFoundException: The given key was not present in the dictionary. System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:150) MySql.Data.MySqlClient.MySqlConnectionStringBuilder.get_Database () MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString (System.String value) MySql.Data.MySqlClient.MySqlConnection..ctor (System.String connectionString) (wrapper remoting-invoke-with-check) MySql.Data.MySqlClient.MySqlConnection:.ctor (string) MySQLTest+<CreateData>c__Iterator0.MoveNext () (at Assets/Scripts/MySQLTest.cs:36) UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17) UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator) MySQLTest:Start() (at Assets/Scripts/MySQLTest.cs:20)

###該当のソースコード

C#

1using UnityEngine; 2using System; 3using System.Collections; 4 5using MySql.Data; 6using MySql.Data.MySqlClient; 7 8public class MySQLTest : MonoBehaviour 9{ 10 11 string SERVER = "DBインスタンスのエンドポイント"; 12 string DATABASE = "DB名"; 13 string USERID = "ユーザ名"; 14 string PORT = "3306"; 15 string PASSWORD = "DBインスタンス作成時に設定したパスワード"; 16 string TABLENAME = "hoge"; 17 18 void Start() 19 { 20 StartCoroutine(CreateData()); 21 } 22 23 IEnumerator CreateData() 24 { 25 MySqlConnection con = null; 26 27 string conCmd = 28 "server=" + SERVER + ";" + 29 "database=" + DATABASE + ";" + 30 "userid=" + USERID + ";" + 31 "port=" + PORT + ";" + 32 "password=" + PASSWORD; 33 34 try 35 { 36 con = new MySqlConnection(conCmd); 37 con.Open(); 38 Debug.Log("success"); 39 } 40 catch (MySqlException ex) 41 { 42 Debug.Log(ex.ToString()); 43 } 44 45 string createCmd = "CREATE TABLE " + TABLENAME + "(ID INT(3),NAME VARCHAR(10))"; 46 47 MySqlCommand cmd = new MySqlCommand(createCmd, con); 48 49 IAsyncResult iAsync = cmd.BeginExecuteReader(); 50 51 while (!iAsync.IsCompleted) 52 { 53 yield return 0; 54 } 55 56 con.Close(); 57 con.Dispose(); 58 } 59}

###その他の説明
コードはこちらを拝借しました
https://qiita.com/oishihiroaki/items/6eb9732efb44d4986428

そもそもAWSやSQL自体が初めてで何も分かっていません。
根本的なところが違うのだろうとは思いますが、まず何からすれば良いのか分かりません。
回答に必要な情報がございましたら教えて頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

※これは回答ではありません。また、どのくらいの知識を持っているかどうか分からないので、もし知っているのであればごめんなさい。

まず、最終的にこのソースをどのように使いたいのでしょうか?
もし、例えば「ゲームのクライアントにこれを実装し、データベースに直接接続したい」というのであれば(内容にもよりますが基本的には)セキュリティ的に非常に危険です。
というのも、ソースに直接サーバーやユーザー名、パスワードを記載しているので、悪意のある第三者がそれを使って自由にデータベースを変更することが出来てしまうからです。

基本的には、PHPなどでサーバー上で動くプログラムを作成し、それにクライアントをアクセスさせるようにするのがよいです。
(クライアント→サーバー上のプログラム→データベースといった具合になります)
ただし、この場合でもSQL文をクライアントに書いてしまうとまずい(そのSQL文を書き換えるだけで自由にデータベースを変更できてしまう)ので、お気をつけください。

また、手遅れかもしれませんが、もし勉強段階であるのであれば、AWSではなく仮想マシン(VirtualBoxなど)かXAMPPなどで環境を作ってそちらで試すのがよいと思います。無料ですし。

投稿2017/12/16 10:19

編集2017/12/16 10:22
fiveHundred

総合スコア9805

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RukonA

2017/12/16 10:56

コメントありがとうございます。 根本的な部分で色々ご説明いただき非常に助かりました。セキュリティに関してはうすうす変な気はしていましたが、はっきり仰っていただいて良かったです。 AWSは無料枠があるのでとりあえずと思い試してみましたが、初心者にはまだ早かったかもしれません。 クライアント→サーバー上のプログラム→データベースということで改めて調べていこうと思います。 方向性を示していただきありがとうございます。 そもそも質問自体に問題があったようですので、こちらをベストアンサーとして閉めさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問