前提・実現したいこと
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/ツールのバージョンなど)
サーバー関連の文字は適当な文字列に変換しています。実際はしっかりと情報が入っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。