0

次のようなクエリ結果があるとします。

ID    NAME    Phone
----  ----    -----
1     John    123456
2     John    125678
3     John    345678
4     Abby    456789
5     Abby    567890

名前の 1 つの行のインスタンスだけを返したい: ジョン、電話番号は '12%' のようです。

C# では、この構文を記述して、クエリの結果として PersonName 変数を取得しました。

MySqlConnection connection = new MySqlConnection("SERVER=" + "localhost" + ";" + "DATABASE=" + "testdb" + ";" + "UID=" + "root" + ";" + "PASSWORD=" + "" + ";");
MySqlCommand command = new MySqlCommand();    

    connection.Open();
    string selectQuery = "SELECT NAME FROM testtable WHERE Phone LIKE '12%' ORDER BY ID LIMIT 1";
    command.Connection = connection;
    command.CommandText = selectQuery;
    string PersonName = (string)command.ExecuteScalar();
    connection.Close();

コードの何が問題なのかわかりませんが、PersonName は null を返します。私は何を間違えましたか?

4

2 に答える 2

1

ここで何か他のものを見逃している必要があります。提供された内容に基づいて、次のコード サンプルを試してください。

try {
MySqlConnection connection = new MySqlConnection("SERVER=localhost;DATABASE=testdb;UID=root;PASSWORD=;");
MySqlCommand command = new MySqlCommand();    

connection.Open();
string selectQuery = "SELECT NAME FROM testtable WHERE Phone LIKE '12%' ORDER BY ID LIMIT 1";
command.Connection = connection;
command.CommandText = selectQuery;
string PersonName = (string)command.ExecuteScalar();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
finally {
    connection.Close();
}

何らかの理由で .Open() の呼び出しが失敗し、エラーが別の場所に飲み込まれているような気がします。上記を試してみて、わかったことを教えてください。

于 2015-07-13T16:15:28.830 に答える