尝试调用 ShellExecute 来运行 Mysql 和 sql 脚本

2024-01-10

我一直在尝试在 Delphi 应用程序中使用 ShellExecute 打开 Mysql 并运行脚本。

ShellExecute(Handle, 'open', PWideChar(InpCommandProgram.text),
    PWideChar(commandline), nil, SW_SHOWNORMAL);

InpCommandProgram.text = 'MYSQL'
commandline = '--user=root --password=password < C:/directory/filename.sql '

filename.sql 已被精简为“创建数据库名称”。

命令窗口会短暂打开并滚动一些消息 - 速度太快而无法阅读。 如果我打开命令窗口并输入相同的程序和命令行,它就可以工作。 失败时我看不到错误消息。

我在 Windows 7 桌面上本地运行。 我尝试将输出定向到日志文件,但我什至没有批量获取该文件。当交互成功时,我确实会收到日志。我已经尝试了所有我能想到的调整。

任何有关如何进行的想法将不胜感激。


当您说完全相同的命令在命令提示符下运行时,您自己也说过了。区别在于命令解释器的存在,cmd.exe。它的作用是创建一个管道,将输入文件传送到 MySQL 进程中。

对于这个问题,你有两个明显的解决方案:

  1. Use CreateProcess启动该过程并自行设置管道。这是一个有点低级的内容,涉及相当多的 Win32 样板文件。如果您需要这样做,它确实使阻塞直到进程完成变得更简单。
  2. Get ShellExecute调用cmd.exe并询问cmd.exe运行 MySQL 并整理管道。

选项 2 更简单。它看起来像这样:

ShellExecute(
    0, 
    nil, 
    'cmd.exe', 
    '/c mysql --user=root --password=password < C:/directory/filename.sql',
    nil,
    SW_SHOW
);

The /c切换到cmd.exe告诉执行命令然后终止——这正是您想要的。

