C# 将.csv文件从一个按钮传递到另一个按钮以将其上载到数据库

C# 将.csv文件从一个按钮传递到另一个按钮以将其上载到数据库,c#,mysql,C#,Mysql,这是我第一次使用表单,所以我对它有点陌生 我正在开发一个表单,允许用户从本地磁盘中选择一个.csv文件,并将其上传/插入数据库以更新表 我的表单如下所示: 使用“选择文件”按钮,用户可以选择一个.csv文件,该文件的路径将显示在按钮上方的文本框中。如果用户单击“上载文件”按钮,则会将选定的.csv文件上载到数据库中 我迄今为止取得的成就: 现在,我成功地制作了一个用户可以选择.csv文件的部分,该文件的路径将显示在文本框中 但我似乎无法让第二个按钮工作 我的问题: 如何从第一个按钮获取文件并在第

这是我第一次使用表单,所以我对它有点陌生

我正在开发一个表单,允许用户从本地磁盘中选择一个.csv文件,并将其上传/插入数据库以更新表

我的表单如下所示:

使用“选择文件”按钮,用户可以选择一个.csv文件,该文件的路径将显示在按钮上方的文本框中。如果用户单击“上载文件”按钮,则会将选定的.csv文件上载到数据库中

我迄今为止取得的成就:

现在,我成功地制作了一个用户可以选择.csv文件的部分,该文件的路径将显示在文本框中

但我似乎无法让第二个按钮工作

我的问题:

如何从第一个按钮获取文件并在第二个按钮中使用 按钮将其更新到数据库中? 我的代码:

我的按钮代码如下:

    public System.Windows.Forms.Button button1;
    public System.Windows.Forms.TextBox textBox1;
    public System.Windows.Forms.Button button2;

    public void Button()
    {
        button1.Click += new EventHandler(Button_Click);
    }

    public void Button_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.InitialDirectory = @"C:\";
        openFileDialog1.Title = "Browse .csv Files";

        openFileDialog1.CheckFileExists = true;
        openFileDialog1.CheckPathExists = true;

        openFileDialog1.DefaultExt = ".csv";
        openFileDialog1.Filter = "Csv files (*.csv)|*.csv|All files (*.*)|*.*";
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.RestoreDirectory = true;



        openFileDialog1.ReadOnlyChecked = true;

        openFileDialog1.ShowReadOnly = true;



        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {

            textBox1.Text = openFileDialog1.FileName;

            Button2();
        }
    }

    public void Button2()
    {
        button2.Click += new EventHandler(Button2_Click);
    }

    public void Button2_Click(object sender, EventArgs e)
    {


        Console.WriteLine("[Core] Opening database connection.");
            if (Database.stockConn.State != ConnectionState.Open)
            {
                Database.openStockConn(Settings.databaseName, Settings.databaseUsername, Settings.databasePassword, Settings.sshHost, Settings.sshUsername, Settings.sshPassword);
            }
            Console.WriteLine("[Core] database connection is now open!\n");

            Database.stockConn.Open();
            try
                    {
   // not sure if 'textBox1.Text' is the right variable for the file
                        MySqlCommand cmd = new MySqlCommand("LOAD DATA INFILE" + textBox1.Text + "INTO TABLE catalog_product_entity_decimal_copy FIELDS TERMINATED BY ','");
                        cmd.ExecuteNonQuery();

                        MessageBox.Show("File Has Been Uploaded Into The Database SuccessFully!");
                    }
                    catch
                    {
                        MessageBox.Show("Couldn't Upload File Into Database!");
                    }
        }
在上面的代码中,我使用textBox1.Text作为所选.csv文件的变量,但我认为这不是我应该使用的变量

因此,如果有人能帮助我/向我解释如何将.csv文件从第一个按钮传递到第二个按钮,我将非常感激

编辑:

根据一些人的要求,这里有一个编辑:

我的问题不是我的查询不起作用,是的,我作为示例给出的查询并不完全正确,但它只是一个示例。我知道如何在C/MySql中编写/执行适当的查询

以及:


在我的示例中,我使用textBox1.Text作为我的文件,但这不起作用,因为textBox1.Text只是文件的路径,而不是文件的路径。

我将执行以下操作

私下声明文件对话框,或在设计模式下将文件对话框控件拖动到窗体上,这将实现相同的效果。完成后,您可以引用dialogs FileName属性并指定给文本框,或者直接从控件使用该属性

private readonly FileDialog _fileDialog = new OpenFileDialog();

private void btnSelectFile_Click(object sender, EventArgs e)
{
    if (_fileDialog.ShowDialog() == DialogResult.OK)
    {
        txtPathToFile.Text = _fileDialog.FileName;
    }
}
如果在事件中声明,则将FileName属性指定给文本框

var myFileDialog = new OpenFileDialog();

if (myFileDialog.ShowDialog() == DialogResult.OK)
{
     txtPathToFile.Text = myFileDialog.FileName;
}
要找到路径。再次访问“对话框控件文件名”属性,或者可以将其指定给文本框并读取其文本值。两种方式都可以

private void btnUpload_Click(object sender, EventArgs e)
{
    var pathFromDialogControl = _fileDialog.FileName;
    var pathFromTextBox = txtPathToFile.Text;
    //Do something here
}

希望有帮助。

为什么您认为testBox1.Text是错误的变量?另外,参数化您的查询。您的文本框将保存文件路径。然后您必须使用System.IO读取数据。请阅读并解释此代码的作用和不作用。如果你捕获所有异常并简单地显示一个messagebox,你就不知道出了什么问题。你还没有编辑,所以我不会重新打开。阅读并提出一个可回答的问题。您没有将文件从一个按钮传递到一个按钮,这毫无意义,您试图在SQL查询中使用文本框中的字符串。从文本框中读取文本与获取文本属性一样简单。如果这不符合你的期望,那么解释一下你的期望和实际发生的情况。如果这段代码确实不起作用,那是因为SQL命令中缺少空格和引号,如副本中所述。表单部分完全不相关。这不起作用,因为textBox1.Text只是文件的路径,而不是文件-加载数据填充就是这样工作的。您传递的是路径,而不是文件的内容。感谢您的回答!我们一定会调查的!