I need to save the result of SELECT into CSV file. For now do it using StreamWriter and SQLiteDataReader:
Code: Select all
var headers = new string[] { "Post Name", "", "User Name", "User Age", "User Role Name"};
var sb = new StringBuilder(100);
var separator = CultureInfo.CurrentCulture.TextInfo.ListSeparator;
using (var sw = new StreamWriter( "d:\\123.csv", false, Encoding.GetEncoding("windows-1251")))
{
//write headers to file
sb.Clear();
for (i = 0; i < headers.Length; i++)
if (i != headers.Length - 1)
{
sb.Append(headers[i]);
sb.Append(separator);
}
else
sb.Append(headers[i]);
//write string to file
sw.WriteLine(sb.ToString());
//write recods to file
var sqlBuilder = new SQLiteConnectionStringBuilder() { DataSource="d:\\123.db", FailIfMissing = true };
using (var command = new SQLiteCommand("SELECT Post.Name, User.Name, User.Age, UserRole.Name FROM Post INNER JOIN (User INNER JOIN UserRole ON UserRole.Id=User.UserRoleId) ON User.Id=Post.UserId", connection))
{
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
sb.Clear();
sb.Append(reader.GetString(0));
sb.Append(separator);
sb.Append(reader.GetString(1));
sb.Append(separator);
sb.Append(reader.GetInt16(2));
sb.Append(separator);
sb.Append(reader.GetString(3));
sb.Append(separator);
//write string to file
sw.WriteLine(sb.ToString());
}
reader.Close();
connection.Close();
}
}