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

bkkx9g8r  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(281)

这个问题在这里已经有了答案

mysql加载数据填充(1个答案)
两年前关门了。
这是我第一次使用表单,所以我对它有点陌生。
我正在开发一个表单,它允许用户从本地磁盘中选择一个.csv文件,并将其上载/插入数据库以更新表。
我的表格如下:

select file 按钮,用户可以选择一个.csv文件,该文件的路径将显示在按钮上方的文本框中。如果用户单击 Upload File 按钮,它将所选的.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 只是文件的路径,而不是文件。

vof42yt1

vof42yt11#

我会像下面这样做。
私下声明文件对话框或以设计模式将文件对话框控件拖到窗体上,这将实现相同的效果。完成后,您可以引用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属性指定给textbox。

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
}

希望有帮助。

相关问题