1

ウィンドウ アプリケーションのデータ グリッド ビューに csv ファイルをインポートしました。100 を超えるレコードを持つ 40 列のデータです。今私が欲しいのは、グリッド ビュー データをデータベースに保存することです。一括挿入を試みましたが、エラーが発生しました: 宛先テーブルにアクセスできません。このような場合にテーブルを作成する方法がわかりません。つまり、40 列すべてを定義する必要があるということですか? csv ファイルをインポートするたびに列名が異なる場合はどうすればよいですか?

ここに私が試してきたコードがあります:

string rowValue="";
string[] cellValue;
DataTable dt = new DataTable();
if (System.IO.File.Exists(csvPath.Text))
{
    System.IO.StreamReader streamReader = new StreamReader(csvPath.Text);
    // Reading header
    rowValue = streamReader.ReadLine();
    cellValue = rowValue.Split(',');
    for (int i = 0; i < cellValue.Count(); i++)
    {
        DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
        column.Name = cellValue[i];
        dataGridView1.Columns.Add(column);
     }
     // Reading content
     while (streamReader.Peek() != -1)
     {
        rowValue = streamReader.ReadLine();
        cellValue = rowValue.Split(',');
        dataGridView1.Rows.Add(cellValue);
      }
      streamReader.Close();
 }
 else
 {
      MessageBox.Show("Please Select a File!");
 }
 dataGridView1.DataSource = dt;     

データベース テーブルに保存する場合:

        con = new System.Data.SqlClient.SqlConnection();
        con.ConnectionString="Data Source=.\\SQLEXPRESS;AttachDbFilename=E:\\tushar\\dbLws.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        con.Open();

        if (string.IsNullOrEmpty(tbName.Text.Trim()))
        {

            MessageBox.Show("Please supply Table Name");
        }
        SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.Default);
        sqlBulkCopy.DestinationTableName = tbName.Text.Trim();

        for (int i = 0; i < dataGridView1.ColumnCount; i++)
        {
            sqlBulkCopy.ColumnMappings.Add(dataGridView1.Columns[i].Name, dataGridView1.Columns[i].Name);
        }

        DataTable dt = new DataTable();
        dt = (DataTable)dataGridView1.DataSource;
        sqlBulkCopy.WriteToServer(dt);

        sqlBulkCopy.Close();

        MessageBox.Show("Saved successfully");

        con.Close();

    }        
4

1 に答える 1

-1

http://raffidotnetlearner.blogspot.in/2014/02/how-to-upload-csv-file-data-into.html

完璧に機能しています。素晴らしいステップを踏んでください

于 2014-02-21T10:50:42.730 に答える