把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 分别指数据库地址和登录帐号和密码。

...

使用iBatis获取JDBC数据库链接对象,直接执行SQL suny

在日常开发当中,我们可能会遇到这种情况,想使用单独一条SQL更新某一个字段,如果没有配置详细的VO和sqlMap-xml映射,一般人第一反应就是使用JDBC直接操作。
以下的做法只是"偷懒的",不推荐时常或者全部使用这种做法!这种做法等于直接在代码中写sql,脱离了iBatis的框架,会导致代码可读性差和维护困难。

//sqlMapClient 为你的 sqlMapClient 对象,具体获取方法由当前代码决定

String updateSql = "UPDATE ARCHIVE SET groupId=´"+ groupId + "´ where id="+ id;
Connection conn = sqlMapClient.getDataSource().getConnection();
conn.setAutoCommit(true);

...

Tomcat5 ActiveXComponent("Word.Application"); 报错 cloudy

今天在维护一个项目的时候,突然碰到一个问题:
public Wordjdocb() {
        word = new ActiveXComponent("Word.Application");
        word.setProperty("Visible", new Variant(false));
        documents = word.getProperty("Documents").toDispatch();
        saveOnExit = false;
}
红色行先后报错:

java.lang.NoClassDefFoundError
 at com.gzxf.common.word.dao.Wordjdocb.<init>(Wordjdocb.java:35)
 at com.gzxf.common.word.dao.Up_visit_send.getUp_visit_send(Up_visit_send.java:65)
 at com.gzxf.common.word.dao.WordDao.getUp_visit_send(WordDao.java:230)
 .......
44 e.lentth39

java.lang.UnsatisfiedLinkError: no jacob in java.library.path
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1517)
 at java.lang.Runtime.loadLibrary0(Runtime.java:788)
 at java.lang.System.loadLibrary(System.java:834)
 at com.jacob.com.Dispatch.<clinit>(Dispatch.java)
 at com.gzxf.common.word.dao.Wordjdocb.<init>(Wordjdocb.java:35)
 at com.gzxf.common.word.dao.Up_visit_send.getUp_visit_send(Up_visit_send.java:65)
 .....
 at java.lang.Thread.run(Thread.java:534)
48 e.lentth39

...

Java ajax 中文乱码解决方案 rainy

好久不用ajax,今天需要用到,却因为提交的中文乱码问题郁闷了半天,特整理出来与大家分享!

ajax Js 客户端:
var data = "words="+encodeURI(encodeURI(_word));   //  注意,这里把需要提交的中文字符串进行两次encodeURI
xmlhttp.open("post",postAction, true);   
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(data);

ajax Java 服务器端:
String words= request.getParameter("words");
words= java.net.URLDecoder.decode(words, "UTF-8");

...

Tomcat5.x get提交的中文乱码问题 suny

本来解决 Tomcat 中文乱码很久了,但是今天重装了一下Tomcat,忘记配置了,结果用URL get方式传递的中文参数出现了乱码,这里就再提一下不用filter,直接修改Tomcat配置文件的解决方法:

Tomcat5+已经把get和post分开处理了,其设置编码方式也有所不同。
根据 http://tomcat.apache.org/tomcat-5.5-doc/config/http.html 得需要设置URIEncoding & useBodyEncodingForURI,否则默认编码方式为"ISO-8859-1"

这里以Tomcat 5.0 为例,其他版本的类似,修改  conf/server.xml :

...

String的substring和subSequence的区别 rainy

      今天截取字符串的时候,无意中发现了subSequence,并且不小心用上了,呵呵,发现同样能和substring一样截取,效果一模一样。我就好奇地翻看了一下源码:

public CharSequence subSequence(int beginIndex, int endIndex) {
          return this.substring(beginIndex, endIndex);
}

      根据JDK的文档,String.subSequence只是为了实现CharSequence接口上的同名方法而放在那里的,其行为与String.substring一样。

...

Java比较两个时间相差多少天,多少个月,多少年 cloudy

在项目开发当中,我们时常碰到要比较两个时间或者与当前时间相差多少天,多少个月,多少年的问题。

本人结合网上的一些例子,稍作修改,提供出下面示例,与网友们分享。

