Pārlūkot izejas kodu

数据库异常提示与回滚完善

kingwang1995 7 gadi atpakaļ
vecāks
revīzija
7d2fa52de5

+ 22 - 15
parkMonitor/DataBase/DBOperation.cs

@@ -21,13 +21,14 @@ namespace parkMonitor.DataBase
             if (count > 0 && reader.Read())
             {
                 garageFreeSpace = reader.GetInt32("garageFreeSpace");
+                return garageFreeSpace;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("车位剩余数查无结果");
             }
             oper.DBClose();
-            return garageFreeSpace;
+            return 0;
         }
 
         //查询空闲车位位置
@@ -55,7 +56,7 @@ namespace parkMonitor.DataBase
             }
             else
             {
-                Console.WriteLine("查无结果"); 
+                Console.WriteLine("空闲车位查无结果"); 
             }
             oper.DBClose();
             return null;
@@ -83,13 +84,14 @@ namespace parkMonitor.DataBase
                     ps.garageID = garageID;
                     lps.Add(i, ps);
                 }
+                return lps;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("所有车位查无结果");
             }
             oper.DBClose();
-            return lps;
+            return null;
         }
 
         //数据插入云记录表,并返回停车记录id
@@ -177,13 +179,14 @@ namespace parkMonitor.DataBase
                 v.garageID = garageID;
                 v.frontwheelbase = frontwheelbase;
                 v.rearwheelbase = rearwheelbase;
+                return v;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("云端轮距查无结果");
             }
             oper.DBClose();
-            return v;
+            return null;
         }
 
         //根据车位id获得x,y,z
@@ -201,13 +204,14 @@ namespace parkMonitor.DataBase
                 ps.parkingSpaceX = reader.GetInt32("parkingSpaceX");
                 ps.parkingSpaceY = reader.GetInt32("parkingSpaceY");
                 ps.parkingSpaceZ = reader.GetInt32("parkingSpaceZ");
+                return ps;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("车位xyz查无结果");
             }
             oper.DBClose();
-            return ps;
+            return null;
         }
 
         //查询手机号是否被注册
@@ -255,13 +259,14 @@ namespace parkMonitor.DataBase
             if (count > 0 && reader.Read())
             {
                 userID = reader.GetInt32("userID");
+                return userID;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("userID查无结果");
             }
             oper.DBClose();
-            return userID;
+            return 0;
         }
 
         //查询停车记录id
@@ -276,13 +281,14 @@ namespace parkMonitor.DataBase
             if (count > 0 && reader.Read())
             {
                 parkingRecordsID = reader.GetInt32("parkingRecordsID");
+                return parkingRecordsID;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("停车记录id查无结果");
             }
             oper.DBClose();
-            return parkingRecordsID;
+            return 0;
         }
 
         //车库有无此车
@@ -384,13 +390,14 @@ namespace parkMonitor.DataBase
                 v.garageID = garageID;
                 v.frontwheelbase = frontwheelbase;
                 v.rearwheelbase = rearwheelbase;
+                return v;
             }
             else
             {
-                Console.WriteLine("查无结果");
+                Console.WriteLine("本地轮距查无结果");
             }
             oper.DBClose();
-            return v;
+            return null;
         }
 
     }

+ 13 - 3
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -799,6 +799,11 @@ namespace parkMonitor.server.CoreThread
                 connectionStr = "SqlConnectionStr";
                 vehiclelist = oper.GetVehicle(connectionStr, queueCmd.LicenseNum);
             }
+            if (vehiclelist == null)
+            {
+                Rollback(queueCmd, ps.parkingSpaceID, false, false);
+                return;
+            }
             int parkingSpaceID = vehiclelist.parkingSpaceID;
             garageID = vehiclelist.garageID;
             frontwheelbase = vehiclelist.frontwheelbase;
@@ -813,13 +818,18 @@ namespace parkMonitor.server.CoreThread
                 connectionStr = "SqlConnectionStr";
                 ps = oper.GetFetchingSpace(connectionStr, parkingSpaceID);
             }
+            if (ps == null)
+            {
+                Rollback(queueCmd, parkingSpaceID, false, false);
+                return;
+            }
             cm = new ControlMessage();
 
             int robotID = 0;
             robotID = parkingSpaceID / 15 + 1;
             if (!WaitForRobotResource(robotID))
             {
-                Rollback(queueCmd, parkingSpaceID, true, false);
+                Rollback(queueCmd, parkingSpaceID, false, false);
                 return;
             }
             //取车
@@ -841,7 +851,7 @@ namespace parkMonitor.server.CoreThread
             //等待PLC取车完成信号
             if (!waitForFetchCompletionSignal(queueCmd, ps.parkingSpaceID, ref robotError, 1))
             {
-                Rollback(queueCmd, ps.parkingSpaceID, true, false);
+                Rollback(queueCmd, ps.parkingSpaceID, false, false);
                 return;
             }
             //取车完成
@@ -853,7 +863,7 @@ namespace parkMonitor.server.CoreThread
             PLC.SetMessage(cm2);
             if (!waitForFetchCompletionSignal(queueCmd, ps.parkingSpaceID, ref robotError, 0))
             {
-                Rollback(queueCmd, ps.parkingSpaceID, true, false);
+                Rollback(queueCmd, ps.parkingSpaceID, false, false);
                 return;
             }
             Robot.robot1.occupied = false;