Guest User

Untitled

a guest
Mar 14th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. using System;
  2. using System.Data.OracleClient;
  3. using System.Globalization;
  4.  
  5. namespace TimestampTest
  6. {
  7. internal class Program
  8. {
  9. private const string Password = "...";
  10. private const string Tns = "...";
  11. private const string User = "...";
  12. private const string CreateTableBlock = "create table timestamp_test(t timestamp)";
  13. private const string DropTableBlock = "drop table timestamp_test";
  14. private const string InsertBlock = "insert into timestamp_test(t) values ({0})";
  15. private const string OraDate = "to_timestamp('31.12.2009 00:00:00.123000', 'DD.MM.YYYY HH24:MI:SS.FF')";
  16. private const string OraErrDate = "to_timestamp('31.12.9999', 'DD.MM.YYYY')";
  17. private const string SelectBlock = "select count(1) from timestamp_test where t = :t";
  18.  
  19. private static readonly DateTime NetDate = DateTime.ParseExact("31.12.2009 00:00:00.123", "dd.MM.yyyy HH:mm:ss.fff",
  20. CultureInfo.InvariantCulture);
  21.  
  22. private static readonly DateTime NetErrDate = DateTime.ParseExact("31.12.9999 00:00", "dd.MM.yyyy HH:mm",
  23. CultureInfo.InvariantCulture);
  24.  
  25. private static OracleCommand MakeCommand(string text, OracleConnection connection,
  26. params OracleParameter[] parameters)
  27. {
  28. var command = new OracleCommand(text, connection);
  29. command.Parameters.AddRange(parameters);
  30. return command;
  31. }
  32.  
  33. private static OracleConnection MakeConnection()
  34. {
  35. var connection =
  36. new OracleConnection(string.Format("Server={0}; User ID={1}; Password={2}", Tns, User, Password));
  37. connection.Open();
  38. return connection;
  39. }
  40.  
  41. private static OracleCommand DropTableCommand(OracleConnection connection)
  42. {
  43. return MakeCommand(DropTableBlock, connection);
  44. }
  45.  
  46. private static OracleCommand CreateTableCommand(OracleConnection connection)
  47. {
  48. return MakeCommand(CreateTableBlock, connection);
  49. }
  50.  
  51. private static OracleCommand InsertCommand(string timestampText, OracleConnection connection)
  52. {
  53. return MakeCommand(string.Format(InsertBlock, timestampText), connection);
  54. }
  55.  
  56. private static OracleCommand InsertCommand(DateTime timestamp, OracleConnection connection)
  57. {
  58. var parameter = new OracleParameter("t", timestamp) {OracleType = OracleType.Timestamp};
  59. return MakeCommand(string.Format(InsertBlock, ":t"), connection, new[] { parameter });
  60. }
  61.  
  62. private static OracleCommand SelectCommand(DateTime timestamp, bool specifyType, OracleConnection connection)
  63. {
  64. var parameter = new OracleParameter("t", timestamp);
  65. if (specifyType)
  66. parameter.OracleType = OracleType.Timestamp;
  67. return MakeCommand(SelectBlock, connection, new[] { parameter });
  68. }
  69.  
  70. private static void Main(string[] args)
  71. {
  72. OracleConnection connection = MakeConnection();
  73. try
  74. {
  75. DropTableCommand(connection).ExecuteNonQuery();
  76. }
  77. catch (OracleException e)
  78. {
  79. if (e.Code != 942)
  80. throw;
  81. }
  82. CreateTableCommand(connection).ExecuteNonQuery();
  83. InsertCommand(OraDate, connection).ExecuteNonQuery();
  84. InsertCommand(OraErrDate, connection).ExecuteNonQuery();
  85. InsertCommand(NetErrDate, connection).ExecuteNonQuery();
  86. var countExp = (decimal) SelectCommand(NetDate, true, connection).ExecuteScalar();
  87. var countImp = (decimal)SelectCommand(NetDate, false, connection).ExecuteScalar();
  88. var errCountExp = (decimal) SelectCommand(NetErrDate, true, connection).ExecuteScalar();
  89. var errCountImp = (decimal)SelectCommand(NetErrDate, false, connection).ExecuteScalar();
  90.  
  91. Console.WriteLine("Count(explicit type): {0}\nCount(implicit type): {1}\nErrCount(explicit type): {2}\nErrCount(implicit type): {3}", countExp, countImp, errCountExp, errCountImp);
  92. Console.ReadLine();
  93. }
  94. }
  95. }
Add Comment
Please, Sign In to add comment