SQL Server数据库ntext字段内容追加 suny

今天在编写一个触发器的时候,遇到要更新一个表的ntext字段,开始使用常规的语句:
Update table set content = content + @info where id=@id
会报错:对数据类型而言运算符无效。运算符为 add,类型为 ntext。

后来经过百度谷歌得知,SQL Server专门提供了处理text,ntext,image字段的函数,他们是:TEXTPTR
TEXTVALID、READTEXT、UPDATETEXT、WRITETEXT

最后得到解决方法:

...

删除Oracle某数据库下的所有表 suny

今天使用imp导入dmp格式的数据库备份的时候,发现导入出错,提醒对象已经存在,才记起来要先删除所有表才能导入,如果数据库有几十上百个表的话,一个一个去删除真浪费时间。为了方便,就写了一条语句来查询所有表和生成批量删除的语句:

select 'drop table '||table_name||';' as sqlscript from user_tables;

SQLSCRIPT
--------------------------------------------
drop table LO_CASEINFO;
drop table LO_HARMONIZECASE;
drop table LO_LAWCHECK;
drop table LO_LEGISLATIONITEM;
drop table LO_TRAINBATCH;
drop table OA_IMPRESS;
drop table OA_SYSGROUP;

...

解决webLogic无法使用jasperreports生成报表的问题 cloud

Linux下webLogic无法使用jasperreports(iReport)生成报表的问题解决方法

今天在Linux下的webLogic部署一个项目后,发现报表无法导出了(但是在Windows开发环境下正常),后台报错如下:

java.lang.InternalError: Can´t connect to X11 window server using ´:0.0´ as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay()V(X11GraphicsEnvironment.java:???)
        at sun.awt.X11GraphicsEnvironment.<clinit>()V(X11GraphicsEnvironment.java:134)
        at jrockit.vm.Classes.forName0(Ljava.lang.String;ZI)I(Unknown Source)
        at jrockit.vm.Classes.forName(Ljava.lang.String;ZLjava.lang.ClassLoader;)Ljava.lang.Class;(Unknown Source)
        at java.lang.Class.forName(Ljava.lang.String;I)Ljava.lang.Class;(Unknown Source)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()Ljava.awt.GraphicsEnvironment;(GraphicsEnvironment.java:62)
        at net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv()V(JRGraphEnvInitializer.java:58)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(Lnet.sf.jasperreports.engine.JasperReport;Lnet.sf.jasperreports.engine.fill.JREvaluator;Lnet.sf.jasperreports.engine.fill.JRBaseFiller;)V(JRBaseFiller.java:307)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(Lnet.sf.jasperreports.engine.JasperReport;Lnet.sf.jasperreports.engine.fill.JREvaluator;Lnet.sf.jasperreports.engine.fill.JRBaseFiller;)V(JRVerticalFiller.java:92)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(Lnet.sf.jasperreports.engine.JasperReport;)V(JRVerticalFiller.java:74)
        at net.sf.jasperreports.engine.fill.JRFiller.createFiller(Lnet.sf.jasperreports.engine.JasperReport;)Lnet.sf.jasperreports.engine.fill.JRBaseFiller;(JRFiller.java:147)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(Lnet.sf.jasperreports.engine.JasperReport;Ljava.util.Map;Lnet.sf.jasperreports.engine.JRDataSource;)Lnet.sf.jasperreports.engine.JasperPrint;(JRFiller.java:83)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(Lnet.sf.jasperreports.engine.JasperReport;Ljava.util.Map;Lnet.sf.jasperreports.engine.JRDataSource;)Lnet.sf.jasperreports.engine.JasperPrint;(JasperFillManager.java:601)
 ...

经过左问Baidu,右问Google,加上验证得到Debug方法如下:

在startWebLogic.sh中加一行:JAVA_OPTIONS = -Djava.awt.headless=true
如果已有JAVA_OPTIONS配置行,则可以追加
-Djava.awt.headless=true

重启webLogic,问题解决!

PLSQL Developer + Oracle客户端简易安装方法 cloudy

之前一直都是用eclipse自带的Data Source Explorer访问Oracle数据库,可是只能简单地查看,而且很多字段不兼容。
今天开始使用PLSQL Developer连接远程Oracle数据库的时候,提示我没有安装Oracle客户端,才知道PLSQL Developer不是独立的软件,是要基于Oracle客户端运行的。

下面就介绍一下没有安装Oracle数据库的情况下,单独安装一个客户端。

1、到Oracle官方网站下载一个客户端:http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html

...

Struts2标签和EL表达式混合使用会导致乱码 suny

今晚在配置Struts2环境的时候,遇见了中文乱码啦。配置了struts.i18n.encoding和SetCharacterEncodingFilter还是不行,最后发现如下规律:

Struts2标签和EL表达式混合使用会导致乱码:

如图所示,如果s2标签的值用el表达式代替的话,会导致中文乱码。

中文乱码:<s:param name="el">${c.cname}</s:param>,但是如果${c.cname}直接在页面上显示出来的话,是不会乱码的!
中文正常:<s:param name="cname"><s:property value="cname"/></s:param>

注意查看浏览器地址栏,虽然值一样,但是编码后都不同了:

javawind.net

   xhtml代码
  1. <%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%> 
  2. <%@ taglib prefix="s" uri="/struts-tags" %> 
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4. <html> 
  5. <head> 
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
  7. <title>Insert title here</title> 
  8. </head> 
  9. <body> 
  10.  
  11. <s:iterator id="c" value="category"> 
  12.     <s:url id="url" action="index"> 
  13.         <s:param name="cid">${c.cid}</s:param> 
  14.         <s:param name="el">${c.cname}</s:param> 
  15.         <s:param name="cname"><s:property value="cname"/></s:param> 
  16.     </s:url> 
  17.     <s:a href="%{url}">${c.cid}.${c.cname}.<s:property value="cname"/></s:a> 
  18. </s:iterator> 
  19.  
  20. <br/><br/> 
  21. you chose:  
  22. cid=${param.cid}<br/> 
  23. el=${param.el}<br/> 
  24. cname=${param.cname}<br/> 
  25. </body> 
  26. </html> 

