`
witcheryne
  • 浏览: 1098162 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

用ruby+java, 同步C++和数据库中的注释.

阅读更多

 

说明

SqlCommetTools是前一段时间为公司C/S研发做的, SqlServer注释同步工具. 将C++头文件中的注释同步到SQL Server表中.

 

代码可以从github中获取:

https://github.com/lvjian700/SqlCommetTools

 

使用到的技术:

 

  • ruby: 用来分析C++文件的语法
  • java: 用来进行数据库操作
  • Ant: 用来执行ruby和java代码

程序结构说明

headers/*.h 为待处理的C++头文件, 该文件中映射了数据库表结构. 并且每个属性后面都有单行注释

 

ruby/analyze.rb 程序为C++头文件分析程序, 分析C++中的语法, 提取Struts名称, 字段名称-注释. 并且生成相应的json文件.

 

src/ 目录下是Java程序, 用来分析ruby生成的json数据, 将注释更新到数据库中.

 

环境说明

 

 

  • ruby-1.9.2
  • JDK 1.6
  • Ant 1.8
  • Sql Server 2005 (其他Sql Server 版本未测试)

 

使用说明

 

1.clone项目

 

git://github.com/lvjian700/SqlCommetTools.git
 

2.安装ruby依赖

 

cd SqlCommetTools/ruby
bundle install
 

3.运行Ant脚本

 

cd SqlCommetTools
ant

核心代码说明

使用ruby分析C++程序语法

1.原理

 

 

  • 逐行读取C++源码文件
  • 使用正则表达式匹配Struct, 属性, 注释

2.ruby中逐行读取文件

 

 

File.open(File.dirname(__FILE__) + "/../headers/dyulctaskdefine.h").each_line do |line |
    # do something....
end

 

3.使用正则表达式匹配Struct,属性,注释

 

 

File.open(File.dirname(__FILE__) + "/../headers/dyulctaskdefine.h").each_line do |line |
    #match Struct
    structMatch = /^struct\s+(\w+)/.match(line)
    structName  = structMatch[1]

    #match 属性, 注释
    propMatch = /(\w*);\s*\/{2}([^x00-xff]*)\n/.match(line)
    propName = propMatch[1]
    propComment = propMatch[2]
end

如何使用sql语句修改数据库注释

 

--表及字段描述信息处理示例

--创建表
create table 表(a1 varchar(10),a2 char(2))

--为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

--为字段a1添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

--为字段a2添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表', N'column', N'a2'

--更新表中列a1的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1

--显示表的描述属性
SELECT   *
FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表', 'column', NULL)

--删除表中列a1的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1

--删除测试
drop table 表  

 

0
0
分享到:
评论

相关推荐

    基于Ruby+Java搜索引擎原理与实现

    在本文中,我们将围绕Ruby和Java这两种编程语言如何应用于搜索引擎的构建,以及搜索引擎的核心原理进行详尽的探讨。 一、搜索引擎概述 搜索引擎是互联网信息时代的关键工具,它通过爬取、索引和检索大量网页,为...

    此存储库包含Ruby、C、C++、Python和Java中问题的各种解决方案。_C++_Java_下载.zip

    标题和描述中提到的"此存储库包含Ruby、C、C++、Python和Java中问题的各种解决方案。_C++_Java_下载.zip"表明这是一个软件开发相关的资源集合,特别是针对五种编程语言:Ruby、C、C++、Python和Java。这个压缩包很...

    搜索引擎零距离——基于Ruby+Java搜索引擎原理与实现(前三章)

    本书涉及网络数据挖掘、搜索引擎原理、编译原理、数据库原理、正则表达式、软件工程、设计模式、Ruby语言、HTTP协议等计算机科学与技术的知识,适合搜索引擎开发人员作为参考,也适合有一定计算机基础的读者阅读,以...

    Ruby+for+Rails

    Rails的ORM(对象关系映射)层,允许开发者用Ruby对象操作数据库。每个模型类对应数据库表,实例方法对应SQL查询。例如,`Book.find_by(title: '某书名')`会查找标题为指定值的书籍。 9. ** erb模板** ERB...

    ruby生成java文件的工具

    标题中的“ruby生成java文件的工具”指的是使用Ruby编程语言编写的一种工具,它能够自动生成Java源代码。这种工具通常用于提高开发效率,特别是在需要大量重复性代码的情况下,如数据访问对象(DAO)、控制器...

    ruby javatoc++

    在描述中同样只给出了简短的 "ruby javatoc++",我们可以推测讨论的是使用Ruby脚本处理Java与C++之间的转换。标签重复了多次,强调了这个主题的核心关键词。 在这样的背景下,我们可以详细探讨以下几个相关的知识点...

    基于java的医院挂号系统答辩PPT.pptx

    系统环境配置包括 Tomcat8.0 + JDK1.8 + Windows 10 + Ruby + Node.js,开发语言包括 JAVA、CoffeeScript、SCSS,数据库使用 MySQL,开发环境包括 Eclipse、Grunt。 系统的优势在于方便、简单、舒适、实用在线,...

    windows关于qt的数据库操作封装类以及用例,c++代码

    功能: 自动与sqlite3数据库做连接 数据的插入,查询,删除、更新操作 数据库建立与表建立 支持关于where语句查询的自动拼接。...13. 支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

    巧用Ruby配备Oracle数据库.doc

    在Ruby编程语言中,连接和操作Oracle数据库通常需要利用Ruby的数据库接口模块Ruby/DBI以及Oracle调用接口(OCI8)库。由于没有纯Ruby的Oracle瘦驱动,开发人员必须借助于OCI8这个C语言编写的Ruby包装器,它实现了与...

    巧用ruby配备oracle数据库.pdf

    ### 巧用Ruby配备Oracle数据库的关键知识点 #### 一、Ruby与Oracle数据库的连接机制 在探讨如何利用Ruby与Oracle数据库高效协作之前,我们首先需要理解两种常见的Oracle数据库驱动程序:纯Java驱动程序(瘦驱动)...

    db2数据库入门教程(官方中文版)

    1.2用户帮助和技术支持.....................................................................................................14 1.3 DB2服务器................................................................

    巧用Ruby配备Oracle数据库

    在Ruby开发中,有时我们需要与Oracle数据库进行交互,特别是在企业级应用中,Oracle数据库因其强大的稳定性和可扩展性而被广泛使用。本文将探讨如何在Ruby on Rails框架中配置Oracle数据库,以及解决相关的验证和...

    Mongodb入门教程、示例+Spring Boot完整示例+聚合.docx

    在 Spring Boot 中,可以使用 Spring Data MongoDB 来操作 MongoDB 数据库。 聚合 MongoDB 中的聚合操作主要是用于对数据进行批量处理和聚合操作。MapReduce 是 MongoDB 中的一种聚合操作方式。Map 函数调用 emit...

    [Ruby on Rails][数据库] 03. [Windows] MySQL安装

    [Ruby_on_Rails][資料庫]_03._[Windows]_MySQL安裝

    Ruby on Rails安装及MySQL数据库配置指南

    在安装和配置 Ruby on Rails 和 MySQL 数据库的过程中,可能会遇到一些问题。例如,在创建 POSTS 应用时可能会遇到问题,创建数据后数据库中有数据,但是到 Listing posts 界面无法查看,总是报错。解决方法是下载 ...

    Ruby 连接数据库资源汇总

    本资源汇总将详细介绍如何使用Ruby进行数据库连接,尤其是通过Ruby/DBI库。 首先,我们来了解一下Ruby/DBI(Database Independent Interface)。Ruby/DBI 是一个符合 DBI 模式(数据库独立接口)的库,它提供了一个...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行安装: ```bash sudo apt-get install mysql-server ``` 在安装过程中,系统会提示输入MySQL...

    在RHEL上安裝設置ROR(nginx+passenger+ruby+rails+oracle+netzke)

    同时,要为Rails应用和数据库连接设置正确的文件权限和用户权限。 9. **配置**: 编写Rails应用的配置文件(如`database.yml`),指定Oracle数据库的连接参数。在Nginx的配置文件中,配置Passenger模块以处理Rails...

    ruby和drizzle数据库的连接

    在IT行业中,数据库连接是开发过程中的重要环节,特别是在使用编程语言如Ruby进行Web开发时。本篇文章将深入探讨如何使用Ruby与Drizzle数据库建立连接,以及相关的源码和工具应用。 Ruby是一种动态、面向对象的编程...

Global site tag (gtag.js) - Google Analytics