如果您需要阻塞进程直到 MySQL 进程完成,那么您可以切换到ShellExecuteEx。这将返回一个您可以等待的进程句柄。同样操作起来有点困难,但可能仍然比CreateProcess因为这迫使你管理管道。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试调用 ShellExecute 来运行 Mysql 和 sql 脚本 的相关文章

  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • Delphi 返回 TList 时出错

    我做了一个非常简单的应用程序 但我有一个我真的无法理解的问题 看一下这个基本代码 unit Unit1 interface uses Winapi Windows Winapi Messages System SysUtils System
  • 通过连接从两个表中删除?

    我有两个表如下 tbl1 tbl2 id article id title image whole news tags author older datetime 其中 tbl1 id gt tbl2 article id 如何从两个表中删
  • MySQL 服务器未启动

    当我做 mysql u root p并输入my password这就是我得到的 错误 2002 HY000 无法通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 2 所以我输入 systemc
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 处理 TShellListView 后代中的文件放置

    我正在尝试创建 TShellListView 的后代 它接受从 Windows 资源管理器中删除的文件 我想在组件定义中处理拖 放操作 而不必在任何使用该组件的应用程序中实现它 我找到了接受从 Windows 资源管理器中拖放的文件的示例
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • .wav 文件中的字节代表什么?

    当我将 wav 文件中的数据存储到字节数组中时 这些值意味着什么 我读到它们采用两字节表示形式 但是这些两字节值中到底包含什么 您可能听说过 音频信号是由某种波表示的 如果您曾经见过带有上下直线的波形图 这基本上就是这些文件中的内容 看看这
  • Laravel/Heroku,会话没有这样的文件或目录

    我正在尝试在 heroku 上运行我的应用程序 但对于某些请求 只有 POST GET 工作正常 我的 Ajax POST 请求出现以下错误 Error Request failed with status code 419 当我检查 He
  • SignalR - 如何在集线器中执行异步任务?

    我正在尝试使用 C 5 async await 功能创建 SignalR 应用程序 但每当运行代码时 它都会抛出 System InvalidOperationException 这是重现该问题的最简单的代码 public class Sa
  • Python ctypes 和可变性

    我注意到将 Python 对象传递给本机代码ctypes可以打破可变性预期 例如 如果我有一个 C 函数 如下所示 int print and mutate char str str 0 X return printf s n str 我这
  • AutoMapper - 使用相同的源和目标对象类型进行映射

    我使用 Automapper 获取两个相同类型的对象并映射已更改的任何新值 我尝试使用下面的代码 但它不断抛出错误 我什至不确定这是否可以通过 Automapper 来实现 例如 Mapper CreateMap
  • Web 开发人员应该了解 IE7 和 IE8 之间的主要区别是什么?

    我刚刚下载了 IE8 它取代了我的 IE7 但这没关系 因为 IE8 有一个 兼容性视图 旨在呈现像 IE7 一样的页面 不确定 JavaScript 我想知道互联网上是否列出了开发人员应该了解的版本之间的所有主要差异 我在谷歌上搜索了一下
  • 尝试安装 pg gem 时找不到 'libpq-fe.h 标头

    我正在使用 Ruby on Rails 3 1 预版本 我喜欢使用 PostgreSQL 但问题是安装pg宝石 它给了我以下错误 gem install pg Building native extensions This could ta
  • Visual Studio 项目为空?

    有没有办法在 Visual Studio 2008 或 2010 中拥有一个空项目 我的意思不是空的解决方案 而是解决方案中的空项目 基本上我有一个包含多个项目的解决方案 并且我想添加一个项目来跟踪一些静态文件 这些静态文件是解决方案的一部
  • 如何获取 Azure SendGrid api 密钥?

    我已按照以下说明进行操作如何使用 SendGrid 和 Azure 发送电子邮件 https learn microsoft com en us azure app service web sendgrid dotnet how to se
  • CXF 2.2.12:如何关闭客户端的架构验证

    我想关闭 JAXB 绑定消息的模式验证 我正在处理客户端 CXF 代码 WSDL 第一代 我尝试过使用
  • 2018 年用 C++ 处理 Unicode 的正确方法是什么?

    我尝试过搜索 stackoverflow 来找到这个问题的答案 但我发现的问题和答案都在10岁由于变化和可能的进展 我似乎无法就该主题达成共识 我知道除了 stl 之外还有几个库应该处理 unicode http userguide icu
  • 防止 bitbucket-pipelines.yml 更新时触发 bitbucket 管道

    我是位桶管道的新手 我已经添加到我的节点项目bitbucket pipelines yml在管道中 我有一个步骤是构建容器并将其推送到 ECR 另一个步骤是部署 现在 每次我对 bitbucket pipelines yml 进行更改时 它
  • 特别是在 Android Q Pixel 3 和 3 XL 设备上的 BufferQueueProducer 问题。模拟器工作正常

    我正在使用表面纹理视图来显示视频 这些视频显示在轮播中 轮播本质上是一个视图寻呼机 我已经尝试过释放表面上的表面视图被破坏 但没有帮助 重写 fun onSurfaceTextureDestroyed surface SurfaceText
  • 如何从java字符串中删除无效的unicode字符

    我正在使用CoreNLP 神经网络依存解析器 http nlp stanford edu software lex parser shtml Download解析一些社交媒体内容 不幸的是 该文件包含的字符 根据文件格式信息 http ww
  • 如何在 Swift 3 中使 UITableView 清晰(透明)

    我该怎么做这个UITableView在 Swift 3 中它的单元格是清晰的 我已经浏览了之前的线程 但仍然得到白色背景 正如您从我的代码中看到的 我尝试了提到的各种方法 override func viewDidLoad self com
  • ValueError:样本大于从图中选择样本的总体

    我正在尝试从图中随机选择 n 个样本 为此 我使用 random sample 函数创建一个名为 X 的列表 如下所示 X random sample range graph ecount numPosSamples 问题是 当 numPo
  • 更改powershell命令颜色

    如何更改 powershell 中的命令颜色 目前它是黄色的 当我使用嵌套在 Intellij 中的 powershell 时 我无法读取白色背景上的黄色命令 关于 LotPings 的回答 我解决了我的问题 powershell 中的以下
  • 在项目反应器中包装阻塞 I/O

    我有一个 spring webflux API 它在服务层需要从使用 JDBC 的现有存储库中读取 在阅读了有关该主题的一些内容后 我希望将阻塞数据库调用的执行与其余非阻塞异步代码分开 我定义了一个专用的jdbcScheduler Bean
  • 从 S3 存储桶中的文件夹中删除文件

    我有一个 AWS S3 存储桶test bucket with a data文件夹 数据文件夹将包含多个文件 我可以删除 S3 存储桶中的文件 但我想要的是删除其中的文件data文件夹 而不删除该文件夹 我尝试了以下方法 aws s3 rm
  • 尝试调用 ShellExecute 来运行 Mysql 和 sql 脚本

    我一直在尝试在 Delphi 应用程序中使用 ShellExecute 打开 Mysql 并运行脚本 ShellExecute Handle open PWideChar InpCommandProgram text PWideChar c