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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

1756閲覧

C# で MYSQL にINSERT

yuto0418

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/11/12 03:43

前提・実現したいこと

C#でデータベースへ情報を登録するプログラムを作成中に躓いてしまったので、
どなたかご教導していただければありがたいです。

発生している問題・エラーメッセージ

例外がスローされました: 'MySql.Data.MySqlClient.MySqlException' (MySql.Data.dll の中) Parameter '?president' has already been defined.

該当のソースコード

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Threading.Tasks; 5using System.Windows.Forms; 6using MySql.Data.MySqlClient; 7 8namespace Heconomy 9{ 10 11 internal static class Program 12 { 13 14 private static readonly string Server = "server name"; 15 private static readonly string Port = "portnum"; 16 private static readonly string Uid = "username"; 17 private static readonly string Pwd = "password"; 18 private static readonly string Database = "Cdata"; 19 20 private static readonly string ConnectionString = $"Server={Server}; Port={Port}; Database={Database}; Uid={Uid}; Pwd={Pwd}"; 21 22 /// <summary> 23 /// アプリケーションのメイン エントリ ポイントです。 24 /// </summary> 25 [STAThread] 26 static void Main() 27 { 28 Application.EnableVisualStyles(); 29 Application.SetCompatibleTextRenderingDefault(false); 30 Application.Run(new Form1()); 31 32 } 33 34 public static void FirstEasySql() 35 { 36 37 var conn = new MySqlConnection(ConnectionString); 38 39 try 40 { 41 42 43 44 Form2 form2 = new Form2(); 45 string company = form2.Cname; 46 string president = form2.mcid; 47 int money = form2.money; 48 string category1 = form2.BigC; 49 string category2 = form2.MidC; 50 51 string cmdstr = "INSERT INTO EasyDB (name,mcid,money,bigname,midname) Values (?company, ?president, ?money, ?category1, ?category2)"; 52 53 MySqlCommand cmd = new MySqlCommand(cmdstr, conn); 54 MySqlParameter prm = cmd.CreateParameter(); 55 56 prm.ParameterName = "?company"; 57 prm.Value = company; 58 cmd.Parameters.Add(prm); 59 60 prm.ParameterName = "?president"; 61 prm.Value = president; 62 cmd.Parameters.Add(prm); 63 64 prm.ParameterName = "?money"; 65 prm.Value = money; 66 cmd.Parameters.Add(prm); 67 68 prm.ParameterName = "?category1"; 69 prm.Value = category1; 70 cmd.Parameters.Add(prm); 71 72 prm.ParameterName = "?category2"; 73 prm.Value = category2; 74 cmd.Parameters.Add(prm); 75 76 cmd.Connection.Open(); 77 cmd.ExecuteNonQuery(); 78 cmd.Connection.Close(); 79 } 80 catch (MySqlException mse) 81 { 82 Console.WriteLine(mse.Message); 83 Form7 form7 = new Form7(); 84 form7.ShowDialog(); 85 } 86 } 87 } 88}

試したこと

定義の書き違えかと思い書き直してみたりもしましたが同様のエラーが起き解決できませんでした。
また、定義法則があるのかと思い検索をかけ、似たような事象、公式ドキュメント内にないかと探してみましたが
発見できませんでした。

補足情報(FW/ツールのバージョンなど)

サーバー関連の文字は適当な文字列に変換しています。実際はしっかりと情報が入っています。

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

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

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

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

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

guest

回答1

0

自己解決

パラメータをいちいちクリエイトするのを忘れていました。
今度からは、しっかりコードチェックしなければいけないですね...

投稿2021/11/12 03:53

yuto0418

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問