mysql - 错误 System.ArgumentException 不支持关键字。 C++

标签 mysql c++-cli

我试着编写程序来连接到我的 MySQL 数据库并更改其中的信息。但是当我尝试插入一些命令时出现错误。

System.Data.dll 中类型为“System.ArgumentException”的未处理异常 附加信息:不支持关键字。

namespace Pro4 {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace MySql::Data::MySqlClient;

/// <summary>
/// Сводка для MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
    MyForm(void)
    {
        InitializeComponent();
        //
        //TODO: добавьте код конструктора
        //
    }

protected:
    /// <summary>
    /// Освободить все используемые ресурсы.
    /// </summary>
    ~MyForm()
    {
        if (components)
        {
            delete components;
        }
    }
private: System::Windows::Forms::TextBox^  txtQuery;
protected:

protected:
private: System::Windows::Forms::Button^  button1;

private:
    /// <summary>
    /// Требуется переменная конструктора.
    /// </summary>
    System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
    /// <summary>
    /// Обязательный метод для поддержки конструктора - не изменяйте
    /// содержимое данного метода при помощи редактора кода.
    /// </summary>
    void InitializeComponent(void)
    {
        this->txtQuery = (gcnew System::Windows::Forms::TextBox());
        this->button1 = (gcnew System::Windows::Forms::Button());
        this->SuspendLayout();
        // 
        // txtQuery
        // 
        this->txtQuery->Location = System::Drawing::Point(12, 12);
        this->txtQuery->Multiline = true;
        this->txtQuery->Name = L"txtQuery";
        this->txtQuery->Size = System::Drawing::Size(823, 269);
        this->txtQuery->TabIndex = 0;
        // 
        // button1
        // 
        this->button1->Location = System::Drawing::Point(715, 287);
        this->button1->Name = L"button1";
        this->button1->Size = System::Drawing::Size(120, 40);
        this->button1->TabIndex = 1;
        this->button1->Text = L"Run";
        this->button1->UseVisualStyleBackColor = true;
        this->button1->Click += gcnew System::EventHandler(this, 
&MyForm::button1_Click);
        // 
        // MyForm
        // 
        this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);
        this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
        this->ClientSize = System::Drawing::Size(847, 531);
        this->Controls->Add(this->button1);
        this->Controls->Add(this->txtQuery);
        this->Name = L"MyForm";
        this->Text = L"MyForm";
        this->ResumeLayout(false);
        this->PerformLayout();

    }
#pragma endregion
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    String^ SQLQuery = txtQuery->Text;
    String^ connectionInfo = "datasourse=localhost;port=3307;username=root;password=1qa2ws3ed;database=labeng";
    MySqlConnection^ conn= gcnew MySqlConnection(connectionInfo);
    MySqlCommand^ connCmd = gcnew MySqlCommand(SQLQuery, conn);
    MySqlDataReader^ dataReader;

    try{
        conn->Open();
        dataReader = connCmd->ExecuteReader();
        //MessageBox::Show("Command is done");
    }
    catch (Exception^ex){
        MessageBox::Show(ex->Message);
    }

}
};
}

请不要严格,这对我来说是新的。

最佳答案

标准警告:虽然可以使用 C++/CLI 编写应用程序的主体,甚至可以使用 WinForms 在 C++/CLI 中编写 GUI,但不建议这样做。 C++/CLI 适用于互操作场景:在 C# 或其他 .Net 代码需要与非托管 C++ 交互的情况下,C++/CLI 可以提供两者之间的转换。对于初级开发,如果您需要托管代码,建议使用 C# 和 WinForms 或 WPF,如果您需要非托管代码,建议使用 C++ 和 MFC。


也就是说,

String^ connectionInfo = "datasourse=localhost;port=3307;username=root;password=1qa2ws3ed;database=labeng";

根据documentation ,连接字符串应该包含 server=localhost,而不是 datasource=localhost

关于mysql - 错误 System.ArgumentException 不支持关键字。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43855484/

相关文章:

php - Yii2 - 如果变量为空则忽略 where 子句

c++-cli - 常见的托管 C++ 陷阱

dll - 混合模式C++/CLI DLL在退出时引发异常

com - 从托管 C++ (C++/CLI) 生成 COM 可见程序集

mysql - Brain-Dead MySQL 选择优化(使用临时,使用文件排序)

php - 将 14 位时间戳从 CSV 导入 MySQL 并避免删除数据

c# - 通过 C# 在 MySQL 中检查和创建 View

mysql - 更新mysql并设置信息 block

c++-cli - 是否有任何工具可以将 Managed C++ 转换为 C++/CLI?

C++/CLI DLL 项目在从 VS2008 转换到 VS2010 后停止链接