Java && C#

要学得东西很多,但我们的时间却不是很多!
数据加载中……

2007年3月23日

点点滴滴

     N长时间没有来了.......
     忙中偷闲,整理点代码。
     /** 
     *  复制单个文件 
     *  @param  oldPath  String  原文件路径  如:c:/fqf.txt 
     *  @param  newPath  String  复制后路径  如:f:/fqf.txt 
     *  @return  boolean 
     */ 
   public  void  copyFile(String  oldPath,  String  newPath) 
   { 
       try  { 
           int  bytesum  =  0; 
           int  byteread  =  0; 
           File  oldfile  =  new  File(oldPath); 
           if  (oldfile.exists())  {  //文件存在时 
               InputStream  inStream  =  new  FileInputStream(oldPath);  //读入原文件 
               FileOutputStream  fs  =  new  FileOutputStream(newPath); 
               byte[]  buffer  =  new  byte[1444]; 
               int  length; 
               while  (  (byteread  =  inStream.read(buffer))  !=  -1)  { 
                   bytesum  +=  byteread;  //字节数  文件大小 
                   System.out.println(bytesum); 
                   fs.write(buffer,  0,  byteread); 
               } 
               inStream.close(); 
           } 
       } 
       catch  (Exception  e)  { 
           System.out.println("复制单个文件操作出错"); 
           e.printStackTrace();  
       }  
   }  

//保存文件的方法
public String Savefiles(FormFile file,String path)
 {  
  String fileName= file.getFileName();
  String contentType = file.getContentType();
  String size = (file.getFileSize() + " bytes");
  try
  {
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   InputStream stream = file.getInputStream();
   OutputStream bos = new FileOutputStream(path+fileName);
   int bytesRead = 0;
   byte[] buffer = new byte[8192];
   while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
    bos.write(buffer, 0, bytesRead);
   }
   bos.close();      
   stream.close();  
  }
  catch (IOException e) {
   return e.getMessage();
  }
  return "1";
 }

//生成15位的字符串
public String GenTradeId()
 {
  String tradeId = "";
  RandomStrg.setCharset("a-zA-Z0-9");  
  RandomStrg.setLength("15");  
  try
  {
   RandomStrg.generateRandomObject();
   tradeId=RandomStrg.getRandom();   
  }
  catch (Exception e)
  {    
  }
  return tradeId;  
 }

/**
  * 删除字符串中的空格,至多只保留一个空格
  * 
  * @String txt:输入需要处理的字符串
  * @return String :返回处理后的字符串
  * 
  */
 public String deleteWhitespace(String txt){
  if((txt!=null)&&(txt.trim().length()>1)){
   
  }
  else{
   return "";
  }
  
  txt = txt.replaceAll("\n"," ").replaceAll("\t"," ");
  String temp="";
  try{
   int flag =0,num=0;
   char c = 'x';
   StringBuffer sb = new StringBuffer("");
   for(int x=0;x<txt.length();x++){
    c = txt.charAt(x);
    if((c==' ')&&(flag==0)){
     sb.append(c);
     flag =1;
    }
    else if((c!=' ')){
     sb.append(c);
     flag =0;
    }
   }
   temp = sb.toString().trim();
  }
  catch(Exception e){
   ;
  }
  return temp;
 }

posted @ 2007-08-08 11:03 Bill111 阅读(1526) | 评论 (0)编辑 收藏
JavaScript Example

     摘要: 1.文本框焦点问题onBlur:当失去输入焦点后产生该事件onFocus:当输入获得焦点后,产生该文件Onchange:当文字值改变时,产生该事件Onselect:当文字加亮后,产生该文件 <input type="text" value="郭强" onfocus="if(value=='郭强') {value=''}" onblur="if (value=='')...  阅读全文

posted @ 2007-03-27 17:18 Bill111 阅读(2238) | 评论 (0)编辑 收藏
SQL执行效率

SQL语句中,IN、EXISTS、NOT IN、NOT EXISTS的效率较低,尤其是后两种语句,当数据量较大时,更常给人一种死机般的感觉。本文提供一种使用连接的方法代替以上的四种语句,可大副提高SQL语句的运行效率。以NOT IN为例,当数据量达到一万时,效率可提高20倍,数据量越大,效率提高的幅度也就越大。

本文所举的例子在Oracle 7.0下运行通过,但本文所推荐的方法在各种大型数据库上皆适用。
为了能够更好的说明问题,我们采用示例的方式来说明问题。下面,我们将创建一些数据库表和数据,用于在举例时使用。

下面的语句将创建我们示例中将使用的表,并分别在表1(TAB1)中存入10000条数据,表2(TAB2)中存入5000条数据。

SQL语句如下:

CREATE TABLE TAB1
(
COL1 VARCHAR(20) NOT NULL,
COL2 INTEGER,
PRIMARY KEY(COL1)
);
CREATE TABLE TAB2
(
COL1 VARCHAR(20) NOT NULL,
PRIMARY KEY(COL1)
);
CREATE TABLE TAB3
(
COL1 VARCHAR(20) NOT NULL,
PRIMARY KEY(COL1)
);
CREATE OR REPLACE TRIGGER T_TAB3 BEFORE INSERT ON TAB3 FOR EACH ROW
DECLARE
NUM1 NUMBER;
BEGIN
NUM1:=1;
LOOP
EXIT WHEN NUM1>10000;
INSERT INTO TAB1 VALUES (NUM1,NUM1);
IF NUM1<=5000 THEN INSERT INTO TAB2 VALUES (NUM1);
END IF;
NUM1:=NUM1+1;
END LOOP;
END;
INSERT INTO TAB3 VALUES('1');

