c# - 即使我在 SQL 控制台中测试命令文本时命令文本是正确的,我的命令文本仍然有错误

标签 c# mysql

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“source D://sqldatabase.sql”附近​​使用的正确语法。

MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "source D://sqldatabase.sql";
try {
    conn.Open();
    comm.ExecuteNonQuery();
    conn.Close();
} catch (MySqlException a) {
    MessageBox.Show(a.Message);
}

最佳答案

“source”是mysql命令行工具的命令,根本不被服务器识别。

因此,当使用 mysql.exe(命令行客户端)时,它知道如何处理它,而 mysql-server 则不知道。

C# 也不知道。您必须将该文件读入您​​的程序中,并手动一一执行其中的命令。

评论中所说的另一种方法是从程序中运行 mysql.exe:

using System.Diagnostics;

Process mysql = new Process( );

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "Path\\To\\mysql.exe";
psi.Arguments = " -u[username] -p[password] [database] < D:\\sqldatabase.sql";
psi.UseShellExecute = false;

P.StartInfo = psi;
P.Start();

请注意:

  1. 在命令行上使用密码可能不安全

  2. -p 和密码之间没有空格(重要!)

关于c# - 即使我在 SQL 控制台中测试命令文本时命令文本是正确的,我的命令文本仍然有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42476653/

相关文章:

php - 如果变量并不总是有值,如何查询数据库

php - 如何在分解字符串之前和之后添加文本

mysql - 如何对两个不同表的两列求和

mysql - 更改字段中的第一个字符

c# - 为什么我无法调整表格以适应显示器的尺寸? (Windows 窗体)

c# - MEF 是一件全有还是全无的事情吗?

c# - Visual Studio : debug multiple projects at the same time?

c# - Winform App - 网页交互

c# - 这是使用 Web 服务激活串行 key 的好方法吗?

MySQL SELECT col, * FROM 表