Запись таблицы в текстовый файл
Пытаюсь записать таблицу в текстовый файл, но запись происходит только для первой строки, а остальная часть таблицы не записывается. Как исправить код, чтобы писалась вся таблица? Главное в консоль выводится вся таблица верно.
class Program
{
static void Main(string[] args)
{
// строка подключения к БД
string connStr = "server = localhost; port = 3306; username = root; password =; database = blacklist999";
// создаём объект для подключения к БД
MySqlConnection conn = new MySqlConnection(connStr);
// устанавливаем соединение с БД
conn.Open();
// запрос
string sql = "SELECT steamID, type, why FROM toxics";
// объект для выполнения SQL-запроса
MySqlCommand command = new MySqlCommand(sql, conn);
// объект для чтения ответа сервера
MySqlDataReader reader = command.ExecuteReader();
// читаем результат
while (reader.Read())
{
// элементы массива [] - это значения столбцов из запроса SELECT
Console.WriteLine(reader[0].ToString() + "|" + reader[1].ToString() + "@" + reader[2].ToString());
}
StreamWriter sw = new StreamWriter(@"D:\1.txt");
sw.Write(reader[0].ToString() + "|" + reader[1].ToString() + "@" + reader[2].ToString());
sw.Close();
reader.Close(); // закрываем reader
// закрываем соединение с БД
conn.Close();
Console.ReadLine();
}
}
Если поместить в sw.Write в while (reader.Read()) ничего не меняется :(
class Program
{
static void Main(string[] args)
{
// строка подключения к БД
string connStr = "server = localhost; port = 3306; username = root; password =; database = blacklist999";
// создаём объект для подключения к БД
MySqlConnection conn = new MySqlConnection(connStr);
// устанавливаем соединение с БД
conn.Open();
// запрос
string sql = "SELECT steamID, type, why FROM toxics";
// объект для выполнения SQL-запроса
MySqlCommand command = new MySqlCommand(sql, conn);
// объект для чтения ответа сервера
MySqlDataReader reader = command.ExecuteReader();
// читаем результат
while (reader.Read())
{
// элементы массива [] - это значения столбцов из запроса SELECT
Console.WriteLine(reader[0].ToString() + "|" + reader[1].ToString() + "@" + reader[2].ToString());
StreamWriter sw = new StreamWriter(@"D:\1.txt");
sw.Write(reader[0].ToString() + "|" + reader[1].ToString() + "@" + reader[2].ToString());
sw.Close();
}
reader.Close(); // закрываем reader
// закрываем соединение с БД
conn.Close();
Console.ReadLine();
}
}
Ответы (2 шт):
Автор решения: Miron
→ Ссылка
Поместите
sw.Write(reader[0].ToString() + "|" + reader[1].ToString() + "@" + reader[2].ToString());
В цикл while, туда, где вы выводите в информацию о записи в консоль
Автор решения: Bulson
→ Ссылка
static void Main(string[] args)
{
// строка подключения к БД
string connStr = "server = localhost; port = 3306; username = root; password =; database = blacklist999";
using (var con = new MySqlConnection(connStr))
using(var cmd = con.CreateCommand())
{
cmd.CommandText = "SELECT steamID, type, why FROM toxics";
con.Open();
using (var reader = cmd.ExecuteReader())
using (var writer = new StreamWriter(@"D:\1.txt"))
{
while (reader.Read())
{
writer.WriteLine(reader[0].ToString() + "|" + reader[1].ToString() + "@" + reader[2].ToString());
}
}
}
}