Example #1
0
        public override void Save(ParkingCar car)
        {
            string booksOutput = "";

            booksOutput += "<cars>\n"; //\n 대신에 Enviroment.NewLine 써도 됨
            if (Cars.Count > 0)
            {
                foreach (var item in Cars)
                {
                    booksOutput += "<car>\n";
                    booksOutput += $"   <parkingSpot>{item.parkingSpot}</parkingSpot>\n";
                    booksOutput += $"   <carNumber>{item.carNumber}</carNumber>\n";
                    booksOutput += $"   <driverName>{item.driverName}</driverName>\n";
                    booksOutput += $"   <phoneNumber>{item.phoneNumber}</phoneNumber>\n";
                    booksOutput += $"   <parkingTime>{item.parkingTime}</parkingTime>\n";
                    booksOutput += "</car>\n";
                }
            }
            else //xml 파일에 아무 것도 없는 경우
            {
                for (int i = 1; i <= 5; i++)
                {
                    booksOutput += "<car>\n";
                    booksOutput += $"   <parkingSpot>{i}</parkingSpot>\n";
                    booksOutput += "   <carNumber></carNumber>\n";
                    booksOutput += "   <driverName></driverName>\n";
                    booksOutput += "   <phoneNumber></phoneNumber>\n";
                    booksOutput += "   <parkingTime></parkingTime>\n";
                    booksOutput += "</car>\n";
                }
            }
            booksOutput += "</cars>";
            File.WriteAllText(@"./Cars.xml", booksOutput);
        }
Example #2
0
 public override void Save(ParkingCar car)
 {
     try
     {
         //주차 or 출차로 인하여 상태가 변하였으므로 update문을 호출하여 db table에도 값이 바뀔 수 있도록 한다.
         dbh.updateQuery(car);
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message + Environment.NewLine + exception.StackTrace);
         dataSource.PrintLog(exception.Message + Environment.NewLine + exception.StackTrace);
     }
 }
Example #3
0
 //xml json mssql mysql oracle 다 이용하지 않을 거라면 내부 List가지고만 주차관리하기
 //이럴 경우 프로그램 끄면 다 리셋된다.
 public virtual void Load()
 {
     for (int i = 1; i <= 5; i++)
     {
         ParkingCar tempCar = new ParkingCar()
         {
             parkingSpot = i,
             carNumber   = "",
             driverName  = "",
             phoneNumber = "",
             parkingTime = DateTime.Now
         };
         Cars.Add(tempCar);
     }
 }
Example #4
0
 public override bool insertParkingSpot(int parkingSpotNum)
 {
     try
     {
         ParkingCar checkSpot = Cars.Single((x) => x.parkingSpot == parkingSpotNum);
         if (checkSpot != null)
         {
             MessageBox.Show("이미 존재하는 주차공간입니다.");
             dataSource.PrintLog("이미 존재하는 주차공간입니다.");
         }
         return(false); //single했는데 catch로 안 빠지면 어차피 주차공간이 있다는 것이다.
     }
     catch (Exception ex)
     {
         //없다면 이리로 온다.
         dbh.insertQuery(parkingSpotNum);
         Load();
         return(true);
     }
 }
Example #5
0
        public override void Save(ParkingCar car)
        {
            var jCarArray = new JArray();

            if (Cars.Count > 0)
            {
                foreach (var item in Cars)
                {
                    var jCarobject = new JObject();
                    jCarobject.Add("parkingSpot", item.parkingSpot);
                    jCarobject.Add("carNumber", item.carNumber);
                    jCarobject.Add("driverName", item.driverName);
                    jCarobject.Add("phoneNumber", item.phoneNumber);
                    jCarobject.Add("parkingTime", item.parkingTime);
                    jCarArray.Add(jCarobject);
                }
            }
            else
            {
                for (int i = 1; i <= 5; i++)
                {
                    var jCarobject = new JObject();
                    jCarobject.Add("parkingSpot", i);
                    jCarobject.Add("carNumber", "");
                    jCarobject.Add("driverName", "");
                    jCarobject.Add("phoneNumber", "");
                    jCarobject.Add("parkingTime", new DateTime());
                    jCarArray.Add(jCarobject);
                }
            }

            var jCarArrayobect = new JObject();

            jCarArrayobect.Add("car", jCarArray);
            var jCarsobect = new JObject();

            jCarsobect.Add("cars", jCarArrayobect);

            // 저장
            File.WriteAllText(@"./Cars.json", jCarsobect.ToString());
        }
