在技术网站,特别是数据库相关的网站或论坛上,经常会有许多SQL语句用于交流和共享,但由于一些SQL语句比较复杂,难以阅读,导致大家交流的不便,同时一些事先格式化好的SQL语句贴上网站后无法保持原有格式,导致用户的阅读困难,影响交流效果。
如果你的网站能够提供自动格式化用户递交的SQL语句的功能,那么这些问题就迎刃而解了,从而提高网站的可用性。但基于SQL的复杂性,要自己编程实现这个功能费时又费力,而且不一定能取得满意的效果。
其实,网上已经有现成的Web Service提供这个服务,你只要传给它需要格式化的SQL语句,这个Web Service就会把格式化好的SQL语句返回给你,很方便,而且根据你的要求,它会返回适合在各种编程语言下使用的SQL语句,其中就包含能够嵌在网页中使用的html格式的SQL语句。
这个Web Service由 http://www.gudusoft.com 提供,可以免费使用,在该网站上可以下载现成的程序,稍作修改就能在自己的网站上使用。
下面我们来看一下如何使用该Web Service。
该Web Service提供的方法
1. public string beautifySql(string licensekey, string dbvendor, string outputfmt, string sql)
该函数提供格式化SQL的功能,其中
licensekey:使用该Web Service需要的license key,你可以在该网站上免费申请获得。
dbvendor: 你所递交的SQL语句所属的数据库,该Web Service目前支持Oracle,MSSQL,MySQL和Access
outputfmt: 返回给你何种格式的SQL语句,可以是sql, java,C#,php,vb,html等格式。
sql:需要格式化的SQL语句。
2. public void SetFormatterOption(string fmtName, string fmtValue)
该函数可以设置各种格式化的参数,例如关键字,函数名的大小写、关键字的左右对齐方式、如何换行等。
fmtName:格式化参数名称。
fmtValue: 格式化参数值。
详细的参数说明可以参考该网站上下载的例程。
为了方便说明如何使用该Web Service,我们以一个C#的命令行程序为讲解用的例子,源代码如下:
using System;
class MyApp
{
public static void Main()
{
// 创建一个本地的Web Service代理对象,通过该对象来访问远程的Web Service。
SQLFormatterWebService sqlformatter = new SQLFormatterWebService();
// 设置需要格式化的SQL语句
string sql = "select empno,empname from emp where emp= k9900 and sal > 1000";
Console.WriteLine("inputsql");
Console.WriteLine(sql);
// 调用格式化函数,注意用申请到的正式license key取代第一个参数
string sqlresult = sqlformatter.beautifySql("licensekey","mssql","sql",sql);
Console.WriteLine("");
Console.WriteLine("Formatted SQL");
// 输出结果
Console.WriteLine(sqlresult);
}
}
保存该文件为myapp.cs
在dos命令行下生成可执行的程序 myapp.exe
csc myapp.cs SQLFormatterWebService.cs
SQLFormatterWebService.cs可以在下载的例程中找到,你也可以通过下面的命令获得。
wsdl.exe http://www.gudusoft.com/SQLFormatterWebService.wsdl
运行一下,效果不错吧,就这么几行代码,为你添加强大的SQL格式化功能。
在下载的例程中,还有一个更强大的ASP.NET程序,是一个功能强大的SQL格式化工具,
在你自己的网站上部署该工具时,首先用
csc /t:library c:\SQLFormatterWebService.cs
生成一个本地的代理库:SQLFormatterWebService.dll,然后把该代理库放在你的ASP.NET应用的bin目录下。
然后就可以直接使用该例程了,效果和 http://www.gudusoft.com/sqlformatter_cn.aspx 一样。