[当尝试打开与phpmyadmin服务器的连接时程序冻结

问题描述 投票:0回答:1

我正在尝试让我的应用程序与phpmyadmin sql服务器中在线的数据库一起使用。当我启动我的应用程序时,它需要从数据库中获取密码,但是当它尝试打开连接时,整个程序只会冻结,并且会长时间保持这种状态。在我正在使用的每个班级中,我都建立了新的连接,我不知道这是否可能是一个问题。

下面是我正在为此使用的数据库类。

 class Database
    {
        private SqlConnection connection;
        private string connectionstring = "Server=studmysql01.fhict.local;Uid=dbi413434;Database=dbi413434;Pwd=Koekjesdeeg;";

        private string nfcId;
        private int vak;
        private int rij;

        public Database()
        {
            connection = new SqlConnection(connectionstring);
        }

        public string GetPassword(string username)
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("SELECT password FROM Login WHERE username = '" + username + "'", connection);
            string checkPassWord = Convert.ToString(cmd.ExecuteScalar());
            connection.Close();
            return checkPassWord;
        }

        public void MakeAccount(string userName, string passWord)
        {
            connection.Open();
            SqlCommand comm = connection.CreateCommand();
            comm.CommandText = "INSERT INTO LOGIN (USERNAME, PASSWORD) VALUES (@USERNAME, @PASSWORD)";
            comm.Parameters.AddWithValue("@USERNAME", userName);
            comm.Parameters.AddWithValue("@PASSWORD", passWord);
            if (comm.ExecuteNonQuery() == 0)
            {
                throw new ArgumentException("account is not made");
            }
            connection.Close();
        }

        public void Change_Info(double rate, int maximum_stay, int row, int line)
        {
            string command;
            connection.Open();
            SqlCommand comm = connection.CreateCommand();
            if (rate == 0)
            {
                command = "UPDATE General SET Maximum_Stay=@maximum_stay, Row=@row, Line=@line WHERE ID=1";
            }
            else if (maximum_stay == 0)
            {
                command = "UPDATE General SET Rate=@rate, Row=@row, Line=@line WHERE ID=1";
            }
            else if (row == 0)
            {
                command = "UPDATE General SET Rate=@rate, Maximum_Stay=@maximum_stay, Line=@line WHERE ID=1";
            }
            else if (line == 0)
            {
                command = "UPDATE General SET Rate=@rate, Maximum_Stay=@maximum_stay, Row=@row WHERE ID=1";
            }
            else
            {
                command = "UPDATE General SET Rate=@rate, Maximum_Stay=@maximum_stay, Row=@row, Line=@line WHERE ID=1";
            }
            comm.CommandText = command;
            comm.Parameters.AddWithValue("@rate", rate);
            comm.Parameters.AddWithValue("@maximum_stay", maximum_stay);
            comm.Parameters.AddWithValue("@row", row);
            comm.Parameters.AddWithValue("@line", line);
            if (comm.ExecuteNonQuery() == 0)
            {
                throw new ArgumentException("info is not updated in general");
            }
            connection.Close();
        }

        public void CheckForId(int id, int row, int line, bool taken, string target)
        {
            string queryUpdate = "UPDATE eventlog SET Rij=@row, Vak=@line, Beschikbaarheid=@taken, Parkeerdoel=@target WHERE ID=@id";
            string queryInsert = "INSERT INTO eventlog (ID, Rij, Vak, Beschikbaarheid, Parkeerdoel) VALUES (@id, @row, @line, @taken, @target)";
            string queryDelete = "DELETE * FROM eventlog WHERE id=@id";
            connection.Open();
            SqlCommand cmd = new SqlCommand("SELECT id FROM eventlog WHERE ID=@id", connection);
            cmd.Parameters.AddWithValue("@id", id);
            string data = Convert.ToString(cmd.ExecuteScalar());
            SqlCommand comm = connection.CreateCommand();
            if (data == "")
            {
                comm.CommandText = queryInsert;
            }
            else if (Int32.Parse(data) == id)
            {
                comm.CommandText = queryUpdate;
            }
            else
            {
                comm.CommandText = queryDelete;
            }
            comm.Parameters.AddWithValue("@row", row);
            comm.Parameters.AddWithValue("@line", line);
            comm.Parameters.AddWithValue("@taken", taken);
            comm.Parameters.AddWithValue("@target", target);
            comm.Parameters.AddWithValue("@id", id);
            if (comm.ExecuteNonQuery() == 0)
            {
                throw new ArgumentException("info is not correctly inserted checkForid");
            }
            connection.Close();
        }

        public double GetRate()
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("SELECT Rate FROM General WHERE ID=1", connection);
            double rate = Convert.ToDouble(cmd.ExecuteScalar());
            connection.Close();
            return rate;
        }

        public void SetId(int id, string nfcId, string kenteken, int row, int line, DateTime begintTijd)
        {
            if (row != -1 || line != -1)
            {
                connection.Open();
                SqlCommand comm = connection.CreateCommand();
                comm.CommandText = "INSERT INTO INCHECK (Timestamp, NfcId, Kenteken, ParkeerRij, ParkeerVak) VALUES (@Timestamp, @NfcId, @Kenteken, @ParkeerRij, @ParkeerVak)";
                comm.Parameters.AddWithValue("@Timestamp", begintTijd);
                comm.Parameters.AddWithValue("@NfcId", nfcId);
                comm.Parameters.AddWithValue("@Kenteken", kenteken);
                comm.Parameters.AddWithValue("@ParkeerRij", row);
                comm.Parameters.AddWithValue("@ParkeerVak", line);
                if (comm.ExecuteNonQuery() == 0)
                {
                    throw new ArgumentException("not correctly inserted Setid");
                }
                connection.Close();
            }
        }

        public void GetVisitorInformation(string kenteken)
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("SELECT NfcId FROM INCHECK WHERE Kenteken=@kenteken", connection);
            SqlCommand cmd2 = new SqlCommand("SELECT ParkeerVak FROM INCHECK WHERE Kenteken=@kenteken", connection);
            SqlCommand cmd3 = new SqlCommand("SELECT ParkeerRij FROM INCHECK WHERE Kenteken=@kenteken", connection);
            cmd.Parameters.AddWithValue("@kenteken", kenteken);
            cmd2.Parameters.AddWithValue("@kenteken", kenteken);
            cmd3.Parameters.AddWithValue("@kenteken", kenteken);
            nfcId = Convert.ToString(cmd.ExecuteScalar());
            vak = Convert.ToInt32(cmd2.ExecuteScalar());
            rij = Convert.ToInt32(cmd3.ExecuteScalar());
            connection.Close();
        }

        public void SetCheckOutId(int id, string kenteken, DateTime eindTijd)
        {
            connection.Open();
            SqlCommand comm = connection.CreateCommand();
            comm.CommandText = "INSERT INTO UITCHECK (Timestamp, NfcId, Kenteken, ParkeerRij, ParkeerVak) VALUES (@Timestamp, @NfcId, @Kenteken, @ParkeerRij, @ParkeerVak)";
            comm.Parameters.AddWithValue("@Timestamp", eindTijd);
            comm.Parameters.AddWithValue("@NfcId", nfcId);
            comm.Parameters.AddWithValue("@Kenteken", kenteken);
            comm.Parameters.AddWithValue("@ParkeerRij", rij);
            comm.Parameters.AddWithValue("@ParkeerVak", vak);
            if (comm.ExecuteNonQuery() == 0)
            {
                throw new ArgumentException("checkoutid is not correctly inserted");
            }
            connection.Close();
        }

        public void SetParkingTargets(string target)
        {
            connection.Open();
            SqlCommand comm = connection.CreateCommand();
            comm.CommandText = "INSERT INTO ParkingTargets (Targets) VALUES (@Targets)";
            comm.Parameters.AddWithValue("@Targets", target);
            if (comm.ExecuteNonQuery() == 0)
            {
                throw new ArgumentException("parking targets are not set");
            }
            connection.Close();
        }

        public void DeleteParkingTarget(string target)
        {
            string queryDelete = "DELETE FROM ParkingTargets WHERE Targets=@target";
            connection.Open();
            SqlCommand comm = connection.CreateCommand();
            comm.CommandText = queryDelete;
            comm.Parameters.AddWithValue("@target", target);
            if (comm.ExecuteNonQuery() == 0)
            {
                throw new ArgumentException("not deleted");
            }
            connection.Close();
        }

        public List<string> GetParkingTargets()
        {
            List<string> targets = new List<string>();
            connection.Open();
            SqlCommand cmd2 = new SqlCommand("SELECT COUNT(id) FROM ParkingTargets", connection);
            int numberOfLines = Convert.ToInt32(cmd2.ExecuteScalar());
            for (int i = 1; i <= numberOfLines; i++)
            {
                SqlCommand cmd = new SqlCommand("SELECT Targets FROM ParkingTargets WHERE ID=@id", connection);
                cmd.Parameters.AddWithValue("@id", i);
                targets.Add(Convert.ToString(cmd.ExecuteScalar()));
            }
            connection.Close();
            return targets;
        }
}
c# database database-connection
1个回答
0
投票

您忘记了在客户端类中调用Connect方法:

© www.soinside.com 2019 - 2024. All rights reserved.