java代码
  1. package com.test;  
  2. import java.text.DateFormat;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6. /**  
  7.  * @description 日期比较天 月 年  
  8.  * @author www.javawind.net  
  9.  */ 
  10. public class DateTest {  
  11.     public static void main(String[] args) {  
  12.         String date = "2008-06-12";  
  13.           
  14.         DateTest.compareDate(date, null0);  
  15.         DateTest.compareDate(date, null1);  
  16.         DateTest.compareDate(date, null2);  
  17.           
  18.         date = "2006-06-03";          
  19.         DateTest.compareDate(date, null0);  
  20.         DateTest.compareDate(date, null1);  
  21.         DateTest.compareDate(date, null2);  
  22.         DateTest.compareDate(date, "2009-06-01"0);  
  23.         DateTest.compareDate(date, "2009-06-01"1);  
  24.         DateTest.compareDate(date, "2009-06-01"2);  
  25.     }  
  26.       
  27.     /**  
  28.      * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式  
  29.      * @param date2 被比较的时间  为空(null)则为当前时间  
  30.      * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年  
  31.      * @return  
  32.      */ 
  33.     public static int compareDate(String date1,String date2,int stype){  
  34.         int n = 0;  
  35.           
  36.         String[] u = {"天","月","年"};  
  37.         String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
  38.           
  39.         date2 = date2==null?DateTest.getCurrentDate():date2;  
  40.           
  41.         DateFormat df = new SimpleDateFormat(formatStyle);  
  42.         Calendar c1 = Calendar.getInstance();  
  43.         Calendar c2 = Calendar.getInstance();  
  44.         try {  
  45.             c1.setTime(df.parse(date1));  
  46.             c2.setTime(df.parse(date2));  
  47.         } catch (Exception e3) {  
  48.             System.out.println("wrong occured");  
  49.         }  
  50.         //List list = new ArrayList();  
  51.         while (!c1.after(c2)) {                     // 循环对比,直到相等,n 就是所要的结果  
  52.             //list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来  
  53.             n++;  
  54.             if(stype==1){  
  55.                 c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1  
  56.             }  
  57.             else{  
  58.                 c1.add(Calendar.DATE, 1);           // 比较天数,日期+1  
  59.             }  
  60.         }  
  61.           
  62.         n = n-1;  
  63.           
  64.         if(stype==2){  
  65.             n = (int)n/365;  
  66.         }     
  67.           
  68.         System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);        
  69.         return n;  
  70.     }  
  71.       
  72.     /**  
  73.      * 得到当前日期  
  74.      * @return  
  75.      */ 
  76.     public static String getCurrentDate() {  
  77.         Calendar c = Calendar.getInstance();  
  78.         Date date = c.getTime();  
  79.         SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");  
  80.         return simple.format(date);  
  81.     }  

运行结果:

...

SQL 存储过程使用CHARINDEX分隔逗号,间隔的数组 cloud

这里假设有 一串数组变量 "appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8"

当我们需要在存储过程中遍历这个数组的子项时,我们可以通过 CHARINDEX 或者结合Left,Right来分隔和遍历它

注意:由于字符串index的计算问题,下面定义变量的时候,需要在最后面增加一个逗号",",否则遍历的时候将缺少最后一个子项

...

SQL 存储过程中使用游标查询(遍历)某表格中的数据 cloud

我们在使用存储过程当中,有时在统计数据的时候,需要查询某表中的数据,并且得到指定字段的具体值,这时就需要用到游标查询来遍历表数据

示例:
这里有一个表(demo),字段结构和数据如下:

idf         namef                websitef
----------- -------------------- -------------------------------------------
1           javawind             http://www.javawind.net
2           blog                 http://blog.javawind.net
3           csdn                 http://www.csdn.net
4           sun                  http://www.sun.com

...

SQL中取DateTime数据类型中的日期和时间 cloudy

      我们知道SQL中表示日期和时间的数据类型为DateTime,数据格式如 '2009-04-13 11:00:27.857',日期和时间是结合在一起的,有时我们只想要日期不要时间,有时我们只要时间而不要日期。可以通过Convert()函数来达到我们的目的。

Convert()函数的功能是:将某种数据类型的表达式显式转换为另一种数据类型。
Convert()函数的格式是:Convert(Data_Type[(Length)], Expression [, Style])

Data_Type[(Length)]为转换后的数据类型,Length为长度,可选(转换为某些数据类型时不需要写);Expression为备转换的表达式,Style为日期时间样式。

以系统函数GetDate()为例,其输出为系统当前时间,在查询分析器中输入:
SELECT GetDate()    执行输出结果为:2009-04-13 11:00:27.857

只要日期不要时间,在查询分析器中输入:
SELECT CONVERT(CHAR(10),GetDate(),120)    执行后输出结果为:2009-04-13

只要时间不要日期,在查询分析器中输入:
SELECT CONVERT(CHAR(8),GetDate(),108)     执行后输出结果为:11:00:27

当在SQL查询表格数据或者where条件使用时 只需要把 GetDate() 改为字段名称即可!


Total:76123456788 Pages