一个比较实用的数据库查看管理工具??????个人从业四年多,和数据库打交道不计其数,特别是在之前做企业级应
一个比较实用的数据库查看管理工具
??????个人从业四年多,和数据库打交道不计其数,特别是在之前做企业级应用系统的时候,整天就是在业务、数据和程序之间穿梭,那个数据查的呀,平均每天有40%左右的时间都在手工的写sql进行数据的查询。刚开始,通过数据库自带的命令行工具查数据似乎蛮好的,至少提供的功能非常的多,通过命令可以获得数据库相关的所有信息,但是开发人员经常使用的功能还是写sql进行数据的查询、更新、删除、插入,特别是在企业级应用程序的开发,sql相对比较复杂,而且数量会很大,如果考虑提高开发效率,一个可视化的数据库client工具就非常有必要了。当然了,一些比较高傲的大虾们可能会对这类工具嗤之以鼻,但一个优秀的数据库client工具能够提高开发效率的事实却不能被抹杀,所以我还是建议开发人员经常使用这类工具。
????? ?搞了这么几年的开发,使用了不少数据库client工具,有非常专业的,有商业的,也有免费开源的。我不能说哪个工具好,哪个不好,因为每个人的使用习惯和需求不一样,今天给大家介绍一款自认为比较使用的工具:COOLSQL。
??????? COOLSQL是一款开源的数据库查看管理工具。该工具以数据查询、分析为主,同时也提供了一定的管理功能,并且COOLSQL的可操作性比较好,这也是我选择这款工具的主要原因。下面我就给大家show一下这款工具的功能,以及特点。
?????? COOLSQL的界面以视图为单位(类似于eclipse的视图概念),由书签视图、sql编辑视图、执行结果视图、日志视图组成,我也以视图为单位进行介绍COOLSQL的功能:
?????? 1、书签视图:在COOLSQL中,书签可以理解为一个Database,实际上是一个Database的映射。每个书签连接上数据库后,将会以树状结构展示数据库的实体结构。如图Figure1所示:
![一个比较适用的数据库查看管理工具]()

