Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.27 KB | None | 0 0
  1. private void ReadFile()
  2. {
  3. DataTable hallSeatdt = new DataTable();
  4. hallSeatdt.Columns.AddRange(new DataColumn[HallSeatVarCount] {
  5. new DataColumn("HallGroupID", typeof(int)),
  6. new DataColumn("ShowSeatID", typeof(int)),
  7. new DataColumn("Color", typeof(string)),
  8. new DataColumn("Price", typeof(double)),
  9. new DataColumn("SeatRow", typeof(int)),
  10. new DataColumn("SeatNumber", typeof(int)),
  11. new DataColumn("IsReserved", typeof(int))
  12. });
  13.  
  14. DataTable hallGroupdt = new DataTable();
  15. hallGroupdt.Columns.AddRange(new DataColumn[HallGroupVarCount] {
  16. new DataColumn("HallID", typeof(int)),
  17. new DataColumn("HallGroupID", typeof(int)),
  18. new DataColumn("Name", typeof(string)),
  19. new DataColumn("AZ", typeof(int))
  20. });
  21.  
  22. DataTable halldt = new DataTable();
  23. halldt.Columns.AddRange(new DataColumn[HallVarCount] {
  24. new DataColumn("HallID", typeof(int)),
  25. new DataColumn("Name", typeof(string)),
  26. new DataColumn("TicketLimit", typeof(int))
  27. });
  28.  
  29. XmlDocument doc = new XmlDocument();
  30. doc.Load(FileUpload.PostedFile.InputStream);
  31. try
  32. {
  33. foreach (XmlNode node in doc.DocumentElement.ChildNodes)
  34. {
  35. halldt.Rows.Add(Convert.ToInt32(node.ChildNodes[0].InnerText),
  36. node.ChildNodes[1].InnerText,
  37. Convert.ToInt32(node.ChildNodes[2].InnerText));
  38. for (int i = HallVarCount; i < node.ChildNodes.Count; i++)
  39. {
  40. hallGroupdt.Rows.Add(Convert.ToInt32(node.ChildNodes[i].ChildNodes[0].InnerText),
  41. Convert.ToInt32(node.ChildNodes[i].ChildNodes[1].InnerText),
  42. node.ChildNodes[i].ChildNodes[2].InnerText,
  43. Convert.ToInt32(node.ChildNodes[i].ChildNodes[3].InnerText));
  44.  
  45. for (int j = HallGroupVarCount; j < node.ChildNodes[i].ChildNodes.Count; j++)
  46. {
  47. hallSeatdt.Rows.Add(
  48. Convert.ToInt32(node.ChildNodes[i].ChildNodes[j].ChildNodes[1].InnerText),
  49. Convert.ToInt32(node.ChildNodes[i].ChildNodes[j].ChildNodes[0].InnerText),
  50. node.ChildNodes[i].ChildNodes[j].ChildNodes[2].InnerText,
  51. Convert.ToDouble(node.ChildNodes[i].ChildNodes[j].ChildNodes[3].InnerText),
  52. Convert.ToInt32(node.ChildNodes[i].ChildNodes[j].ChildNodes[4].InnerText),
  53. Convert.ToInt32(node.ChildNodes[i].ChildNodes[j].ChildNodes[6].InnerText),
  54. Convert.ToBoolean(node.ChildNodes[i].ChildNodes[j].ChildNodes[8].InnerText) ? 1 : 0
  55. );
  56. }
  57. }
  58.  
  59. }
  60. }
  61. catch (Exception ex)
  62. {
  63. ViewState["Error"] = "Unexpected file content. " + ex.Message;
  64. return;
  65. }
  66.  
  67. Connection.Open();
  68. SqlCommand cmd = new SqlCommand("InsertHalls", Connection);
  69. cmd.CommandType = CommandType.StoredProcedure;
  70. cmd.Parameters.AddWithValue("@Halls", halldt);
  71. cmd.ExecuteNonQuery();
  72.  
  73. cmd = new SqlCommand("InsertHallGroups", Connection);
  74. cmd.CommandType = CommandType.StoredProcedure;
  75. cmd.Parameters.AddWithValue("@HallGroups", hallGroupdt);
  76. cmd.ExecuteNonQuery();
  77.  
  78. cmd = new SqlCommand("InsertHallSeats", Connection);
  79. cmd.CommandType = CommandType.StoredProcedure;
  80. cmd.Parameters.AddWithValue("@HallSeats", hallSeatdt);
  81. cmd.ExecuteNonQuery();
  82.  
  83. Connection.Close();
  84.  
  85. ViewState["Success"] = "Inserted to DB succesfully";
  86. }
  87.  
  88.  
  89. /* ------------------------------------------------------------------------------------------------------------------------------------ */
  90.  
  91. CREATE TYPE HallType AS TABLE
  92. (
  93. HallID int,
  94. Name varchar(100),
  95. TicketLimit int
  96. )
  97. Go
  98.  
  99. CREATE TYPE HallGroupType AS TABLE
  100. (
  101. HallID int,
  102. HallGroupID int,
  103. Name varchar(100),
  104. AZ int
  105. )
  106. Go
  107.  
  108. CREATE TYPE HallSeatType AS TABLE
  109. (
  110. .....
  111. )
  112. Go
  113. /* ------------------------------------------------------------------------------------------------------------------------------------ */
  114. CREATE PROCEDURE [InsertHallGroups]
  115. @HallGroups HallGroupType Readonly
  116. AS
  117. SET IDENTITY_INSERT HallGroup ON
  118. BEGIN
  119. MERGE HallGroup AS target
  120. USING (
  121. SELECT h.HallID, h.HallGroupID, h.[Name], h.AZ
  122. FROM @HallGroups h
  123. ) AS SOURCE(HallID, HallGroupId, [Name], AZ)
  124. ON (target.HallGroupID = source.hallGroupId)
  125. WHEN MATCHED THEN
  126. UPDATE SET HallID = source.HallID, [Name] = source.[Name], AZ = source.AZ
  127. WHEN NOT MATCHED THEN
  128. INSERT (HallID, HallGroupID, [Name], AZ)
  129. VALUES (source.HallID, source.HallGroupId, source.[Name], source.AZ);
  130. END
  131. SET IDENTITY_INSERT HallGroup OFF
  132.  
  133. /* ------------------------------------------------------------------------------------------------------------------------------------ */
  134.  
  135. CREATE PROCEDURE [dbo].[InsertHallGroups]
  136. @HallGroups HallGroupType Readonly
  137. AS
  138. SET IDENTITY_INSERT HallGroup ON
  139. BEGIN
  140. MERGE HallGroup AS target
  141. USING (
  142. SELECT h.HallID, h.HallGroupID, h.[Name], h.AZ
  143. FROM @HallGroups h
  144. ) AS SOURCE(HallID, HallGroupId, [Name], AZ)
  145. ON (target.HallGroupID = source.hallGroupId)
  146. WHEN MATCHED THEN
  147. UPDATE SET HallID = source.HallID, [Name] = source.[Name], AZ = source.AZ
  148. WHEN NOT MATCHED THEN
  149. INSERT (HallID, HallGroupID, [Name], AZ)
  150. VALUES (source.HallID, source.HallGroupId, source.[Name], source.AZ);
  151. END
  152. SET IDENTITY_INSERT HallGroup OFF
  153.  
  154. /* ------------------------------------------------------------------------------------------------------------------------------------ */
  155.  
  156. CREATE PROCEDURE [dbo].[InsertHallSeats]
  157. @HallSeats HallSeatType readonly
  158. AS
  159. SET IDENTITY_INSERT HallSeat ON
  160. BEGIN
  161. MERGE HallSeat AS target
  162. USING (
  163. SELECT ShowSeatID, HallGroupID, Color, Price, SeatRow, SeatNumber, IsReserved FROM @HallSeats
  164. ) AS SOURCE(ShowSeatID, HallGroupID, Color, Price, SeatRow, SeatNumber, IsReserved)
  165. ON (target.ShowSeatID = source.ShowSeatID)
  166. WHEN MATCHED THEN
  167. UPDATE SET HallGroupID = source.HallGroupID,
  168. Color = source.Color,
  169. Price = source.Price,
  170. SeatRow = source.SeatRow,
  171. SeatNumber = source.SeatNumber,
  172. IsReserved = source.IsReserved
  173. WHEN NOT MATCHED THEN
  174. INSERT (ShowSeatID, HallGroupID, Color, Price, SeatRow, SeatNumber, IsReserved)
  175. VALUES (source.ShowSeatID, source.HallGroupID, source.Color, source.Price, source.SeatRow, source.SeatNumber, source.IsReserved );
  176. END
  177. SET IDENTITY_INSERT HallSeat OFF
  178. /* ------------------------------------------------------------------------------------------------------------------------------------ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement