Click here to Skip to main content
15,881,757 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
On line 366 , i am getting error cannot convert from string to System.IO.Stream.

and on line 383, i am getting streamwriter does not contain a definition for close.




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using MySql.Data.MySqlClient;

using System.Diagnostics;


using System.IO;



namespace connect
{

    class DBConnect
    {
        private MySqlConnection connection;
        private string server;
        private string database;
        private string uid;
        private string password;

        //Constructor
        public DBConnect()
        {
            Initialize();
        }

        //Initialize values
        private void Initialize()
        {
            server = "localhost";
            database = "first_db";
            uid = "root";
            password = "";
            string connectionString;
            connectionString = "SERVER=" + server + ";" + "DATABASE=" +
            database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

            connection = new MySqlConnection(connectionString);

            this.display();

        }


        // displays the database

        public void display()
        {

            // a is the number of rows 
            int a = -1;

            a = this.Countrows();

            //Console.WriteLine(a);


            // b is the number of columns
            int b = this.Countcolumns();

            //Console.WriteLine(b);


            //create a new list with 3 columns , b = 3; b is the number of columns 
            List<string>[] newlist = new List<string>[b];


            // this.Select() fetches the dataset, set it to equal to newlist 
            newlist = this.Select();


            Console.WriteLine("Id" + " " + "username" + " " + "password");

            for (int j = 0; j < a; j++) // iterate through each row; a is total number of rows 
            {


                for (int i = 0; i < b; i++) // ITERATE THROUGH EACH COLUMN  ; b is total number of columns
                {
                    Console.Write(newlist[i][j] + " ");


                }
                // for each  row of obsv..write a new line
                Console.WriteLine();
            }


        }


        //open connection to database
        public bool OpenConnection()
        {

            try
            {
                connection.Open();

                Console.WriteLine("connection opened");

                return true;
            }
            catch (MySqlException ex)
            {
                //When handling errors, you can your application's response based 
                //on the error number.
                //The two most common error numbers when connecting are as follows:
                //0: Cannot connect to server.
                //1045: Invalid user name and/or password.
                switch (ex.Number)
                {
                    case 0:
                        Console.WriteLine("Cannot connect to server.  Contact administrator");
                        break;

                    case 1045:
                        Console.WriteLine("Invalid username/password, please try again");
                        break;
                }
                return false;
            }



        }

        //Close connection
        public bool CloseConnection()
        {
            try
            {
                connection.Close();

                Console.WriteLine("connection closed");
                return true;
            }
            catch (MySqlException ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }



        }



        //Insert statement
        public void Insert()
        {

            string query = "INSERT INTO users (id, username, password) VALUES('23' ,'Jojo', '33')  , ('99', 'jen', '66')";

            //open connection
            if (this.OpenConnection() == true)
            {
                //create command and assign the query and connection from the constructor
                MySqlCommand cmd = new MySqlCommand(query, connection);

                Console.WriteLine("values inserted");



                //Execute command
                cmd.ExecuteNonQuery();

                //close connection
                this.CloseConnection();
            }

        }





        //Update statement
        public void Update()
        {

            string query = "UPDATE users SET username='Joe', password='22', id='33'  WHERE username='Joe'";

            //Open connection
            if (OpenConnection() == true)
            {
                //create mysql command
                MySqlCommand cmd = new MySqlCommand();
                //Assign the query using CommandText
                cmd.CommandText = query;
                //Assign the connection using Connection
                cmd.Connection = connection;

                //Execute query
                cmd.ExecuteNonQuery();

                //close connection
                this.CloseConnection();
            }



        }




        //Delete statement
        public void Delete()
        {

            string query = "DELETE FROM users WHERE username='Joe'";

            if (this.OpenConnection() == true)
            {
                MySqlCommand cmd = new MySqlCommand(query, connection);
                cmd.ExecuteNonQuery();
                this.CloseConnection();
            }


        }




        //Select statement
        public List<string>[] Select()
        {
            string query = "SELECT * FROM users";

            //Create a list of 3 elements to store the result
            List<string>[] list = new List<string>[3];


            // each element of list is a new list of strings
            list[0] = new List<string>();
            list[1] = new List<string>();
            list[2] = new List<string>();

            //Open connection, running OpenConnection() will open the connection



            if (this.OpenConnection() == true)
            {
                //Create Command
                MySqlCommand cmd = new MySqlCommand(query, connection);
                //Create a data reader and Execute the command
                MySqlDataReader dataReader = cmd.ExecuteReader();

                //Read the data and store them in the list        
                // iterate through each row... dataReader.Read will get the data for each row...
                while (dataReader.Read())
                {

                    // iterate through each column, add the id , username, password list[0] is column1 which is id, list[1] IS COLUMN2 WHICH IS USERNAME... list[0][0]  element column 1 , row 1 

                    list[0].Add(dataReader["id"] + "");
                    list[1].Add(dataReader["username"] + "");
                    list[2].Add(dataReader["password"] + "");
                }

                //close Data Reader
                dataReader.Close();

                //close Connection
                this.CloseConnection();

                //return list to be displayed
                return list;
            }
            else
            {
                return list;
            }

        }