?
???????????????????????????????????????????????????????? Figure1
?
Database树状结构中不同类型的节点提供了丰富的功能。最典型的就是Table类型节点提供了我们常用的数据查看功能菜单。
????? 2、SQL编辑视图:该视图的功能就十分明显了,主要进行sql编辑以及查看的。该sql编辑器提供了很多其他同类工具所没有的功能。除了最基本的复制、粘贴、撤销、重做、查找等功能外,SQL关键字高亮也是比较基本的功能。其他一些比较好的功能我也总结了一下:
提供列选择(按下alt键)。选中当前光标位置的sql(默认根据";"来识别),并提供了快捷键(F3选中sql,F4执行选中)。提供行号显示。选中文本的大小写调整。支持行/块注释。支持SQL的格式化。支持脚本的执行。支持SQL的非自动提交(NON-AUTOCOMMIT)不同类型关键字的高亮显示(命令、系统函数、文本值、数值、注释)。提供数据信息的提示(alt + /)。数据库实体对象的定位跟踪(按下ctrl键,移动鼠标),能直接定位到数据库结构树中的节点。提供历史SQL的查看。提供SQL收藏功能,方便常用SQL的快速获取、执行。直接对查询类型SQL的数据导出。
?
???? 3、结果展示视图:该视图主要用于显示SQL命令的执行结果(包括查询、更新、删除、插入),该视图也提供了一些比较有特色的功能:
查询结果以分页形式显示(速度非常快,主要限制了所取数据的上限),同时也提供了全部查看功能。
sql执行时间、影响的数据条数(修改类型sql执行结果)的显示。查询类型的展示结果,如果只是针对一个实体对象的数据查看,用户将可以直接在table组件上进行编辑值。查询类型结果是否可编辑可以通过该视图下左下角的图标颜色来判定。对于数据的直接编辑,该视图提供了非常友好的操作界面以及比较安全的信息提示。另外也提供了另外一种可视化的UPDATE构造(个人认为该功能不是很有必要)。
?
此外还有一个功能是十分实用,并且功能也是十分强大的,这里要强烈推荐一下:数据库实体数据的可视化添加。该功能将在一个新窗口中体现,直接在结果集视图中可以触发该功能,或者在书签视图的数据库结构树中直接对Table/view节点触发该功能。其特点如下:
支持表格数据的复制,以及智能粘贴(可以自己体会一下,个人觉得很不错)。支持字段数据的合法性检查(会以高亮显示)。支持字段值的连续拖拉(有点像EXCEL,鼠标放在选中表格的右下角,就会变成十字形状,然后拖拉),这一功能为开发、测试的同学们造数据提供了很大的便利性。支持SQL的预览、导出。支持表格值的批量设置。
4、日志视图:提供了日志的显示,记录包括SQL执行结果、非法操作的错误信息。并且日志信息按等级显示(级别类似于Log4j),用户自己可以定制日志的显示级别。
?
?
????? 对于CoolSQL提供的视图,我就介绍完了。但我还想总结一下CoolSQL的其他特性:
支持插件扩展,sqlscript就是它的一个插件。CoolSQL能运行在提供了JAVA运行环境的操作系统平台之上。支持当前所有的主流数据库。提供了多种外观,当然如果想要性能好一点,建议使用Metal(金属质感)外观。
?
????? 我只是从大的方面说了它的一些特点,还有很多细节上的东西也做得十分的好。希望对开发和测试的同学们有点帮助。
对了,差点忘了CoolSQL的下载地址了:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://coolsql.sourceforge.net/
?
?
1 楼 dreamit 2008-08-26 不如用EMS SQL admin 2 楼 hellodesigner 2008-08-27 顺便把各数据库的jdbc驱动下载地址贴出来吧:
Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: jTDS
Home Page: http://jtds.sourceforge.net/
JDBC Ver: 1.0.2
Download: http://sourceforge.net/project/showfiles.php?group_id=33291
Conn Code:
Class.forName("net.sourceforge.jtds.jdbc.Driver ");
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password");
or
Connection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password");
Microsoft SQL Server 2000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: SQL Server 2000 Driver for JDBC
Home Page: http://www.microsoft.com/china/sql/
JDBC Ver: (SQL Server 2000 Driver for JDBC)
Download: http://www.microsoft.com/china/sql/downloads/2000/jdbc.asp
Conn Code:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://server1:1433","user","password");
Oracle
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: Connector/J
Home Page: http://www.oracle.com/technology/software/tech/java/
JDBC Ver: (based on Oracle)
Download: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/
Conn Code:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:databse","user","password");
MySQL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: Connector/J
Home Page: http://dev.mysql.com/
JDBC Ver: 3.1
Download: http://dev.mysql.com/downloads/
Conn Code:
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
Sybase
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: jConnect
Home Page: http://www.sybase.com.cn/cn/content/SDN/
JDBC Ver: 4.5/5.5
Download: http://www.sybase.com/detail_list?id=13&morenavId=8668&multi=true&SR=Y&show=1265
Conn Code:
Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance();
DriverManager.getConnection("jdbc:sybase:Tds:IP:2638?ServiceName="+database,"user","password");
Postgresql
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: PostgreSQL JDBC
Home Page: http://jdbc.postgresql.org/
JDBC Ver: 8.0 Build 310
Download: http://jdbc.postgresql.org/download.html
Conn Code:
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://host:port/database","user","password");
IBM Informix
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: Informix JDBC Driver (IBM Informix JDBC V3.0)
Home Page: http://www-306.ibm.com/software/data/informix/
JDBC Ver: 3.0.JC1
Download: http://www14.software.ibm.com/webapp/download/search.jsp?go=y&rs=ifxjdbc
Conn Code:
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
Connection conn= DriverManager.getConnection("jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;user=testuser;password=testpassword";);
IBM DB2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JDBC Name: DB2 JDBC Universal Driver
Home Page: http://www-306.ibm.com/software/data/db2/udb/
JDBC Ver:
Download: http://www-128.ibm.com/developerworks/db2/downloads/jcc/
Conn Code:
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
Connection conn= DriverManager.getConnection("jdbc:db2://localhost:5000/sample",user,password);
IBM AS400主机在用的JDBC语法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有装V4R4以上版本的Client Access Express
可以在C:"Program Files"IBM"Client Access"jt400"lib
找到 driver 档案 jt400.zip,并更改扩展名成为 jt400.jar
Conn Code:
java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());
Class.forName("com.ibm.as400.access.AS400JDBCConnection");
con = DriverManager.getConnection("jdbc:as400://IP","user","password");
Db Name: Ms Access or Ms Foxpro
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Conn Code:
step 1: 配置 odbc (例如:myDb)
step 2:
String dbURL = "jdbc:odbc:myDb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(dbURL);
or
String dbURL = "jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=dabaseName.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(dbURL); 3 楼 hellodesigner 2008-08-27 对于大部分的应用场景,功能不需要太多,方便、实用才是最重要的。 4 楼 ivy1107 2009-08-18 Hi hellodesigner,
为什么我在连接数据库A(大概有3,40张表)的时候总是出现out of memory错误,而我建立了一个测试数据库B(只有几张表)却没有问题?可以看到类似于你文章中截图的画面。是不是因为数据库A的表太多了,有没有解决办法?
另外,我觉得这个工具的最大优点是可以同时连接多种数据库,对做稍微底层开发工作,需要支持多种数据库产品的应用时,优点更为明显。
谢谢 5 楼 hellodesigner 2009-09-06 ivy1107 写道Hi hellodesigner,
为什么我在连接数据库A(概有3,40张表)的时候总是出现out of memory错误,而我建立了一个测试数据库B(只有几张表)却没有问题?可以看到类似于你文章中截图的画面。是不是因为数据库A的表太多了,有没有解决办法?
另外,我觉得这个工具的最大优点是可以同时连接多种数据库,对做稍微底层开发工作,需要支持多种数据库产品的应用时,优点更为明显。
谢谢
我曾经测试过拥有1500张表的db2数据库,没有出现out of memory,请问一下你使用的数据库类型是什么。另外在执行什么操作的时候,出现了out of memory?