質問編集履歴
4
誤字修正
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
誤字修正
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
ソースコード全文追加、詳細は”修正の要請を受けて”に加筆、修正記載致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,37 +6,160 @@
|
|
6
6
|
|
7
7
|
**ソースコード(要点のみ)**
|
8
8
|
``` C#
|
9
|
-
using
|
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
|
-
|
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
|
-
|
47
|
+
if(tcp.Connected==true)
|
48
|
+
{
|
18
|
-
|
49
|
+
Console.WriteLine("接続完了");
|
50
|
+
}
|
51
|
+
else
|
52
|
+
{
|
19
|
-
|
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
|
-
|
90
|
+
MySqlScript mySqlScript = new MySqlScript();
|
27
|
-
=$"Database={stringBuilder.Database};
|
28
|
-
Server={stringBuilder.Server};
|
29
|
-
UserID={stringBuilder.UserID};
|
30
|
-
Password={stringBuilder.Password};
|
31
91
|
|
32
|
-
|
92
|
+
//主キー判定
|
93
|
+
try
|
94
|
+
{
|
95
|
+
mySqlScript.Query = "SELECT txt_id FROM Board;";
|
33
|
-
|
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関連の例外は
|
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
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,6 +31,12 @@
|
|
31
31
|
|
32
32
|
mySqlConnection=
|
33
33
|
new MySqlConnection(mySqlConnection. ConnectionString);
|
34
|
-
|
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?のような物が検出されていました。
|