Sunday, March 18, 2007

常见JDBC连接字符串

1.AccessClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn = DriverManager.getConnection( "dbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\data.mdb", sUsr, sPwd);

2. MySQL (http://www.mysql.com/) mm.mysql-2.0.2-bin.jar
Class.forName("org.gjt.mm.mysql.Driver");
cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );
或:Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydata?user=root&password=root");

3. Microsoft SQLServer (http://jtds.sourceforge.net/)
Class.forName("net.sourceforge.jtds.jdbc.Driver");
cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );

4. Microsoft SQLServer (http://www.microsoft.com/)
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master", sUsr, sPwd );

5. oracle (http://www.oracle.com/ip/deploy/database/oracle9i/) classes12.zip
Class.forName("oracle.jdbc.driver.OracleDriver");
cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd );

6. Sybase (http://jtds.sourceforge.net/) jconn2.jar
Class.forName("com.sybase.jdbc2.jdbc.SybDriver");
cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP:2638", sUsr, sPwd ); // (Default-Username/Password: "dba"/"sql")

7. ODBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd);

8.DB2Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
String url="jdbc:db2://192.9.200.108:6789/SAMPLE"
cn = DriverManager.getConnection( url, sUsr, sPwd );

9. PostgreSQL (http://www.de.postgresql.org/) pgjdbc2.jar
Class.forName("org.postgresql.Driver");
cn = DriverManager.getConnection( "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd );

Labels:

Thursday, March 15, 2007

n进制整数乘法口诀表 生成器 javaScript实现:
//value:n进制数值(char 0..f)
//numbericSystem:进制(char 0..f)
//return:十进制值
function toNum(value,numbericSystem){
//n进制转换十进制

}
//value:十进制数(Integer)
//numbericSystem:进制(char 0..f)
//return:n进制值(String)
function toSys(value,numbericSystem){
//十进制转换n进制
}
//multiplicand:乘数(char)
//multiplicator:被乘数(char)
//numbericSystem:进制(char)
function cheng(multiplicand,multiplicator,numbericSystem:char){
var a=toNum(multiplicand,numbericSystem);
var b=toNum(multiplicator,numbericSystem);
return toSys(a*b,numbericSystem);
}

Labels:

Tuesday, December 19, 2006

JavaScript的三子棋游戏


Labels:

Java乱码问题一方案


问题介绍



在读取数据库或者JSP时可能出现乱码,很难猜测乱码的编码格式和内容。
问题的根源往往是数据本身是用一种字符集或者编码方案,在读出时使用了另外一种字符集或编码方案,因此出现了乱码。
如果我们先把得到的乱码按照读出的方案解码,先得到原本的数据内容,
再对得到的内容按照其本身的编码方案解码,即可得到正确的值。
一般情况下产生JAVA乱码的因由是由于:
IE默认字符集为GB2312,Windows默认为GBK,Java则默认为Unicode,所以如果不通过一定的转换,直接在GB2312字符集上显示从GBK或Unicode得到的页面将是一片乱码。
详细请参阅:树叶&&海的BLOG


解决思路


此程序的思路就是遍历所有的编码格式,对乱码进行解码再编码,来取得最初的符合逻辑的汉字或者其他文字


使用方法


把乱码贴到这个程序中点解码,程序会用所有选中的字符集对乱码解码,再重新编码。
最终得到一些内容,其中应该有符合逻辑的内容就是了,并显示解开乱码的方案。


范例



例如:偶用第三方组件读数据库输出中文部分全是乱码。
乱码的第一行是“XXXX”它应该对应汉字"良乡",偶想复原它,但不知道如何复原。
把它贴到程序中,点‘解码’发现其中一行输出:“以ISO8859_1 解码再以 GBK编码得到:良乡”,“良乡”是正确的内容,
说明数据库中数据是GBK的,而组件用ISO8859读取了内容,当然就显示了乱码。所以通过下边的代码对取得的乱码进行处理能够的到正确的内容。

String str=new String((new String("XXXX")).getBytes("ISO8859_1"),"GBK")

其中XXXX是乱码本身,str就是乱码的正确内容。
总而言之贴一些乱码进来点“解码”也许就会发现你想要的内容,同样输入正常的内容点"解码"也能看到有可能出现的乱码样式。


Applet:


请先随意输入几个字符或者汉字点解码;(注意:IE需要先点击APPLET一下使它激活)



可执行文件下载

系统环境:JRE5.0

Labels:

Monday, October 09, 2006

我的JTree包装autoTree



2006-9-30完成了JTree的包装工作.



工作需要,我需要一个方便拖动的JAVA树控件;



于是网上寻找:找到了Instrumenter,结果发现虽然它的功能貌似全面,但是不稳定还有很多BUG.然后找到了TreeWrapper,挺漂亮,但是功能似乎并不全面;代码算是比较清晰拉.



没办法只有自己着手写一个了.AutoTree花费2周时间,我对java并不是很熟悉.dnd,transfer都是头一次用,对transfer的理解到现在还是不清晰.不过一点点做么,再加上参考些网上的例程.最困难的时候是主体功能出来了但还存在不少BUG和缺陷的那阵,实在不想做了,于是去看了火影忍者休息休息ZZZzzzz.作程序压力还是很大的.特别是写一些初次接触的代码,可能一天内只要有两三个电话.或者一个杂事就会让你什么也写不下去了.一个电话之后原先的思路就可以RELOAD了.



AutoTree包含dnd功能,和剪切删除复制粘贴快捷键;目前还缺少UNDO,REDO也就是前进后退功能;



另外附带一个CellRender的例子.可以使你每个DefaultMutableTreeNode拥有各自不同的图标;



运行环境:JRE5.0;



这里是演示:请尝试托拽功能,Applet下存在闪烁.剪切复制粘贴的快捷键也无法使用.但如果下载作为应用程序运行这些问题就都不存在了.



对不起,您的浏览器不支持JAVA小程序,请先安装JRE5.0

这里是下载:down! 下载后双击即可运行.



使用说明:在您的代码中加入new AutoTree(youTree);这个树就具备托拽以及复制粘贴的能力了;



需要注意的事情:



1.对树进行包装之前,必须把树的renderer,model什么的都设置好.否则可能失效;



2.树节点必须是DefaultMutableTreeNode继承的,因为DefaultMutableTreeNode完全适应我的需求,我希望复用它;



3.TreeModel必须是DefaultTreeModel.这也许是美中不足吧,也许你有自己的TreeModel如果它不是继承自DefaultTreeModel那么还是放弃使用这个AutoTree吧.



4.树的根节点是不显示的,也就是对你的JTree调用了setRootVisible(false).至于为什么,原因很多.JTree是单根的,所以当对根节点进行操作时候必须另外处理(比如给一个空树拖入个根?在根上按delete了之类).我懒得写也觉得没必要.就像xml是单根一样,根节点必然是<xml>觉得这样也没给大家带来多少不便.所以AutoTree的根节点就当它是xml了,隐了.



5.新发现Applet版本的会闪烁.可能里边在重绘时sleep了50,或许也需要优化一下,Applet仅仅是个演示.而且它的应用在国内好像并不是很广泛,JFC情况下闪烁就感觉不到,所以无关紧要了.

Labels:

部署DOTNET程序


这里所说的部署是也许你的程序是用DOTNET开发的,但是你在给用户安装的时候需要检测它的系统环境是否装有DOTNET,是否IE6以上版本等等.后边的例程可以用来用来检测,并运行对应的安装程序.



体验了DOT NET2.0后,觉得有很多改进,开发的感受很不错。于是迫不及待把正在开发的一个小项目拿了上来。升迁转换非常的顺利甚至于最后都选择放弃备份,因为我知道不会出什么错的,即使出错他也不会改我的源码所以放心大胆的转换了7个子工程。



DOTNET2对于我来说最大的感激是在持久化方面做了很多工作。以前1.0的时候很多东西标记为可持久化的,但是由于其下某个子项没有这样的标记,而导致整个对象不能正常地持久化。DOTNET2下这个问题基本上没有可,该可以持久化的都可以,很爽。加入了一些能够布局的PANEL让我们对JAVA向往又少了一些。设计器也做得很漂亮,项目属性更加清晰。加上超强的STDIO2005,开发速度上可以创造一个神话。这是我要说DOTNET2一个好的方面。





接下来是它不好的地方。在界面的美化方面,虽说本身界面比普通的要漂亮些但是缺乏个性化的方案;其次是部署,先安装24M的可在发行包,普通的P4竟然需要装半个小时。而且需要有不少的安装要求。



系统需求:



一.操作系统支持:


Windows 2000 Service Pack 3;
Windows 98;
Windows 98 Second Edition;
Windows ME;
Windows Server 2003;
Windows XP Service Pack 2



二.软件支持:


o Windows Installer 3.0 (除 Windows 98/ME, 它们仅仅需要 Windows Installer 2.0 或更高). Windows Installer 3.1 或者更高是被推荐的.
o IE 5.01 或者更高;






我们的项目是发布地方单位的数据库应用程序。在国内的这些单位用机是能跑起来就行的,操作系统五花八门,什么补丁阿升级的根本无人问津。使用者的计算机水平也是令人发指。不过正因为他们的存在搞开发的可能才有市场(其实如果没有他们搞开发的就可以去搞科研了)。要说的是部署“太艰难了!”一台没打补丁的PIII win2000,打SP3补丁,安装WIN INSTALLER3,安装DOTNET2总共有可能会花去2个小时,还不包括去独立下载SP3,WIN INSTALLER3的安装包。我们的应用程序才不到1M,怎么办?谁能有一个好一点的解决方案阿让人有些怀念JAVA那些翻来覆去的PACKAGE了。



好了下边给出2个在WINDOWS环境下部署DOTNET的NATIVE源码是用DELPHI写的.注意我只是在XPSP2和2000下简单的测试了可行性,并没有在所有的WINDOWS系统下测试.



部署DOTNET1.0 DELPHI源码



部署DOTNET2.0 DELPHI源码

Labels: