teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

誤字修正

2021/03/16 02:21

投稿

TKCpart2
TKCpart2

スコア11

title CHANGED
File without changes
body CHANGED
@@ -161,5 +161,5 @@
161
161
 
162
162
  **修正の要請を受けて**
163
163
  エラー内容はこの状態で実行すると
164
- The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外は出力ウィンドウの中にsystem.invalidoperation.exception(MySQL.dllの中)が検出されていました。
165
- ご指摘ありがとうございます。コード全文を載せてみました。一応細かいところは後から手を入れて直していく予定でしたのでクライアントとの接続やSQLクエリなどは問題だらけかもしれません。MySqlConnectionのインスタンスの再生成は問題解決時にMySQLのリファレンスを調べていたところ、ConnectionStringプロパティは自動的な更新がされないことがあり意図しない動作を起こすことがある、とのことだったので変更が効いていないのかと思い、インスタンスを再生成してみましたが、再生成してもしなくても結果は同じでした。一応ブレークポイントや途中の出力命令などでも何度も値は確認しているのですが、文字列自体は入っていて値自体もコメント欄に書いた値と同様のものでした。コードはvisualstudio2019では「問題はみつかりませんでした」となり、実行も可能でした。個人的にはどうやらMySQLのコネクタはNugetの物を使わなければならなかったらしく、MySQLのインストール時についてきたコネクタを使用してしまった後、Nugetから色々引っ張ってきてしまったのでDLLの依存関係か何か?に引っかかっているのではないか?と思うのですが。これで私の未熟さが原因でそもそもコードが根本的に間違っていたら申し訳ありません。
164
+ The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外はMySQLの付属コネクタ使用時及びNugetのコネクタ使用時どちらも出力ウィンドウの中にsystem.invalidoperation.exception(MySQL.dllの中)が検出されていました。
165
+ ご指摘ありがとうございます。コード全文を載せてみました。一応細かいところは後から手を入れて直していく予定でしたのでクライアントとの接続やSQLクエリなどは問題だらけかもしれません。MySqlConnectionのインスタンスの再生成は問題解決時にMySQLのリファレンスを調べていたところ、ConnectionStringプロパティは自動的な更新がされないことがあり意図しない動作を起こすことがある、とのことだったので変更が効いていないのかと思い、インスタンスを再生成してみましたが、再生成してもしなくても結果は同じでした。一応ブレークポイントや途中の出力命令などでも何度も値は確認しているのですが、文字列自体は入っていて値自体もコメント欄に書いた値と同様のものでした。コードはvisualstudio2019では「問題はみつかりませんでした」となり、実行も可能でした。個人的にはどうやらMySQLのコネクタはNugetの物を使わなければならなかったらしく、MySQLのインストール時についてきたコネクタを使用してしまった後、Nugetから色々引っ張ってきてしまったのでDLLが不足もしくはDLL同士の依存関係か何か?に引っかかっているのではないか?と思うのですが。しかし、私の未熟さが原因でそもそもコードが根本的に間違っていたら申し訳ありません。

3

誤字修正

2021/03/16 02:21

投稿

TKCpart2
TKCpart2

スコア11

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
  **やりたい事**
5
5
  C#のプログラムからMySQLへ接続したいのですが、接続が上手く繋がりません。
6
6
 
7
- **ソースコード(要点)**
7
+ **ソースコード(全体修正前なで問題だらけですがご容赦ください)**
8
8
  ``` C#
9
9
  using System;
10
10
  using System.Collections.Generic;

2

ソースコード全文追加、詳細は”修正の要請を受けて”に加筆、修正記載致しました。

2021/03/16 02:15

投稿

TKCpart2
TKCpart2

スコア11

title CHANGED
File without changes
body CHANGED
@@ -6,37 +6,160 @@
6
6
 
7
7
  **ソースコード(要点のみ)**
8
8
  ``` C#
9
- using System;
9
+ using System;
10
+ using System.Collections.Generic;
11
+ using System.ComponentModel;
12
+ using System.Data;
10
13
  using MySql.Data.MySqlClient;
14
+ using System.Drawing;
15
+ using System.Linq;
16
+ using System.Text;
17
+ using System.Threading.Tasks;
18
+ using System.Windows.Forms;
11
19
  using System.Net;
12
20
  using System.Net.Sockets;
21
+ using System.IO;
13
22
 
