Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datagridview单击时大容量插入事件_C#_Sql_Datagridview_Bulkinsert_Datagridviewcolumn - Fatal编程技术网

C# Datagridview单击时大容量插入事件

C# Datagridview单击时大容量插入事件,c#,sql,datagridview,bulkinsert,datagridviewcolumn,C#,Sql,Datagridview,Bulkinsert,Datagridviewcolumn,我有一段代码,可以将我从excel文件复制的任何内容插入到datagridview中,在datagridview中继续插入(批量插入)到数据库中。 我的问题是,当我粘贴到datagridview中时,第一行变成(并超过)我的列名,我不知道为什么: 代码如下: private void btnBulkAdd_Click(object sender, EventArgs e) { DataObject o = (DataObject)Clipboard.Get

我有一段代码,可以将我从excel文件复制的任何内容插入到datagridview中,在datagridview中继续插入(批量插入)到数据库中。 我的问题是,当我粘贴到datagridview中时,第一行变成(并超过)我的列名,我不知道为什么: 代码如下:

private void btnBulkAdd_Click(object sender, EventArgs e)
        {
            DataObject o = (DataObject)Clipboard.GetDataObject();
            if (o.GetDataPresent(DataFormats.Text))
            {
                if (dgvIntake.RowCount > 0)
                    dgvIntake.Rows.Clear();

                if (dgvIntake.ColumnCount > 0)
                    dgvIntake.Columns.Clear();

                bool columnsAdded = false;
                string[] pastedRows = System.Text.RegularExpressions.Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n");
                int j = 0;
                foreach (string pastedRow in pastedRows)
                {
                    string[] pastedRowCells = pastedRow.Split(new char[] { '\t' });

                    if (!columnsAdded)
                    {
                        for (int i = 0; i < pastedRowCells.Length; i++)
                            dgvIntake.Columns.Add("col" + i, pastedRowCells[i]);

                        columnsAdded = true;
                        continue;
                    }

                    dgvIntake.Rows.Add();
                    int myRowIndex = dgvIntake.Rows.Count + 1;

                    using (DataGridViewRow myDataGridViewRow = dgvIntake.Rows[j])
                    {
                        for (int i = 0; i < pastedRowCells.Length; i++)
                            myDataGridViewRow.Cells[i].Value = pastedRowCells[i];
                    }
                    j++;
                }
            }
        }
private void btnBulkAdd_单击(对象发送者,事件参数e)
{
DataObject o=(DataObject)剪贴板。GetDataObject();
if(o.GetDataPresent(DataFormats.Text))
{
如果(dgvIntake.RowCount>0)
dgvIntake.Rows.Clear();
如果(dgvIntake.ColumnCount>0)
dgvIntake.Columns.Clear();
bool columnsAdded=false;
string[]pastedRows=System.Text.RegularExpressions.Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd(“\r\n.ToCharray()),”\r\n”);
int j=0;
foreach(pastedRow中的字符串pastedRow)
{
字符串[]pastedRowCells=pastedRow.Split(新字符[]{'\t'});
如果(!列已添加)
{
for(int i=0;i
至于我的批量插入按钮:

private void btnBulkInsert_Click(object sender, EventArgs e)
        {
            string strQuery;
            try
            {
                using (SqlConnection conn = new SqlConnection("Data Source = ROTIMSQL01; Initial Catalog = TDB; Persist Security Info = True; User ID = adiM; Password = Mohan@1234"))
                {
                    using (SqlCommand comm = new SqlCommand())
                    {
                        comm.Connection = conn;
                        conn.Open();
                        for(int i=0;i<dgvIntake.Rows.Count; i++)
                        {
                            strQuery = @"INSERT INTO [dbo].[TestTable] VALUES " + dgvIntake.Rows[i].Cells["ID"].Value + ","
                                + dgvIntake.Rows[i].Cells["Other1"].Value + ",'" + dgvIntake.Rows[i].Cells["Other2"].Value + "'," + dgvIntake.Rows[i].Cells["Other3"].Value + ","
                                + dgvIntake.Rows[i].Cells["Other4"].Value + "," + dgvIntake.Rows[i].Cells["Other5"].Value + ")"; 
                                comm.CommandText = strQuery;
                            comm.ExecuteNonQuery();
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
private void btnBulkInsert\u单击(对象发送方,事件参数e)
{
字符串strQuery;
尝试
{
使用(SqlConnection conn=newsqlconnection)(“数据源=ROTIMSQL01;初始目录=TDB;持久安全信息=True;用户ID=adiM;密码=Mohan@1234"))
{
使用(SqlCommand comm=newsqlcommand())
{
通信连接=连接;
conn.Open();

对于Excel上的(int i=0;i,它不存在“columnname”,您在Excel中看到的也是

excel中唯一的列名类似于A、B、C、D、E……Z、AA、AB、AC

因此,将列名称粘贴到第一行是正常的

因此,有两种解决方案:

  • 可能需要控制第一行中的列名

  • 在Excel中不应复制列名