質問編集履歴

4

誤字修正

2021/03/16 02:21

投稿

TKCpart2
TKCpart2

スコア11

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

3

誤字修正

2021/03/16 02:21

投稿

TKCpart2
TKCpart2

スコア11

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- **ソースコード(要点)**
13
+ **ソースコード(全体修正前なで問題だらけですがご容赦ください)**
14
14
 
15
15
  ``` C#
16
16
 

2

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

2021/03/16 02:15

投稿

TKCpart2
TKCpart2

スコア11

test CHANGED
File without changes
test CHANGED
@@ -14,57 +14,301 @@
14
14
 
15
15
  ``` C#
16
16
 
17
- using System;
17
+ using System;
18
+
19
+ using System.Collections.Generic;
20
+
21
+ using System.ComponentModel;
22
+
23
+ using System.Data;
18
24
 
19
25
  using MySql.Data.MySqlClient;
20
26
 
27
+ using System.Drawing;
28
+
29
+ using System.Linq;
30
+
31
+ using System.Text;
32
+
33
+ using System.Threading.Tasks;
34
+
35
+ using System.Windows.Forms;
36
+
21
37
  using System.Net;
22
38
 
23
39
  using System.Net.Sockets;
24
40
 
25
-
26
-
27
- 〜中略〜
28
-
29
-
30
-
31
- MySqlConnection mysqlConnection
32
-
33
- =new MySqlConnection()
34
-
35
- MySqlconnectionBuilder stringBuilder
36
-
37
- =new MySqlconnectionStringBuilder()
38
-
39
-
40
-
41
- stringBuilder.Database="keijiban";
42
-
43
- stringBuilder.Server="localhost";
44
-
45
- stringBuilder.UserID="General";
46
-
47
- stringBuilder.Password="ringo";
48
-
49
-
50
-
51
- mySqlConnection.ConnectionString
52
-
53
- =$"Database={stringBuilder.Database};
54
-
55
- Server={stringBuilder.Server};
56
-
57
- UserID={stringBuilder.UserID};
58
-
59
- Password={stringBuilder.Password};
60
-
61
-
62
-
63
- mySqlConnection=
64
-
65
- new MySqlConnection(mySqlConnection. ConnectionString);
66
-
67
- mySqlconnection.open();
41
+ using System.IO;
42
+
43
+
44
+
45
+ namespace 掲示板サーバー
46
+
47
+ {
48
+
49
+ public partial class BoardServer : Form
50
+
51
+ {
52
+
53
+ public BoardServer()
54
+
55
+ {
56
+
57
+ InitializeComponent();
58
+
59
+ }
60
+
61
+
62
+
63
+ //起動ボタン押した時の処理
64
+
65
+ private void ServerStart()
66
+
67
+ {
68
+
69
+ //下準備(ホスト名からIPアドレス取得)
70
+
71
+ string hostname = Dns.GetHostName();
72
+
73
+ IPAddress[] iPAddresses = Dns.GetHostAddresses(hostname);
74
+
75
+ IPAddress iP = IPAddress.Parse(iPAddresses[2].ToString());
76
+
77
+
78
+
79
+ //接続待ちをするオブジェクト作成
80
+
81
+ TcpListener tcpListener = new TcpListener(iP, 45559);
82
+
83
+ try
84
+
85
+ {
86
+
87
+ //接続開始
88
+
89
+ tcpListener.Start();
90
+
91
+ TcpClient tcp = tcpListener.AcceptTcpClient();
92
+
93
+ if(tcp.Connected==true)
94
+
95
+ {
96
+
97
+ Console.WriteLine("接続完了");
98
+
99
+ }
100
+
101
+ else
102
+
103
+ {
104
+
105
+ Console.WriteLine("未接続。。。?");
106
+
107
+ }
108
+
109
+
110
+
111
+ using (NetworkStream stream = tcp.GetStream())
112
+
113
+ {
114
+
115
+ using (StreamReader streamReader = new StreamReader(stream))
116
+
117
+ {
118
+
119
+ using (StreamWriter streamWriter = new StreamWriter(stream))
120
+
121
+ {
122
+
123
+ string message = streamReader.ReadToEnd();
124
+
125
+
126
+
127
+
128
+
129
+ //ここからデータベース関係の処理?(今回使用するのはMySQL)
130
+
131
+               //該当コード
132
+
133
+ MySqlConnection mySqlConnection = new MySqlConnection();
134
+
135
+
136
+
137
+ MySqlConnectionStringBuilder stringBuilder = new MySqlConnectionStringBuilder();
138
+
139
+ stringBuilder.Database = "keijiban";
140
+
141
+ stringBuilder.Server = "localhost";
142
+
143
+ stringBuilder.UserID = "General";
144
+
145
+ stringBuilder.Password = "ringo";
146
+
147
+
148
+
149
+ try
150
+
151
+ {
152
+
153
+ mySqlConnection.ConnectionString =$"Database={stringBuilder.Database};Server={stringBuilder.Server};UserID={stringBuilder.UserID};Password={stringBuilder.Password};";
154
+
155
+
156
+
157
+ mySqlConnection = new MySqlConnection(mySqlConnection.ConnectionString);
158
+
159
+ textBox1.Text= mySqlConnection.ConnectionString.ToString();
160
+
161
+ mySqlConnection.Open();
162
+
163
+                  //該当コードここまで?
164
+
165
+ }
166
+
167
+ catch (MySqlException e)
168
+
169
+ {
170
+
171
+ ExceptionBox.Text = "MySQLに接続できません。";
172
+
173
+ ExceptionBox.Text = e.Message;
174
+
175
+ }
176
+
177
+
178
+
179
+ MySqlScript mySqlScript = new MySqlScript();
180
+
181
+
182
+
183
+ //主キー判定
184
+
185
+ try
186
+
187
+ {
188
+
189
+ mySqlScript.Query = "SELECT txt_id FROM Board;";
190
+
191
+ string s = mySqlScript.Execute().ToString();
192
+
193
+
194
+
195
+
196
+
197
+ if (s == null)
198
+
199
+ {
200
+
201
+
202
+
203
+ mySqlScript.Query = "INSERT INTO Board(txt_id) VALUES(1);";
204
+
205
+ mySqlScript.Execute();
206
+
207
+ }
208
+
209
+ else
210
+
211
+ {
212
+
213
+ mySqlScript.Query = "SELECT MAX txt_id FROM Board;";
214
+
215
+ int icount = mySqlScript.Execute();
216
+
217
+ icount = +1;
218
+
219
+ string final = icount.ToString();
220
+
221
+
222
+
223
+ mySqlScript.Query = $"INSERT INTO Board(txt_id) VALUES({final});";
224
+
225
+ mySqlScript.Execute();
226
+
227
+ }
228
+
229
+
230
+
231
+
232
+
233
+ mySqlScript.Query = $"INSERT INTO Board(txt_contents) VALUES({message});";
234
+
235
+ mySqlScript.Execute();
236
+
237
+ mySqlScript.Query = "SELECT txt_contents FROM Board;";
238
+
239
+ string txt = mySqlScript.Execute().ToString();
240
+
241
+
242
+
243
+ streamWriter.WriteLine(txt);
244
+
245
+ }
246
+
247
+ catch (MySqlException e)
248
+
249
+ {
250
+
251
+ ExceptionBox.Text = "SQLクエリ入力又は実行関係?";
252
+
253
+ ExceptionBox.Text = e.Message;
254
+
255
+ }
256
+
257
+
258
+
259
+ //書き込み終わったらデータベースとの接続切断?
260
+
261
+ mySqlConnection.Close();
262
+
263
+
264
+
265
+ }
266
+
267
+ }
268
+
269
+ }
270
+
271
+ }
272
+
273
+ catch (Exception e)
274
+
275
+ {
276
+
277
+ ExceptionBox.Text = "その他の例外?クライアント接続?";
278
+
279
+ ExceptionBox.Text = e.Message;
280
+
281
+ }
282
+
283
+ finally
284
+
285
+ {
286
+
287
+ //接続終了
288
+
289
+ tcpListener.Stop();
290
+
291
+ }
292
+
293
+
294
+
295
+
296
+
297
+ }
298
+
299
+
300
+
301
+ private void ServerStartButton_Click(object sender, EventArgs e)
302
+
303
+ {
304
+
305
+ ServerStart();
306
+
307
+ }
308
+
309
+ }
310
+
311
+ }
68
312
 
69
313
 
70
314
 
@@ -80,4 +324,6 @@
80
324
 
81
325
  エラー内容はこの状態で実行すると
82
326
 
83
- The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外は1番最初、mySQLをインストールした時同時にインストールしたMySQLコネクタ(.NET)でこのプログラムを実行した時、出力ウィンドウの中にsystem.invalid.exceptionような物が検出されていました。
327
+ The connection property has not been set or is nullと出てきてしまいます。接続文字列の文はインターネット上のstringformat()で書かれたものを参考に$に書き換えただけなのですが…。DLL関連の例外は出力ウィンドウの中にsystem.invalidoperation.exception(MySQL.dll中)が検出されていました。
328
+
329
+ ご指摘ありがとうございます。コード全文を載せてみました。一応細かいところは後から手を入れて直していく予定でしたのでクライアントとの接続やSQLクエリなどは問題だらけかもしれません。MySqlConnectionのインスタンスの再生成は問題解決時にMySQLのリファレンスを調べていたところ、ConnectionStringプロパティは自動的な更新がされないことがあり意図しない動作を起こすことがある、とのことだったので変更が効いていないのかと思い、インスタンスを再生成してみましたが、再生成してもしなくても結果は同じでした。一応ブレークポイントや途中の出力命令などでも何度も値は確認しているのですが、文字列自体は入っていて値自体もコメント欄に書いた値と同様のものでした。コードはvisualstudio2019では「問題はみつかりませんでした」となり、実行も可能でした。個人的にはどうやらMySQLのコネクタはNugetの物を使わなければならなかったらしく、MySQLのインストール時についてきたコネクタを使用してしまった後、Nugetから色々引っ張ってきてしまったのでDLLの依存関係か何か?に引っかかっているのではないか?と思うのですが。これで私の未熟さが原因でそもそもコードが根本的に間違っていたら申し訳ありません。

1

2021/03/16 02:13

投稿

TKCpart2
TKCpart2

スコア11

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