23
+ namespace 掲示板サーバー
14
- 〜中略〜
24
+ {
25
+ public partial class BoardServer : Form
26
+ {
27
+ public BoardServer()
28
+ {
29
+ InitializeComponent();
30
+ }
15
31
 
32
+ //起動ボタン押した時の処理
33
+ private void ServerStart()
34
+ {
35
+ //下準備(ホスト名からIPアドレス取得)
16
- MySqlConnection mysqlConnection
36
+ string hostname = Dns.GetHostName();
37
+ IPAddress[] iPAddresses = Dns.GetHostAddresses(hostname);
38
+ IPAddress iP = IPAddress.Parse(iPAddresses[2].ToString());
39
+
40
+ //接続待ちをするオブジェクト作成
41
+ TcpListener tcpListener = new TcpListener(iP, 45559);
42
+ try
43
+ {
44
+ //接続開始
45
+ tcpListener.Start();
46
+ TcpClient tcp = tcpListener.AcceptTcpClient();
17
- =new MySqlConnection()
47
+ if(tcp.Connected==true)
48
+ {
18
- MySqlconnectionBuilder stringBuilder
49
+ Console.WriteLine("接続完了");
50
+ }
51
+ else
52
+ {
19
- =new MySqlconnectionStringBuilder()
53
+ Console.WriteLine("未接続。。。?");
54
+ }
55
+
56
+ using (NetworkStream stream = tcp.GetStream())
57
+ {
58
+ using (StreamReader streamReader = new StreamReader(stream))
59
+ {
60
+ using (StreamWriter streamWriter = new StreamWriter(stream))
61
+ {
62
+ string message = streamReader.ReadToEnd();
63
+
20
64
 
65
+ //ここからデータベース関係の処理?(今回使用するのはMySQL)
66
+               //該当コード
67
+ MySqlConnection mySqlConnection = new MySqlConnection();
68
+
69
+ MySqlConnectionStringBuilder stringBuilder = new MySqlConnectionStringBuilder();
21
- stringBuilder.Database="keijiban";
70
+ stringBuilder.Database = "keijiban";
22
- stringBuilder.Server="localhost";
71
+ stringBuilder.Server = "localhost";
23
- stringBuilder.UserID="General";
72
+ stringBuilder.UserID = "General";
24
- stringBuilder.Password="ringo";
73
+ stringBuilder.Password = "ringo";
74
+
75
+ try
76
+ {
77
+ mySqlConnection.ConnectionString =$"Database={stringBuilder.Database};Server={stringBuilder.Server};UserID={stringBuilder.UserID};Password={stringBuilder.Password};";
78
+
79
+ mySqlConnection = new MySqlConnection(mySqlConnection.ConnectionString);
80
+ textBox1.Text= mySqlConnection.ConnectionString.ToString();
81
+ mySqlConnection.Open();
82
+                  //該当コードここまで?
83
+ }
84
+ catch (MySqlException e)
85
+ {
86
+ ExceptionBox.Text = "MySQLに接続できません。";
87
+ ExceptionBox.Text = e.Message;
88
+ }
25
89
 
26
- mySqlConnection.ConnectionString
90
+ MySqlScript mySqlScript = new MySqlScript();
27
- =$"Database={stringBuilder.Database};
28
- Server={stringBuilder.Server};
29
- UserID={stringBuilder.UserID};
30
- Password={stringBuilder.Password};
31
91
 
32
- mySqlConnection=
92
+ //主キー判定
93
+ try
94
+ {
95
+ mySqlScript.Query = "SELECT txt_id FROM Board;";
33
- new MySqlConnection(mySqlConnection. ConnectionString);
96
+ string s = mySqlScript.Execute().ToString();
34
- mySqlconnection.open();
35
97
 
98
+
99
+ if (s == null)
100
+ {
101
+
102
+ mySqlScript.Query = "INSERT INTO Board(txt_id) VALUES(1);";
103
+ mySqlScript.Execute();
104
+ }
105
+ else
106
+ {
107
+ mySqlScript.Query = "SELECT MAX txt_id FROM Board;";
108
+ int icount = mySqlScript.Execute();
109
+ icount = +1;
110
+ string final = icount.ToString();
111
+
112
+ mySqlScript.Query = $"INSERT INTO Board(txt_id) VALUES({final});";
113
+ mySqlScript.Execute();
114
+ }
115
+
116
+
117
+ mySqlScript.Query = $"INSERT INTO Board(txt_contents) VALUES({message});";
118
+ mySqlScript.Execute();
119
+ mySqlScript.Query = "SELECT txt_contents FROM Board;";
120
+ string txt = mySqlScript.Execute().ToString();
121
+
122
+ streamWriter.WriteLine(txt);
123
+ }
124
+ catch (MySqlException e)
125
+ {
126
+ ExceptionBox.Text = "SQLクエリ入力又は実行関係?";
127
+ ExceptionBox.Text = e.Message;
128
+ }
129
+
130
+ //書き込み終わったらデータベースとの接続切断?
131
+ mySqlConnection.Close();
132
+
133
+ }
134
+ }
135
+ }
136
+ }
137
+ catch (Exception e)
138
+ {
139
+ ExceptionBox.Text = "その他の例外?クライアント接続?";
140
+ ExceptionBox.Text = e.Message;
141
+ }
142
+ finally
143
+ {
144
+ //接続終了
145
+ tcpListener.Stop();
146
+ }
147
+
148
+
149
+ }
150
+
151
+ private void ServerStartButton_Click(object sender, EventArgs e)
152
+ {
153
+ ServerStart();
154
+ }
155
+ }
156
+ }
157
+
36
158
  ```
37
159
  **試した事**
38
160
  同じような質問があり、NUGETパッケージでmySQL.dataやmySQLコネクタをインストールしましたが駄目でした。ポートも異常ありません。私自身、プログラムを書くのはほぼ始めてなので今まで学んだ文法書などと付き合わし、初歩的なミスがないか調べましたが見つけることが出来ませんでした。出力の例外を見るに、mySQLのDLL内とのことなので何か実行環境のプログラムが足りないのではないか?と考えられるのですが、これが調べても不明でした。最悪、データベースをフルリセットして全部入れ直す方法がありますが、それでは根本的解決にならないと思い、質問した次第です。見辛い文章で誠に申し訳ありません。どうかご教授を頂きたく存じます。
39
161
 
40
162
  **修正の要請を受けて**
41
163
  エラー内容はこの状態で実行すると
42
- The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外は1番最初、mySQLをインストールした時同時にインストールしたMySQLコネクタ(.NET)でこのプログラムを実行した時、出力ウィンドウの中にsystem.invalid.exceptionような物が検出されていました。
164
+ The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外は出力ウィンドウの中にsystem.invalidoperation.exception(MySQL.dll中)が検出されていました。
165
+ ご指摘ありがとうございます。コード全文を載せてみました。一応細かいところは後から手を入れて直していく予定でしたのでクライアントとの接続やSQLクエリなどは問題だらけかもしれません。MySqlConnectionのインスタンスの再生成は問題解決時にMySQLのリファレンスを調べていたところ、ConnectionStringプロパティは自動的な更新がされないことがあり意図しない動作を起こすことがある、とのことだったので変更が効いていないのかと思い、インスタンスを再生成してみましたが、再生成してもしなくても結果は同じでした。一応ブレークポイントや途中の出力命令などでも何度も値は確認しているのですが、文字列自体は入っていて値自体もコメント欄に書いた値と同様のものでした。コードはvisualstudio2019では「問題はみつかりませんでした」となり、実行も可能でした。個人的にはどうやらMySQLのコネクタはNugetの物を使わなければならなかったらしく、MySQLのインストール時についてきたコネクタを使用してしまった後、Nugetから色々引っ張ってきてしまったのでDLLの依存関係か何か?に引っかかっているのではないか?と思うのですが。これで私の未熟さが原因でそもそもコードが根本的に間違っていたら申し訳ありません。

1

2021/03/16 02:13

投稿

TKCpart2
TKCpart2

スコア11

title CHANGED
File without changes
body CHANGED
@@ -31,6 +31,12 @@
31
31
 
32
32
  mySqlConnection=
33
33
  new MySqlConnection(mySqlConnection. ConnectionString);
34
- my Sql connec tion
34
+ mySqlconnection.open();
35
35
 
36
- ```
36
+ ```
37
+ **試した事**
38
+ 同じような質問があり、NUGETパッケージでmySQL.dataやmySQLコネクタをインストールしましたが駄目でした。ポートも異常ありません。私自身、プログラムを書くのはほぼ始めてなので今まで学んだ文法書などと付き合わし、初歩的なミスがないか調べましたが見つけることが出来ませんでした。出力の例外を見るに、mySQLのDLL内とのことなので何か実行環境のプログラムが足りないのではないか?と考えられるのですが、これが調べても不明でした。最悪、データベースをフルリセットして全部入れ直す方法がありますが、それでは根本的解決にならないと思い、質問した次第です。見辛い文章で誠に申し訳ありません。どうかご教授を頂きたく存じます。
39
+
40
+ **修正の要請を受けて**
41
+ エラー内容はこの状態で実行すると
42
+ The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外は1番最初、mySQLをインストールした時同時にインストールしたMySQLコネクタ(.NET)でこのプログラムを実行した時、出力ウィンドウの中にsystem.invalid.exception?のような物が検出されていました。