EM_Y Ответов: 1

Извлечение файла excel из таблицы mysql с помощью entitymodel / C#


Я пытаюсь получить конкретные строки между 2 датами 1 и 2 Из таблицы MySQL и преобразовать таблицу результатов в файл excel .
Я попробовал метод mysqlConnection , он отлично работает, но я хочу сделать то же самое, используя метод entity model .

MysqlCoonection компания Methode :

MySqlConnection connection = new MySqlConnection("datasource=;port=;username=;password=");
connection.Open();

string sQuery = "select * from  DB.table1 WHERE date = '" + d1 + "' and date <='" + d2+ "' ";

MySqlDataAdapter cmd= new MySqlDataAdapter(sQuery, connection);
DataSet ds = new DataSet();
cmd.Fill(ds);

//Conversion part code  
            Excel.Application app;
            Excel.Workbook wb;
            Excel.Worksheet ws;

            object misValue = System.Reflection.Missing.Value;

            app = new Excel.Application();
            app.Visible = true;
            wb = app.Workbooks.Add(misValue);

            ws = (Excel.Worksheet)wb.ActiveSheet;


            for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
            {
                ws.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName;
            }
         

            for (int k = 1; k < ds.Tables[0].Rows.Count; k++)
            {

                for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
                {
                    ws.Cells[k + 1, j + 1] = ds.Tables[0].Rows[k][j].ToString();
                            
                }


            }


Что я уже пробовал:

То, что я пробовала в сущности, компания Methode :

table_Entity result = new table_Entity();

 var  EntityQuery=from t in DB.Table1 where t.date >= d1 && t.date <=  d2  select t;
 var result = EntityQuery.ToList(); 


Можно ли использовать результат var и скопировать его в набор данных, чтобы использовать его в той же части кода excel преобразования ?


Спасибо Вам за вашу помощь и внимание .

Gerry Schmitz

Да, вам просто нужно выяснить, что находится в "var result".

EM_Y

Привет Джерри
Я почти теряю надежду выложить свою проблему . Я изо всех сил стараюсь понять ,Спасибо вам за ваш ответ !

Richard Deeming

string sQuery = "select * from  DB.table1 WHERE date = '" + d1 + "' and date <='" + d2+ "' ";


Не делай этого так! Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

EM_Y

Привет, Ричард, я использую здесь запрос entity framework, а не oledb-соединение . Мне не нужен параметризованный запрос .

Richard Deeming

Неуместный. Если вы выполняете необработанный SQL-запрос, вам необходимо использовать параметры.

1 Ответов

Рейтинг:
0

Maciej Los

Если вы хотите сохранить данные в файл Excel, вы можете подключиться к файлу excel через Метод oledbconnection[^] и INSERT данные через Объект oledbcommand[^].

Больше:
Учебник по OLE DB (C#)[^]
Строки подключения Microsoft ACE OLEDB 12.0 - ConnectionStrings.com[^]

[РЕДАКТИРОВАТЬ]

Цитата:
Мой вопрос заключается в том, чтобы выполнить ту же операцию с помощью запроса модели entity framework .

Да, вы можете подключиться к базе данных MySQL с помощью EF. Видеть: MySQL :: MySQL Connector/NET руководство разработчика :: поддержка 9.1 Entity Framework 6[^]


EM_Y

Мне действительно удалось преобразовать мою таблицу MySQL в excel с помощью MySQL connection /command !
Мой вопрос заключается в том, чтобы выполнить ту же операцию с помощью запроса модели entity framework .


table_Entity result = new table_Entity();
var  EntityQuery=from t in DB.Table1 where t.date >= d1 && t.date <=  d2  select t;