设为首页 收藏本站
查看: 858|回复: 0

[经验分享] 开源SQL翻译器CowNewSQL的使用方法

[复制链接]

尚未签到

发表于 2018-10-17 12:53:58 | 显示全部楼层 |阅读模式
  CowNewSQL 支持直接调用翻译器和JDBC驱动两种使用方式。

  • 直接调用翻译器
  首先到CowNewSQL 的网站上下载最新的CowNewSQL,下载完成后解压安装包,将
  retrotranslator-runtime-1.0.7.jar、antlr.jar、commons-lang-2.3.jar以及cownewsql.jar加入CLASSPATH ,调用类com.cownew.cownewsql.imsql.common.DialectManager的createTranslator方法创建一个翻译器,然后调用翻译器的translateSQL方法来将标准SQL语句翻译成特定数据库平台的SQL语句。
  DialectManager的createTranslator方法接受一个字符串类型的参数来指定目标数据库的类型,目前接受四个值”MSSQLServer”、”MYSQL”、“DB2”和”Oracle”。
  由于被翻译的SQL 语句有可能是多句,所以翻译器的translateSQL 方法返回值为字符串数组,每个数据元素表示一个翻译后的语句。
  举例:
  import com.cownew.cownewsql.imsql.ISQLTranslator;
  import com.cownew.cownewsql.imsql.common.DataBaseTypeEnum;
  import com.cownew.cownewsql.imsql.common.DialectManager;
  import com.cownew.cownewsql.imsql.common.TranslateException;

  public>  {
  public static void main(String[] args) throws TranslateException
  {
  ISQLTranslator tx = DialectManager.createTranslator(“MYSQL”);
  String[] venderSQLs;
  venderSQLs = tx.translateSQL("select top 10 * from t");
  System.out.println("翻译后的SQL:" + venderSQLs[0]);
  }
  }
  运行结果:翻译后的SQL:SELECT * FROM t LIMIT 0, 10

  • JDBC驱动方式使用
  CowNewSQL提供了以JDBC驱动方式使用的支持(支持最新的JDBC4.0标准)。通过 这种方式用户无需修改系统的任何代码,只要修改原有的JDBC连接字符串就可以轻松的将CowNewSQL 融入系统,使用CowNewSQL 的JDBC 驱动后系统中所有的SQL 语句在送到数据库系统中执行前都将会自动进行翻译。
  CowNewSQL的JDBC驱动类为:
  com.cownew.cownewsql.imsql.jdbc.DBDriver
  连接字符串格式为:
  jdbc:cownewsql:目标数据库类型:目标数据库JDBC驱动类:原JDBC连接字符串
  使用方式举例:
  原有程序连接到Oracle数据库,使用的Oracle驱动类为:
  oracle.jdbc.driver.OracleDriver
  JDBC连接字符串为:
  jdbc:oracle:thin:@192.168.88.128:1521:XE
  我们只要将CowNewSQL的Jar包(包括cownewsql***.jar、antlr.jar、commons-lang**.jar、
  retrotranslator-runtime**.jar等)加入程序的ClassPath,然后修改使用的数据库驱动为:
  com.cownew.cownewsql.imsql.jdbc.DBDriver
  然后修改JDBC 连接字符串为:
  jdbc:cownewsql:oracle:oracle.jdbc.driver.OracleDriver:jdbc:oracle:thin:@192.168.88.128:1521:XE
  使用JDBC驱动方式不仅可以支持直接调用JDBC来进行数据库操作的系统,而且对于通过数据库连接池或者其他JDBC驱动包装方式访问数据库的方式都适合,这样我们无需修改任何代码就将CowNewSQL翻译器轻松的植入系统。
  end.


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-622827-1-1.html 上篇帖子: SQL按照日、周、月、年统计数据 下篇帖子: 遭遇:java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表