        //Count statement
        public int Countrows()
        {
            string query = "SELECT Count(*) FROM users";
            int Count = -1;

            //Open Connection
            if (this.OpenConnection() == true)
            {
                //Create Mysql Command
                MySqlCommand cmd = new MySqlCommand(query, connection);

                //ExecuteScalar will return one value
                Count = int.Parse(cmd.ExecuteScalar() + "");

                //close Connection
                this.CloseConnection();

                return Count;
            }
            else
            {
                return Count;
            }

        }




        public int Countcolumns()
        {

            string query = "SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS  WHERE table_schema = 'first_db'  AND table_name = 'users'";
            int Count = -1;

            //Open Connection
            if (this.OpenConnection() == true)
            {
                //Create Mysql Command
                MySqlCommand cmd = new MySqlCommand(query, connection);

                //ExecuteScalar will return one value
                Count = int.Parse(cmd.ExecuteScalar() + "");

                //close Connection
                this.CloseConnection();

                return Count;
            }
            else
            {
                return Count;
            }

        }



        //Backup
        public void Backup()
        {
            try
            {
                DateTime Time = DateTime.Now;
                int year = Time.Year;
                int month = Time.Month;
                int day = Time.Day;
                int hour = Time.Hour;
                int minute = Time.Minute;
                int second = Time.Second;
                int millisecond = Time.Millisecond;

                //Save file to C:\ with the current date as a filename
                string path;
                path = "C:\\MySqlBackup" + year + "-" + month + "-" + day +
            "-" + hour + "-" + minute + "-" + second + "-" + millisecond + ".sql";
                StreamWriter file = new StreamWriter(path);


                ProcessStartInfo psi = new ProcessStartInfo();
                psi.FileName = "mysqldump";
                psi.RedirectStandardInput = false;
                psi.RedirectStandardOutput = true;
                psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}",
                    uid, password, server, database);
                psi.UseShellExecute = false;

                Process process = Process.Start(psi);

                string output;
                output = process.StandardOutput.ReadToEnd();
                file.WriteLine(output);
                process.WaitForExit();
                file.Close();
                process.Close();
            }
            catch (IOException ex)
            {
                Console.WriteLine("Error , unable to backup!");

                Console.WriteLine("ex.message");
            }



        }



        /*
        //Restore
        public void Restore()
        {
        }
         * 
          */
    }



}


What I have tried:

I am not sure what to put here. this is just an error which i have no concept of. as i am completely new to C# , i beg your understanding here.
Posted
Updated 31-Aug-17 1:58am
Comments
Graeme_Grant 31-Aug-17 6:45am    
You know that there are no line numbers right? There is also too much code unrelated to the problem. Please update the question with just the extracted relevant information...
CPallini 31-Aug-17 7:01am    
Your code looks correct. Could you please mark the offending lines?
CHill60 31-Aug-17 7:03am    
What is the content of path?

1 solution

Oh you got the objects wrong, what you wrote was
C#
string path = "C:\\MySqlBackup" + year + "-" + month + "-" + day +
           "-" + hour + "-" + minute + "-" + second + "-" + millisecond + ".sql";
               StreamWriter file = new StreamWriter(path);



But what you want to do is to create the stream before making the writer, and remember to either escape your escape characters (backslash) or use compiletime constant indicator (@)

C#
string path = @"C:\\MySqlBackup" + year + "-" + month + "-" + day +
                           "-" + hour + "-" + minute + "-" + second + "-" + millisecond + ".sql";

            using (var stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
            {
                var writer = new StreamWriter(stream, Encoding.UTF8);
                writer.Write("Hello world");
                writer.Flush();
                writer.Close();
            }
 
Share this answer
 
Comments
GKP1992 31-Aug-17 11:15am    
@forte74 you should notice that Thomas wrapped the stream object inside a using block.
That is a good practice for disposable objects and makes sure that the stream is closed after the task is finished.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900