ITPub博客

首页 > 数据库 > > CUBRID学习笔记 16 元数据支持

CUBRID学习笔记 16 元数据支持

作者:LCR_ 时间:2022-04-08 10:51:45 0 删除 编辑

简化了很多 ,在sqlserver需要用语句实现的功能

接口如下

  1. public DataTable GetDatabases(string[] filters)
  2. public DataTable GetTables(string[] filters)
  3. public DataTable GetViews(string[] filters)
  4. public DataTable GetColumns(string[] filters)
  5. public DataTable GetIndexes(string[] filters)
  6. public DataTable GetIndexColumns(string[] filters)
  7. public DataTable GetExportedKeys(string[] filters)
  8. public DataTable GetCrossReferenceKeys(string[] filters)
  9. public DataTable GetForeignKeys(string[] filters)
  10. public DataTable GetUsers(string[] filters)
  11. public DataTable GetProcedures(string[] filters)
  12. public static DataTable GetDataTypes()
  13. public static DataTable GetReservedWords()
  14. public static String[] GetNumericFunctions()
  15. public static String[] GetStringFunctions()
  16. public DataTable GetSchema(string collection, string[] filters)获取数据库
  1. CUBRIDSchemaProvider schema = new CUBRIDSchemaProvider(conn);
  2. DataTable dt = schema.GetTables(new string[] { "%" });
  3. Debug.Assert(dt.Columns.Count == 3);
  4. Debug.Assert(dt.Rows.Count == 10);
  5. Debug.Assert(dt.Rows[][].ToString() == "demodb");
  6. Debug.Assert(dt.Rows[][1].ToString() == "demodb");
  7. Debug.Assert(dt.Rows[][2].ToString() == "stadium");获取表的外键
  1. CUBRIDSchemaProvider schema = new CUBRIDSchemaProvider(conn);
  2. DataTable dt = schema.GetForeignKeys(new string[] { "game" });
  3. Debug.Assert(dt.Columns.Count == 9);
  4. Debug.Assert(dt.Rows.Count == 2);
  5. Debug.Assert(dt.Rows[][].ToString() == "athlete");
  6. Debug.Assert(dt.Rows[][1].ToString() == "code");
  7. Debug.Assert(dt.Rows[][2].ToString() == "game");
  8. Debug.Assert(dt.Rows[][3].ToString() == "athlete_code");
  9. Debug.Assert(dt.Rows[][4].ToString() == "1");
  10. Debug.Assert(dt.Rows[][5].ToString() == "1");
  11. Debug.Assert(dt.Rows[][6].ToString() == "1");
  12. Debug.Assert(dt.Rows[][7].ToString() == "fk_game_athlete_code");
  13. Debug.Assert(dt.Rows[][8].ToString() == "pk_athlete_code");获取索引
  1. CUBRIDSchemaProvider schema = new CUBRIDSchemaProvider(conn);
  2. DataTable dt = schema.GetIndexes(new string[] { "game" });
  3. Debug.Assert(dt.Columns.Count == 9);
  4. Debug.Assert(dt.Rows.Count == 5);
  5. Debug.Assert(dt.Rows[3][2].ToString() == "pk_game_host_year_event_code_athlete_code"); //verify index name
  6. Debug.Assert(dt.Rows[3][4].ToString() == "True"); //Is it a primary key?完整例子
  1. using CUBRID.Data.CUBRIDClient;
  2. using System.Diagnostics;
  3. using System.Data;
  4. namespace MetadataExample
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. CUBRIDConnectionStringBuilder sb = new CUBRIDConnectionStringBuilder("localhost", "demodb", "public", "", "33000");
  11. using (CUBRIDConnection conn = new CUBRIDConnection(sb.GetConnectionString()))
  12. {
  13. conn.Open();
  14. CUBRIDSchemaProvider schema = new CUBRIDSchemaProvider(conn);
  15. //get tables example
  16. using (DataTable dt = schema.GetTables(new string[] { "%" }))
  17. {
  18. Debug.Assert(dt.Columns.Count == 3);
  19. Debug.Assert(dt.Rows.Count == 10);
  20. Debug.Assert(dt.Rows[][].ToString() == "demodb");
  21. Debug.Assert(dt.Rows[][1].ToString() == "demodb");
  22. Debug.Assert(dt.Rows[][2].ToString() == "stadium");
  23. }
  24. //get columns example
  25. using (DataTable dt = schema.GetColumns(new string[] { "game" }))
  26. {
  27. Debug.Assert(dt.Columns.Count == 11);
  28. Debug.Assert(dt.Rows.Count == 7);
  29. Debug.Assert(dt.Rows[][3].ToString() == "host_year");
  30. Debug.Assert(dt.Rows[1][3].ToString() == "event_code");
  31. }
  32. //get users example
  33. using (DataTable dt = schema.GetUsers(null))
  34. {
  35. Debug.Assert(dt.Columns.Count == 1);
  36. Debug.Assert(dt.Rows.Count >= 2);
  37. Debug.Assert(dt.Rows[][].ToString().ToUpper() == "DBA");
  38. Debug.Assert(dt.Rows[1][].ToString().ToUpper() == "PUBLIC");
  39. }
  40. //get views example
  41. using (DataTable dt = schema.GetViews(null))
  42. {
  43. Debug.Assert(dt.Columns.Count == 3);
  44. Debug.Assert(dt.Rows.Count == );
  45. }
  46. //get foreign keys example
  47. using (DataTable dt = schema.GetForeignKeys(new string[] { "game" }))
  48. {
  49. Debug.Assert(dt.Columns.Count == 9);
  50. Debug.Assert(dt.Rows.Count == 2);
  51. Debug.Assert(dt.Rows[][].ToString() == "athlete");
  52. Debug.Assert(dt.Rows[][1].ToString() == "code");
  53. Debug.Assert(dt.Rows[][2].ToString() == "game");
  54. Debug.Assert(dt.Rows[][3].ToString() == "athlete_code");
  55. Debug.Assert(dt.Rows[][4].ToString() == "1");
  56. Debug.Assert(dt.Rows[][5].ToString() == "1");
  57. Debug.Assert(dt.Rows[][6].ToString() == "1");
  58. Debug.Assert(dt.Rows[][7].ToString() == "fk_game_athlete_code");
  59. Debug.Assert(dt.Rows[][8].ToString() == "pk_athlete_code");
  60. Debug.Assert(dt.Rows[1][].ToString() == "event");
  61. Debug.Assert(dt.Rows[1][1].ToString() == "code");
  62. Debug.Assert(dt.Rows[1][2].ToString() == "game");
  63. Debug.Assert(dt.Rows[1][3].ToString() == "event_code");
  64. Debug.Assert(dt.Rows[1][4].ToString() == "1");
  65. Debug.Assert(dt.Rows[1][5].ToString() == "1");
  66. Debug.Assert(dt.Rows[1][6].ToString() == "1");
  67. Debug.Assert(dt.Rows[1][7].ToString() == "fk_game_event_code");
  68. Debug.Assert(dt.Rows[1][8].ToString() == "pk_event_code");
  69. }
  70. //get indexes example
  71. using (DataTable dt = schema.GetIndexes(new string[] { "game" }))
  72. {
  73. Debug.Assert(dt.Columns.Count == 9);
  74. Debug.Assert(dt.Rows.Count == 5);
  75. Debug.Assert(dt.Rows[3][2].ToString() == "pk_game_host_year_event_code_athlete_code"); //Index name
  76. Debug.Assert(dt.Rows[3][4].ToString() == "True"); //Is PK?
  77. }
  78. conn.Close();
  79. }
  80. }
  81. }
  82. }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000523/viewspace-3165765/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-02-22

  • 博文量
    1402
  • 访问量
    15027