SQLServer.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package com.dwl.mindoc.database.impl;
  2. import com.dwl.mindoc.database.Database;
  3. /**
  4. * @program: mindoc
  5. * @description: SQLServer
  6. * @author: daiwenlong
  7. * @create: 2018-10-13 12:20
  8. **/
  9. public class SQLServer implements Database {
  10. private String baseName;
  11. public SQLServer(String baseName) {
  12. this.baseName = baseName;
  13. }
  14. @Override
  15. public String getBaseName() {
  16. return this.baseName;
  17. }
  18. @Override
  19. public String getType() {
  20. return null;
  21. }
  22. @Override
  23. public String getTablesSql(Database base) {
  24. return "SELECT\r\n" +
  25. " obj.name AS table_name\r\n" +
  26. " ,CONVERT(NVARCHAR, cmt.value) AS table_comment\r\n" +
  27. " from dbo.sysobjects obj LEFT JOIN sys.extended_properties cmt\r\n" +
  28. " ON obj.id = cmt.major_id\r\n" +
  29. " AND cmt.minor_id = 0\r\n" +
  30. " AND cmt.name = 'MS_Description'\r\n" +
  31. " where obj.xtype = 'U'\r\n" +
  32. " AND obj.status >= 0\r\n" +
  33. " order by obj.name asc";
  34. }
  35. @Override
  36. public String getColumnSql(Database base, String tableName) {
  37. return "SELECT obj.NAME \r\n" +
  38. " AS \r\n" +
  39. " 表名, \r\n" +
  40. " CONVERT(NVARCHAR, epTwo.value) \r\n" +
  41. " AS 表说明, \r\n" +
  42. " col.colorder \r\n" +
  43. " AS colorder, \r\n" +
  44. " col.NAME \r\n" +
  45. " AS column_name, \r\n" +
  46. " t.NAME + CASE WHEN t.NAME LIKE '%char%' THEN CASE CONVERT(NVARCHAR, \r\n" +
  47. " Isnull( \r\n" +
  48. " Columnproperty(col.id, col.NAME, 'PRECISION'), '')) WHEN '-1' THEN \r\n" +
  49. " '(max)' ELSE \r\n" +
  50. " '('+CONVERT(NVARCHAR, \r\n" +
  51. " Isnull(Columnproperty(col.id, col.NAME, 'PRECISION'), '')) \r\n" +
  52. " +')' END ELSE CASE WHEN t.NAME = 'decimal' THEN '('+CONVERT(NVARCHAR, \r\n" +
  53. " Isnull( \r\n" +
  54. " Columnproperty(col.id, col.NAME, 'PRECISION'), '')) + ',' + CONVERT( \r\n" +
  55. " NVARCHAR, \r\n" +
  56. " Isnull(Columnproperty(col.id, col.NAME, 'Scale'), ''))+')' ELSE '' END \r\n" +
  57. " END AS \r\n" +
  58. " column_type, \r\n" +
  59. " Isnull(ep.[value], '') \r\n" +
  60. " AS column_comment \r\n" +
  61. " -- ,CASE \r\n" +
  62. " -- WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '1' \r\n" +
  63. " -- ELSE '' \r\n" +
  64. " --END AS [IDENTITY] \r\n" +
  65. " , \r\n" +
  66. " CASE \r\n" +
  67. " WHEN EXISTS (SELECT 1 \r\n" +
  68. " FROM dbo.sysindexes si \r\n" +
  69. " INNER JOIN dbo.sysindexkeys sik \r\n" +
  70. " ON si.id = sik.id \r\n" +
  71. " AND si.indid = sik.indid \r\n" +
  72. " INNER JOIN dbo.syscolumns sc \r\n" +
  73. " ON sc.id = sik.id \r\n" +
  74. " AND sc.colid = sik.colid \r\n" +
  75. " INNER JOIN dbo.sysobjects so \r\n" +
  76. " ON so.NAME = si.NAME \r\n" +
  77. " AND so.xtype = 'PK' \r\n" +
  78. " WHERE sc.id = col.id \r\n" +
  79. " AND sc.colid = col.colid) THEN 'Y' \r\n" +
  80. " ELSE '' \r\n" +
  81. " END \r\n" +
  82. " AS column_key, \r\n" +
  83. " CASE \r\n" +
  84. " WHEN col.isnullable = 1 THEN 'Y' \r\n" +
  85. " ELSE '' \r\n" +
  86. " END \r\n" +
  87. " AS is_nullable, \r\n" +
  88. " Isnull(comm.text, '') \r\n" +
  89. " AS default_value \r\n" +
  90. "--,CONVERT(NVARCHAR, ep.value) remark \r\n" +
  91. "FROM dbo.syscolumns col \r\n" +
  92. " LEFT JOIN dbo.systypes t \r\n" +
  93. " ON col.xtype = t.xusertype \r\n" +
  94. " INNER JOIN dbo.sysobjects obj \r\n" +
  95. " ON col.id = obj.id \r\n" +
  96. " AND obj.xtype = 'U' \r\n" +
  97. " AND obj.status >= 0 \r\n" +
  98. " LEFT JOIN dbo.syscomments comm \r\n" +
  99. " ON col.cdefault = comm.id \r\n" +
  100. " LEFT JOIN sys.extended_properties ep \r\n" +
  101. " ON col.id = ep.major_id \r\n" +
  102. " AND col.colid = ep.minor_id \r\n" +
  103. " AND ep.NAME = 'MS_Description' \r\n" +
  104. " LEFT JOIN sys.extended_properties epTwo \r\n" +
  105. " ON obj.id = epTwo.major_id \r\n" +
  106. " AND epTwo.minor_id = 0 \r\n" +
  107. " AND epTwo.NAME = 'MS_Description' \r\n" +
  108. "WHERE 1 = 1 \r\n" +
  109. " AND obj.NAME = '" + tableName + "' \r\n" +
  110. "ORDER BY obj.NAME, \r\n" +
  111. " col.colorder";
  112. //return "select column_name,column_type,column_key,is_nullable,column_comment from information_schema.columns where table_schema = '"+base.getBaseName()+"' and table_name = '"+tableName+"'";
  113. }
  114. }