【问题标题】:Insert from datagridview to SQL with dynamic column names使用动态列名从 datagridview 插入到 SQL
【发布时间】:2017-09-27 13:27:28
【问题描述】:

将数据从 Excel 电子表格导入 datagridview 后,我想创建一个表(由 Windows 表单中的用户确定)并将其与列名从 datagridview 插入到新表中。

用户也可以使用“程序”将其他excel表格插入其他数据库。

如何动态添加未预定义且由 excel 电子表格中有多少列定义的列名?

【问题讨论】:

  • 您需要向我们展示您迄今为止所做的尝试以及您面临的问题。
  • 解析列名不应该那么糟糕——你需要详细说明你遇到了什么问题
  • 手头的任务是创建一个导入应用程序,用于将 Excel 电子表格导入 SQL 数据库。但我已经成功了。我会尝试提交代码。

标签: c# sql excel datagridview import


【解决方案1】:

我的目标是创建一个导入应用程序,将 Excel 电子表格导入 SQL Server 数据库。我面临的问题是获取需要插入数据库的数字列,并根据 excel 电子表格动态命名它们。

该应用程序将用于各种电子表格,列名不得硬编码。这是我用来管理应用程序最后阶段的代码,在该阶段,电子表格中的所有数据都以 SQL 形式插入到数据库中。

    //Import Button
    private void button5_Click(object sender, EventArgs e)
    {
        string createColumns = "";
        string columns = "";
        string rows = "";
        var grid = (DataTable)dataGridView3.DataSource;
        for (int i = 0; i < grid.Columns.Count; i++)
        {
            if (i == grid.Columns.Count - 1)
            {
                createColumns += "[" + grid.Columns[i].ToString() + "] varchar(200) NULL";
                columns += "[" + grid.Columns[i].ToString() + "]";
            }
            else
            {
                columns += "[" + grid.Columns[i].ToString() + "],";
                createColumns += "[" + grid.Columns[i].ToString() + "] varchar(200) NULL,";
            }

        }
        string createTable = string.Format("Create table [{0}] ({1})", textBox1.Text, createColumns);
        rows = string.Format("Insert Into[{0}]({1})", textBox1.Text, columns);
        for (int i = 0; i < grid.Rows.Count; i++)
        {
            string row = "";

            for (int c = 0; c < grid.Columns.Count; c++)
            {

                if (c == grid.Columns.Count - 1)
                    row += "'" + grid.Rows[i][c].ToString() + "'";
                else
                    row += "'" + grid.Rows[i][c].ToString() + "', ";
            }

            if (i == grid.Rows.Count - 1)
                rows += string.Format(" ({0});", row);
            else
            {
                if (i == 0)
                {
                    rows += " Values";
                }
                rows += string.Format(" ({0}),", row);
            }
        }
        string s = "Integrated Security = SSPI;Persist Security Info = False;Data Source = " +
            ServerName.Text + "; Initial Catalog = " +
            Databases.Text;

        SqlConnection conn = new SqlConnection(s);

        SqlCommand cmd = new SqlCommand();

        cmd.CommandText = createTable;
        cmd.Connection = conn;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();

        SqlCommand cmd2 = new SqlCommand(rows, conn);
        cmd2.CommandType = CommandType.Text;
        conn.Open();
        cmd2.ExecuteNonQuery();
        conn.Close();

        Application.Exit();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-05
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多