TestSqlDataReader.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // Test/SqlDataRead.cs
  3. //
  4. // Test to do read a simple forward read only record set.
  5. // Using SqlCommand.ExecuteReader() to return a SqlDataReader
  6. // which can be used to Read a row
  7. // and Get a String or Int32.
  8. //
  9. // Author:
  10. // Daniel Morgan <[email protected]>
  11. //
  12. // (C) 2002 Daniel Morgan
  13. //
  14. using System;
  15. using System.Data;
  16. using System.Data.SqlClient;
  17. namespace TestSystemDataSqlClient {
  18. class TestSqlDataReader {
  19. static void Test(SqlConnection con, string sql,
  20. CommandType cmdType, CommandBehavior behavior,
  21. string testDesc)
  22. {
  23. SqlCommand cmd = null;
  24. SqlDataReader rdr = null;
  25. int c;
  26. int results = 0;
  27. Console.WriteLine("Test: " + testDesc);
  28. Console.WriteLine("[BEGIN SQL]");
  29. Console.WriteLine(sql);
  30. Console.WriteLine("[END SQL]");
  31. cmd = new SqlCommand(sql, con);
  32. cmd.CommandType = cmdType;
  33. Console.WriteLine("ExecuteReader...");
  34. rdr = cmd.ExecuteReader(behavior);
  35. do {
  36. results++;
  37. Console.WriteLine("Result Set " + results + "...");
  38. // get the DataTable that holds
  39. // the schema
  40. DataTable dt = rdr.GetSchemaTable();
  41. // number of columns in the table
  42. Console.WriteLine(" Total Columns: " +
  43. dt.Columns.Count);
  44. // display the schema
  45. for(c = 0; c < dt.Columns.Count; c++) {
  46. Console.WriteLine(" Column Name: " +
  47. dt.Columns[c].ColumnName);
  48. Console.WriteLine(" MaxLength: " +
  49. dt.Columns[c].MaxLength);
  50. Console.WriteLine(" Type: " +
  51. dt.Columns[c].DataType);
  52. }
  53. int nRows = 0;
  54. // Read and display the rows
  55. while(rdr.Read()) {
  56. Console.WriteLine(" Row " + nRows + ": ");
  57. for(c = 0; c < rdr.FieldCount; c++) {
  58. if(rdr.IsDBNull(c) == true)
  59. Console.WriteLine(" " +
  60. rdr.GetName(c) + " is DBNull");
  61. else
  62. Console.WriteLine(" " +
  63. rdr.GetName(c) + ": " +
  64. rdr[c].ToString());
  65. }
  66. nRows++;
  67. }
  68. Console.WriteLine(" Total Rows: " +
  69. nRows);
  70. } while(rdr.NextResult());
  71. Console.WriteLine("Total Result sets: " + results);
  72. rdr.Close();
  73. }
  74. [STAThread]
  75. static void Main(string[] args) {
  76. String connectionString = null;
  77. connectionString =
  78. "host=localhost;" +
  79. "dbname=test;" +
  80. "user=postgres";
  81. SqlConnection con;
  82. con = new SqlConnection(connectionString);
  83. con.Open();
  84. string sql;
  85. // Text - only has one query (single query behavior)
  86. sql = "select * from pg_tables";
  87. Test(con, sql, CommandType.Text,
  88. CommandBehavior.SingleResult, "Text1");
  89. // Text - only has one query (default behavior)
  90. sql = "select * from pg_tables";
  91. Test(con, sql, CommandType.Text,
  92. CommandBehavior.Default, "Text2");
  93. // Text - has three queries
  94. sql =
  95. "select * from pg_user;" +
  96. "select * from pg_tables;" +
  97. "select * from pg_database";
  98. Test(con, sql, CommandType.Text,
  99. CommandBehavior.Default, "Text3Queries");
  100. // Table Direct
  101. sql = "pg_tables";
  102. Test(con, sql, CommandType.TableDirect,
  103. CommandBehavior.Default, "TableDirect1");
  104. // Stored Procedure
  105. sql = "version";
  106. Test(con, sql, CommandType.StoredProcedure,
  107. CommandBehavior.Default, "SP1");
  108. con.Close();
  109. }
  110. }
  111. }