Example #6
0
        public override void Load()
        {
            Cars.Clear();
            try
            {
                string   carsOutput   = File.ReadAllText(@"./Cars.xml");
                XElement carsXElement = XElement.Parse(carsOutput);
                foreach (var item in carsXElement.Descendants("car"))
                {
                    int      tempParkingSpot = int.Parse(item.Element("parkingSpot").Value);
                    string   tempCarNumber   = item.Element("carNumber").Value;
                    string   tempDriverName  = item.Element("driverName").Value;
                    string   tempPhoneNumber = item.Element("phoneNumber").Value;
                    DateTime tempParkingTime = item.Element("parkingTime").Value == "" ?
                                               DateTime.Now : DateTime.Parse(item.Element("parkingTime").Value);

                    ParkingCar tempCar = new ParkingCar()
                    {
                        parkingSpot = tempParkingSpot,
                        carNumber   = tempCarNumber,
                        driverName  = tempDriverName,
                        phoneNumber = tempPhoneNumber,
                        parkingTime = tempParkingTime
                    };
                    Cars.Add(tempCar);
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                dataSource.PrintLog(ex.Message);
                dataSource.PrintLog(ex.StackTrace);

                //만약 파일이 없어서 여기로 진입한 경우라면
                CreateFile(); //파일을 다시 만들고
                Save(null);   //그 파일을 저장한 다음
                Load();       //다시 불러들여본다.

                //단, Load 함수 자체가 잘못된거라면 이 코드는 무한루프에 빠진다.
            }
        }
Example #7
0
        public override void updateQuery(ParkingCar car)
        {
            try
            {
                ConnectDB();

                MySqlCommand cmd        = new MySqlCommand("", Myconn);
                string       sqlcommand = "Update CarManager set CarNumber = '', DriverName = '', PhoneNumber = '', ParkingTime = null where ParkingSpot = '" + car.parkingSpot + "'";

                if (car.carNumber != "") //주차
                {
                    sqlcommand = $"Update CarManager set CarNumber = '{car.carNumber}', DriverName = '{car.driverName}', PhoneNumber = '{car.phoneNumber}', ParkingTime = '{car.parkingTime.ToString("yyyy-MM-dd HH:mm:ss.fff")}' where ParkingSpot = '{car.parkingSpot}'";
                }
                cmd.CommandText = sqlcommand;
                cmd.ExecuteNonQuery();
                Myconn.Close();
            }
            catch (Exception e)
            {
                showDBError(e);
            }
        }
Example #8
0
        public override void updateQuery(ParkingCar car)
        {
            try
            {
                ConnectDB();
                cmd.Connection = OraConn;
                string sqlcommand = "Update CarManager set CarNumber = '', DriverName = '', PhoneNumber = '', ParkingTime = null where ParkingSpot = '" + car.parkingSpot + "'";

                if (car.carNumber != "") //주차
                {
                    //SET PARKINGTIME = TO_DATE('2021-05-05 11:06:21', 'YYYY-MM-DD HH24:MI:SS')
                    sqlcommand = $"Update CarManager set CarNumber = '{car.carNumber}', DriverName = '{car.driverName}', PhoneNumber = '{car.phoneNumber}', ParkingTime = TO_DATE('{car.parkingTime.ToString("yyyy-MM-dd HH:mm:ss")}', 'YYYY-MM-DD HH24:MI:SS') where ParkingSpot = '{car.parkingSpot}'";
                }
                cmd.CommandText = sqlcommand;
                cmd.ExecuteNonQuery();
                OraConn.Close();
            }
            catch (Exception e)
            {
                showDBError(e);
            }
        }
Example #9
0
 public override void Load()
 {
     try
     {
         //select 문으로 해당 테이블의 전체 데이터들을 가져옴
         ds = dbh.selectQuery();
         Cars.Clear(); //새로 조회할 때마다 Clear 해줘야 함
         foreach (DataRow item in ds.Tables[0].Rows)
         {
             ParkingCar car = new ParkingCar();
             car.parkingSpot = int.Parse(item["ParkingSpot"].ToString());
             car.carNumber   = item["CarNumber"].ToString();
             car.driverName  = item["DriverName"].ToString();
             car.phoneNumber = item["PhoneNumber"].ToString();
             car.parkingTime = item["ParkingTime"].ToString() == "" ? new DateTime() : DateTime.Parse(item["ParkingTime"].ToString());
             Cars.Add(car); //그 데이터들을 Cars에 넣음
         }
     }
     catch (Exception exception)
     {
         dataSource.PrintLog(exception.Message);
         dataSource.PrintLog(exception.StackTrace);
     }
 }
Example #10
0
 public override bool insertParkingSpot(int parkingSpotNum)
 {
     try
     {
         ParkingCar checkSpot = Cars.Single((x) => x.parkingSpot == parkingSpotNum);
         if (checkSpot != null)
         {
             MessageBox.Show("이미 존재하는 주차공간입니다.");
             dataSource.PrintLog("이미 존재하는 주차공간입니다.");
         }
         return(false);
     }
     catch (Exception)
     {
         //없다면 이리로 온다.
         Cars.Add(new ParkingCar()
         {
             parkingSpot = parkingSpotNum, carNumber = "", driverName = "", phoneNumber = "", parkingTime = DateTime.Now
         });
         Save(null);
         Load();
         return(true);
     }
 }
Example #11
0
        public override void updateQuery(ParkingCar car)
        {
            try
            {
                ConnectDB();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection  = Msconn;
                cmd.CommandType = CommandType.Text;

                string sqlcommand;
                if (car.carNumber == "")
                {
                    sqlcommand = "Update CarManager set CarNumber = '', DriverName = '', PhoneNumber = '', ParkingTime = null where ParkingSpot = @p1";

                    cmd.Parameters.AddWithValue("@p1", car.parkingSpot);
                }
                else
                {
                    sqlcommand = "Update CarManager set CarNumber = @p1, DriverName = @p2, PhoneNumber = @p3, ParkingTime = @p4 where ParkingSpot = @p5";

                    cmd.Parameters.AddWithValue("@p1", car.carNumber);
                    cmd.Parameters.AddWithValue("@p2", car.driverName);
                    cmd.Parameters.AddWithValue("@p3", car.phoneNumber);
                    cmd.Parameters.AddWithValue("@p4", car.parkingTime.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                    cmd.Parameters.AddWithValue("@p5", car.parkingSpot); //제대로 된 숫자 입력하지 않으면 이 부분까지 코드가 실행되지도 못 하도록 짜여있음
                }

                cmd.CommandText = sqlcommand;
                cmd.ExecuteNonQuery(); //쿼리 실행
                Msconn.Close();
            }
            catch (Exception eee)
            {
                showDBError(eee);
            }
        }
Example #12
0
 public virtual void updateQuery(ParkingCar Car)
 {
 }
Example #13
0
 //주차, 출차시 호출
 //근데 만약 파일이나 db 저장이 아니라면 Form 안에서 이미 List에 대한 연산이 다 끝남(data.csv에 -1썼을 때)
 //따라서 여기서는 구체적으로 구현할 내용은 없음.
 public virtual void Save(ParkingCar car)
 {
 }