Oracle 分页和排序问题探讨 cloud

1、在ORACLE中,rownum是一个伪列,对于这个列,只能使用"<"或者"<="这两个操作符
2、它一定是从1开始的,不能跨过1;
3、不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录。执行总是显示:未选定行。

如果要使用  >,>=,=,Between...and 操作符,可以使用子查询把rownum转为实际列:
select namef from (select rownum r,namef from tablename)t where r > 10;
select namef from (select rownum r,namef from tablename)t where r between 10 and 20;

Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。
SQL> select rownum ,id,name from student order by name;
     ROWNUM ID      NAME
---------- ------ ---------------------------------------------------
          3 200003 李三
          2 200002 王二
          1 200001 张一
          4 200004 赵四
可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询
SQL> select rownum,id,name from (select * from student order by name);
     ROWNUM ID      NAME
---------- ------ ---------------------------------------------------
          1 200003 李三
          2 200002 王二
          3 200001 张一
          4 200004 赵四
这样就成了按name排序,并且用rownum标出正确序号。

Oracle 异常: ORA-12541: TNS:no listener;无监ting器 cloud

Oracle Io异常: The Network Adapter could not establish the connection

今天刚上班,启动项目时总是报(Io异常: The Network Adapter could not establish the connection),昨天还好好的呢,今天怎么就不行了?使用 telnet 192.168.8.201 1521测试连不通,还以为是防火墙搞鬼;而跑到服务器上面关闭服务器防火墙还是不行,并且直接telnet 127.0.0.1 1521还是不通。到此可以确定是oracle的服务异常了。

解决方法
1、首先打开oracle配置和移植工具 --> Net manager --> 本地   --> 监听程序 -- > listener --> (TCP/IP协议的)网络地址 ---> 把主机那一项改为"localhost";然后点击:本地-->服务命名-->(TCP/IP协议的)网络地址 ---> 把主机名那一项改为"localhost"。

2、点击"命令"菜单-->测试服务,却显示ORA-12541: TNS:no listener,如图:
javawind.net

3、查看和启动监Ting器:
开始-->运行-->lsnrctl

4、通过查看监Ting器状态给出解决办法
lsnrctl>status
正在连接到 ***
TNS-12541: TNS:无监Ting器
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监Ting器
   32-bit Windows Error: 2: No such file or directrory
正在连接到 ***
TNS-12541: TNS:无监Ting器
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监Ting器
   32-bit Windows Error: 61: Unknown error

5、启动监Ting器
LSNRCTL> start
启动tnslsnr:请稍候...

6、重试第2步骤,测试连接成功。

Java将CST的时间字符串转换成需要的日期格式字符串 cloud

下列代码可以实现把Java的CST格式的时间字符串转为为Date对象和所需要的日期时间格式!

String dateStr = "Wed Sep 16 11:26:23 CST 2009"; 
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);

//java.util.Date对象
Date date = (Date) sdf.parse(dateStr);

//2009-09-16
String formatStr = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(formatStr);

//2009-09-16 11:26:23
String formatStr2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println(formatStr2);

...

Windows2003 IIS6整合PHP5.3.0(FastCGI) suny

最近要帮朋友修改一些php程序,而自己一直从事java/jsp开发工作,虽然早前配置过几次php环境,毕竟都是过去了。

今晚按照以往的经验去安装php5.3.0,结果折腾了一个小时才解决!

PHP For Windows: http://windows.php.net/download/

...

把SQL2005的表数据导出到Excel文件当中 suny

用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件
  [-m 最大错误数]             [-f 格式化文件]         [-e 错误文件]
  [-F 首行]                   [-L 末行]             [-b 批大小]
  [-n 本机类型]               [-c 字符类型]         [-w 宽字符类型]
  [-N 将非文本保持为本机类型] [-V 文件格式版本]     [-q 带引号的标识符]
  [-C 代码页说明符]           [-t 字段终止符]       [-r 行终止符]
  [-i 输入文件]               [-o 输出文件]         [-a 数据包大小]
  [-S 服务器名称]             [-U 用户名]           [-P 密码]
  [-T 可信连接]               [-v 版本]             [-R 允许使用区域设置]
  [-k 保留空值]               [-E 保留标识值]
  [-h"加载提示"]              [-x 生成 xml 格式化文件]

实例:

   sql代码
  1. --开启xp_cmdshell  
  2. EXEC sp_configure ´show advanced options´, 1  
  3. RECONFIGURE  
  4. EXEC sp_configure ´xp_cmdshell´, 1  
  5. RECONFIGURE  
  6.  
  7. --执行导出  
  8. EXEC master..xp_cmdshell ´bcp pcoa.dbo.OA_AddressList out d:\temp.xls -c -q -S "127.0.0.1" -U"sa" -P"sa"´  
  9.  
  10. --关闭xp_cmdshell  
  11. EXEC sp_configure ´show advanced options´, 1  
  12. RECONFIGURE  
  13. EXEC sp_configure ´xp_cmdshell´, 0  
  14. RECONFIGURE 

其中:pcoa.dbo.OA_AddressList pcoa是指数据库名字,OA_AddressList是需要导出的表名字;

后面的 127.0.0.1  sa  sa 分别指数据库地址和登录帐号和密码。

...

Total:74123456788 Pages