TheRealProgrammer Ответов: 1

Экспорт дат из таблицы mysql в файл. CSV


Привет,

Я попытался экспортировать таблицу MySQL в файл.csv, но там что-то не работает, и я не могу понять, что это такое. Сначала я попытался сохранить даты в DataTable, а затем экспортировать их в файл. csv с помощью этой функции:

* Ошибка: "
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1" at sda.Fill(data);

<pre>public void CreateCSVFile(DataTable dtDataTablesList, string strFilePath)
        {
            // Create the CSV file to which grid data will be exported.
            StreamWriter sw = new StreamWriter(strFilePath, false);
            //First we will write the headers.
            int iColCount = dtDataTablesList.Columns.Count;
            for (int i = 0; i < iColCount; i++)
            {
                sw.Write(dtDataTablesList.Columns[i]);
                if (i < iColCount - 1)
                {
                    sw.Write("", "");
                }
            }
            sw.Write(sw.NewLine);

            // Now write all the rows.
            foreach (DataRow dr in dtDataTablesList.Rows)
            {
                for (int i = 0; i < iColCount; i++)
                {
                    if (!Convert.IsDBNull(dr[i]))
                    {
                        sw.Write(dr[i].ToString());
                    }
                    if (i < iColCount - 1)
                    {
                        sw.Write("", "");
                    }
                }
                sw.Write(sw.NewLine);
            }
            sw.Close();
        }


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

MySqlConnection connection = CDBAccess.GetCon;
MySqlCommand sSql = new MySqlCommand ("SELECT * from mytable;", соединение);
MySqlDataAdapter sda = новый MySqlDataAdapter();
АСД.SelectCommand = sSql;
DataTable data = новый DataTable();
sda. Fill(данные);
Путь к строке = @"C:\Users\Public\Documents\MyDocument";
CreateCSVFile(data, path);

MayurDighe

"TheRealProgrammer";)

Используйте Отладчик.

TheRealProgrammer

Что это меняет? Он по-прежнему останавливается на ПДД.Заполнить(данные) с той же самой ошибкой.

MayurDighe

Это сэкономит много времени.
Вы поймете, какие данные передаются в какую переменную? Кроме того, вы можете убедиться, что переданные данные верны или нет?

Он останавливается на sda. fill (data)... потому что машина не понимает, что делать дальше?
У вас есть эксплицитность научить машину, что дальше? Вот почему отладчик входит в картину, чтобы знать, где код на самом деле терпит неудачу.

TheRealProgrammer

Строка NowDate "20161004075341"
+ подключение {с MySQL.Данных.MySqlClient.MySqlConnection} MySql. Data.MySqlClient.MySqlConnection
+ sSql {MySql. Data.MySqlClient.MySqlCommand} MySql. Data.MySqlClient.MySqlCommand
+ ПДД {с MySQL.Данных.MySqlClient.MySqlDataAdapter} MySql. Data.MySqlClient.MySqlDataAdapter
+ сведения {система}.Данных.Объект DataTable
путь нулевая строка

Похоже, что-то с моим MySqlComand an DataAdapter не так.

MayurDighe

"путь нулевой строки"

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

TheRealProgrammer

Не путь неправильный, а что-то со строкой MySQL не так.

TheRealProgrammer

Почему sSql возвращает "{MySql.Data.MySqlClient.MySqlCommand}", а не "SELECT * from mytable"?

MayurDighe

Именно так. Вот почему-используйте отладчик.
Идите строчка за строчкой.

TheRealProgrammer

Я ничего не могу найти.

1 Ответов

Рейтинг:
10

TheRealProgrammer

Это было бы решением:

MySqlDataAdapter sda = new MySqlDataAdapter();
                        sda.SelectCommand = cmdDataBase;

                        DataTable data = new DataTable();
                        sda.Fill(data);
                        BindingSource aSource = new BindingSource();
                        aSource.DataSource = data;
                        dataGridView1.DataSource = aSource;
                        sda.Update(data);

                        StringBuilder sb = new StringBuilder();

                        string[] columnNames = data.Columns.Cast