下面,我们将举2个例子来具体说明使用连接替换IN、NOT IN、EXISTS、NOT EXISTS的方法。

 读取表1中第2列(COL2)数据的总和,且其第1列数据存在于表2的第1列中。

1. 使用IN的SQL语句:

SELECT SUM(COL2) FROM TAB1 WHERE COL1 IN(SELECT COL1 FROM TAB2)

2. 使用EXISTS的SQL语句:

SELECT SUM(COL2) FROM TAB1 WHERE EXISTS(SELECT * FROM TAB2 WHERE TAB1.COL1=TAB2.COL1)

3. 使用连接的SQL语句:

SELECT SUM(A.COL2) FROM TAB1 A,TAB2 B

WHERE A.COL1=B.COL1

 读取表1中第2列(COL2)数据的总和,且其第1列数据不存在于表2的第1列中。


1. 使用NOT IN的SQL语句:

SELECT SUM(COL2) FROM TAB1 WHERE COL1 NOT IN(SELECT COL1 FROM TAB2)

2. 使用NOT EXISTS的SQL语句:

SELECT SUM(COL2) FROM TAB1 WHERE NOT EXISTS(SELECT * FROM TAB2 WHERE
TAB1.COL1=TAB2.COL1)

3. 使用外连接的SQL语句:

SELECT SUM(A.COL2) FROM TAB1 A,TAB2 B WHERE A.COL1=B.COL1(+) AND B.COL1 IS NULL

下面介绍IN、NOT IN、EXIST、NOT EXIST在DELETE和UPDATE语句中的效率提高方法。

下面所举的例子在Microsoft SQL Server 7.0下运行通过,但所推荐的方法在各种大型数据库上皆适用。下面,我们将创建一些数据库表和数据,用于举例说明。我们将分别在表A(TA)中存入 10000条数据,表B(TB)中存入5000条数据。

SQL语句如下:

CREATE TABLE TA
(
CA INT
)
CREATE TABLE TB
(
CA INT
)
CREATE TABLE TC
(
CA INT
)
CREATE TRIGGER TRA ON TC
FOR INSERT
AS
DECLARE @MINT INT
BEGIN
SELECT @MINT=1
WHILE (@MINT<=5000)
BEGIN
INSERT INTO TA VALUES(@MINT)
INSERT INTO TB VALUES(@MINT)
SELECT @MINT=@MINT+1
END
WHILE (@MINT<=10000)
BEGIN
INSERT INTO TA VALUES(@MINT)
SELECT @MINT=@MINT+1
END
END
GO
INSERT INTO TC VALUES(1)
GO

 删除表A中表A和表B相同的数据

1. 用IN的SQL语句:
DELETE FROM TA WHERE TA.CA IN (SELECT CA FROM TB)

2. 用EXISTS的SQL语句:
DELETE FROM TA WHERE EXISTS (SELECT * FROM TB WHERE TB.CA=TA.CA)

3. 使用连接的SQL语句:
DELETE TA FROM TA,TB WHERE TA.CA=TB.CA

 删除表A中表A存在但表B中不存在的数据

1. 使用IN的SQL语句:
DELETE FROM TA WHERE TA.CA NOT IN (SELECT CA FROM TB)

2. 使用EXISTS的SQL语句:
DELETE FROM TA WHERE NOT EXISTS (SELECT CA FROM TB WHERE TB.CA=TA.CA)

3. 使用连接的SQL语句:
DELETE TA FROM TA LEFT OUTER JOIN TB ON TA.CA=TB.CA WHERE TB.CA IS NULL


 更新表A中表A和表B相同的数据
1. 使用IN的SQL语句:
UPDATE TA SET CA=CA+10000 WHERE CA IN (SELECT CA FROM TB)

2. 使用EXISTS的SQL语句:
UPDATE TA SET CA=CA+10000 WHERE EXISTS (SELECT CA FROM TB WHERE TB.CA=TA.CA)

3. 使用连接的SQL语句:
UPDATE TA SET TA.CA=TA.CA+10000 FROM TA,TB WHERE TA.CA=TB.CA


 更新表A中表A存在但表B中不存在的数据

1. 使用IN的SQL语句:
UPDATE TA SET CA=CA+10000 WHERE CA NOT IN (SELECT CA FROM TB)

2. 使用EXISTS的SQL语句:
UPDATE TA SET CA=CA+10000 WHERE NOT EXISTS (SELECT CA FROM TB WHERE TB.CA=TA.CA)

3. 使用连接的SQL语句:
UPDATE TA SET TA.CA=TA.CA+10000 FROM TA LEFT OUTER JOIN TB ON TA.CA=TB.CA WHERE TB.CA IS NULL

posted @ 2007-03-23 13:50 Bill111 阅读(3609) | 评论 (2)编辑 收藏