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

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

ただいまの
回答率

91.23%

  • Unity

    2478questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • AWS(Amazon Web Services)

    1356questions

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

  • Unity3D

    857questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 63

RukonA

score 1

前提・実現したいこと

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)

該当のソースコード

using UnityEngine;
using System;
using System.Collections;

using MySql.Data;
using MySql.Data.MySqlClient;

public class MySQLTest : MonoBehaviour
{

    string SERVER = "DBインスタンスのエンドポイント";
    string DATABASE = "DB名";
    string USERID = "ユーザ名";
    string PORT = "3306";
    string PASSWORD = "DBインスタンス作成時に設定したパスワード";
    string TABLENAME = "hoge";

    void Start()
    {
        StartCoroutine(CreateData());
    }

    IEnumerator CreateData()
    {
        MySqlConnection con = null;

        string conCmd =
                "server=" + SERVER + ";" +
                "database=" + DATABASE + ";" +
                "userid=" + USERID + ";" +
                "port=" + PORT + ";" +
                "password=" + PASSWORD;

        try
        {
            con = new MySqlConnection(conCmd);
            con.Open();
            Debug.Log("success");
        }
        catch (MySqlException ex)
        {
            Debug.Log(ex.ToString());
        }

        string createCmd = "CREATE TABLE " + TABLENAME + "(ID INT(3),NAME VARCHAR(10))";

        MySqlCommand cmd = new MySqlCommand(createCmd, con);

        IAsyncResult iAsync = cmd.BeginExecuteReader();

        while (!iAsync.IsCompleted)
        {
            yield return 0;
        }

        con.Close();
        con.Dispose();
    }
}

その他の説明

コードはこちらを拝借しました
https://qiita.com/oishihiroaki/items/6eb9732efb44d4986428

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/16 19:56

    コメントありがとうございます。
    根本的な部分で色々ご説明いただき非常に助かりました。セキュリティに関してはうすうす変な気はしていましたが、はっきり仰っていただいて良かったです。
    AWSは無料枠があるのでとりあえずと思い試してみましたが、初心者にはまだ早かったかもしれません。

    クライアント→サーバー上のプログラム→データベースということで改めて調べていこうと思います。
    方向性を示していただきありがとうございます。

    そもそも質問自体に問題があったようですので、こちらをベストアンサーとして閉めさせていただきます。

    キャンセル

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

ただいまの回答率

91.23%

関連した質問

  • 解決済

    After end of result setというエラー

    前提・実現したいこと ログイン画面でdelete_flagが1ならログインさせず、 それ以外ならさせるという処理を組み立てています。 しかし以下のようなエラーが出て困っていま

  • 解決済

    CakePHP3系のインストールに関して

    cakephpをcomposerを使ってインストールしました。 cakephp自体はローカル環境にインストールは出来て、cakephpのサーバーにアクセスするとデータベースに

  • 解決済

    パーティクルシステムの再生位置をスクリプトで制御したい。

    前提・実現したいこと シーン上のパーティクルシステムの再生時間をスクリプトで制御したいと思っています。 シーン上にパーティクルシステムを置いた場合、そのシミュレートとして、

  • 解決済

    EC2上でのシンタックスエラーについて

    EC2にSSH接続して、Node.jsを起動するために「sudo npm start」のコマンドを走らせると下記のようなエラーが出てしまい原因がわからず困っています。 間違えって

  • 解決済

    Mysqlの外部サーバーへの接続

    アプリケーションから、外部のMysqlサーバーへのデータの読み書きを行いたいため、 ローカルのMysqlクライアント?から、AWS上に作成したMysqlへの接続を試しています。

  • 解決済

    SQLでカウントした結果を変数に代入したい

    こんにちわ VS2010 DBはPostgres です SQLでカウントした値を変数に代入したいのですがうまくできません @kensuu →結果を代入したい変数 s

  • 解決済

    Public AccessのRDSへIAM認証に失敗する

    前提・実現したいこと こちらの記事を参考にAWS Lambda(Nodejs6.10)でRDS(MySQL5.7.16)へのIAM認証を試みましたが、 コネクション生成時にエラーに

  • 受付中

    [Unity5.6]スプライトをOnTriggerでフェードイン・フェードアウトしたい

    前提・実現したいこと Unity・C#初心者です。 あるスプライトにプレイヤーが接触したらそのスプライトの透明度が変わるコードを書いています。 下記のようなコードで、OnTri

同じタグがついた質問を見る

  • Unity

    2478questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • AWS(Amazon Web Services)

    1356questions

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

  • Unity3D

    857questions

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