I have develop an application in which i am taking the data from one table which contain only 1 column which contain the table name.
Motive of the application is if this table contain 2 records(fetch 2 table name)
then i have to fetch the records from these table then insert into csv file
here i will be creating csv file
My Application is running smooth
And it is creating empty csv files
for Debugging purpose i have written messagebox.show();
In this it is showing data properly
But when i use sw.writeline();
it writes empty data

following is my code

namespace Contract_db_to_csv
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection connection_string = new SqlConnection("Data Source= 192.168.25.12; Initial Catalog = aceweb; user id = dbaadmin; password = Mumb@!@123");
            DataTable dt = new DataTable();
            DataTable dt1 = new DataTable();
            string query = "select SYMBOL from Contract_Mastar";

            
            try
            {
                //connection_string = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["database"]);    
                
                connection_string.Open();
                using (SqlCommand cmd = new SqlCommand(query, connection_string))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        dt = new DataTable();
                        dt.Load(dr);
                    }
                }

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    saveFileDialog1.ShowDialog();
                    string filename = saveFileDialog1.FileName;
                    StreamWriter sw = new StreamWriter(filename);
                    string table_name = Convert.ToString(dt.Rows[i]["Symbol"]);

                    string querytoexport = "Select * from " + table_name;

                    using (SqlCommand cmd = new SqlCommand(querytoexport, connection_string))
                    {
                        using (SqlDataReader dr = cmd.ExecuteReader())
                        {
                            dt1 = new DataTable();
                            dt1.Load(dr);
                        }
                    }
                    bool writeheader = true;
                    string[] arr = new String[dt1.Columns.Count];
                    if (writeheader)
                    {
                        for (int a = 0; a < dt1.Columns.Count; a++)
                        {
                            arr[a] = dt1.Columns[a].ColumnName;
                            arr[a] = GetWriteableValue(arr[a]);
                            
                        }
                        sw.WriteLine(string.Join(",", arr));
                        MessageBox.Show(string.Join(",", arr));
                    }

                    for (int j = 0; j < dt1.Rows.Count; j++)
                    { 
                        string[] dataArr = new String[dt1.Columns.Count]; 
                        for (int k = 0; k < dt1.Columns.Count; k++) 
                        {   object o = dt1.Rows[j][k];
                            dataArr[k] = GetWriteableValue(o);
                            //sw.WriteLine(string.Join(",", dataArr));
                            
                        }
                        sw.WriteLine(string.Join(",", dataArr));
                        MessageBox.Show(string.Join(",", dataArr));

                    }//for (int j = 0; j < dt.Rows.Count; j++)

                } //main for loop
                MessageBox.Show("Done");
            }//try
            catch (Exception er)
            {
                MessageBox.Show("Error : " + er.Message);
            }//catch
            finally
            {
                //connection_string.Close();
            }//finally

        } //private void button1_Click(object sender, EventArgs e)

        public static string GetWriteableValue(object o)
        {
            if (o == null || o == Convert.DBNull)
            {
                return "";
            }
            else
            {
                if (o.ToString().IndexOf(",") == -1)
                {
                    return o.ToString();
                }
                else
                {
                    return "\"" + o.ToString() + "\"";
                }
            }
        }
    }
}

I am not getting what is wrong

Recommended Answers

All 2 Replies

Try adding sw.Flush(); as line 78

commented: Nice observation +14

Thanks Momerath
My problem solved

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.