私は、データベースが存在する場合は0を返し、そうでない場合は他の数値(たとえば1)を返すcmdからクエリを作成しようとしています。結果コードでcmdからMySQLデータベースを確認しますか?
私は、このようにクエリする:
"C:\mysql.exe" --host=localhost --user=root --password=pass --execute="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DB_Name'"
場合が存在し、それがテーブル(及び終了コード0)を返します。そうでない場合、それは(あまりにも、終了コード0)何も返さない
私は次のようにInno Setupのインストーラでこれを使用します。
Exec(
ExpandConstant('{tmp}\mysql.exe'),
'--host='+eServer.text+' --user='+eUser.text+' --password='+ePass.text+
' --port='+ePort.text+
' --execute="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '+
''''+eDBname.text+''''+'"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
if (ResultCode <> 0) then
MsgBox('Error when connecting to server', mbError, MB_OK);
だから、データベースがない場合であっても、私には0を返します存在する。
何:
は、これらのいずれかの形式でオプションを追加しますか?未定義ですが、dbが存在しない場合は失敗するはずです。そうしないと、クエリは正常に実行されます。 –
それは動作する、ありがとう、答えとして選択するコメントを置くことができますか? –
'--execute'の前にあなたの応答を追加しました。 –