Загрузка файла в SQL Server

1

Перезапустите вопрос... приведенный ниже код вставляет данные в базу данных SQL Server, а в правильную таблицу, однако, данные не вставлены правильно... вот код

if (FileUpload1.HasFile)
{
    string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName)));
    FileUpload1.PostedFile.SaveAs(path);

    OleDbConnection OleDbcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";");
    OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", OleDbcon);
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);

    OleDbcon.Open();

    DbDataReader dr = cmd.ExecuteReader();
    string con_str = @"Data Source=ENERGYSQL\ENERGY;Initial Catalog=ProjectHandler;Persist Security Info=True;User ID=aconyon;Password=birchall";

    SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str);
    bulkInsert.DestinationTableName = "StockTable";
    bulkInsert.WriteToServer(dr);

    OleDbcon.Close();

    Array.ForEach(Directory.GetFiles((Server.MapPath("~/temp/"))), File.Delete);
    //Label1.ForeColor = Color.Green;
    Label1.Text = "Successfully inserted";
}
else
{
    //Label1.ForeColor = ConsoleColor.Red;
    Label1.Text = "please select ther File";
}

что этот код делает, это выбрать самый правый столбец, в моем примере Quantity и вставить именно это в базу данных, игнорируя все остальные строки (A и B), мне нужно изменить OleDbCommand, чтобы выбрать определенные строки. A (ItemName), B (Дата), C (Количество)

  • 0
    Что является внутренним исключением, которое, вероятно, даст вам более подробную информацию о том, что его вызывает.
  • 0
    решил, я думаю, только что получил ошибку с базой данных, преобразовывающей DateTime в int сейчас ... использовал это: OleDbConnection OleDbcon = new OleDbConnection (@ "Provider = Microsoft.Jet.OLEDB.4.0; Источник данных =" + путь + "; Расширенные свойства = \ "Excel 8.0; HDR = Да; IMEX = 1 \"; ");
Показать ещё 2 комментария
Теги:
sql-server

2 ответа

3
Лучший ответ

используйте этот код.

string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data
Source={0};Extended Properties='Excel 8.0;HRD=YES;IMEX=1'", 
Server.MapPath(@"~\DownloadedExcelFilesOp4\myfile" + fileExt));// + "\\" +
FileUploadControl.PostedFile.FileName.ToString());
using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
{
   OleDbCommand command = new OleDbCommand(("Select [Demo1] ,[Demo2]  FROM [Sheet1$]"), 
   connection);
   connection.Open();
   using (DbDataReader dr = command.ExecuteReader())
   {
   }
}
  • 0
    Работал лакомство, спасибо приятель
-3

Вы можете использовать запрос, как показано ниже, для получения значения любого конкретного столбца.

OleDbCommand command = new OleDbCommand(("Select [Col1] ,[Col2]  FROM [Sheet1$]"), 
   connection);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню