2009/03/12

韓國真的好玩!

BlogAD
2月份剛去難忘的韓國之旅,想不到韓國觀光公社(應該是類似台灣的觀光局)推出這麼有趣的活動
大家一塊去參加吧


2009/03/10

ADO and OLE DB Providers

ADO and OLE DB Providers
ADO clients that communicate with OLE DB need an OLE DB provider, a dynamic-link library that uses OLE DB interfaces and methods to query an SQL data source. For Microsoft® SQL Server™, two types of OLE DB providers can be used:

Microsoft OLE DB Provider for SQL Server (SQLOLEDB), which directly maps OLE DB interfaces and methods over SQL Server data sources.
Microsoft OLE DB Provider for ODBC (MSDASQL), which maps OLE DB interfaces and methods to ODBC APIs. OLE DB consumers connect to a SQL Server database through an existing SQL Server ODBC driver.
We recommend using SQLOLEDB, supplied with SQL Server, as your OLE DB provider. SQLOLEDB maps OLE DB interfaces and methods over SQL Server data sources without using the ODBC API or the SQL Server ODBC driver as intermediaries. The ADO Introductory Visual Basic Sample application, used in most of the code examples in the ADO object model topics, uses SQLOLEDB.

There are differences between SQLOLEDB and MSDASQL. The two providers support different connection properties, and SQLOLEDB does not support the use of an ODBC DSN connection. For more information about the use of connection properties for the two providers, see Connection Object.

In general, if you are exercising ADO code with SQL Server and an unexpected behavior occurs, check the provider properties, because the unexpected behavior could be attributable to ADO interacting differently with a different OLE DB provider.
Technorati 標籤:
,

ADO and OLE DB Providers

ADO and OLE DB Providers
ADO clients that communicate with OLE DB need an OLE DB provider, a dynamic-link library that uses OLE DB interfaces and methods to query an SQL data source. For Microsoft® SQL Server™, two types of OLE DB providers can be used:

Microsoft OLE DB Provider for SQL Server (SQLOLEDB), which directly maps OLE DB interfaces and methods over SQL Server data sources.
Microsoft OLE DB Provider for ODBC (MSDASQL), which maps OLE DB interfaces and methods to ODBC APIs. OLE DB consumers connect to a SQL Server database through an existing SQL Server ODBC driver.
We recommend using SQLOLEDB, supplied with SQL Server, as your OLE DB provider. SQLOLEDB maps OLE DB interfaces and methods over SQL Server data sources without using the ODBC API or the SQL Server ODBC driver as intermediaries. The ADO Introductory Visual Basic Sample application, used in most of the code examples in the ADO object model topics, uses SQLOLEDB.

There are differences between SQLOLEDB and MSDASQL. The two providers support different connection properties, and SQLOLEDB does not support the use of an ODBC DSN connection. For more information about the use of connection properties for the two providers, see Connection Object.

In general, if you are exercising ADO code with SQL Server and an unexpected behavior occurs, check the provider properties, because the unexpected behavior could be attributable to ADO interacting differently with a different OLE DB provider.
Technorati 標籤:
,

2009/02/15

[轉]十二生肖的意義

有一次,我有機會和歐洲貴族聚餐。可能酒喝多了,一位德國貴族站了起來,諷刺說︰ " 你們中國人都是屬什麼豬啊﹗狗啊﹗老鼠啊﹗不像我們,都是金牛座、獅子座、仙女座 ……真不知道你們祖先怎麼想的?

當時這些貴族聽完哈哈大笑,還互相碰杯,先前的優雅完全不見了。按理說,人家在罵你祖宗了,你即使沒有話說,起碼可以掀桌子啊﹗但所有人都坐著不吭聲,也可能是還沒回應過來,我當時只好平和地告訴在場所有外賓︰"中國人的祖先是很實在的,我們十二生肖兩兩相對,六道輪回,體現了我們祖先對中國人全部的期望跟要求。"這時,現場氣氛雖然從嬉鬧轉為安靜,但是他們臉上還是一副不屑的樣子。

我說︰

第一組是老鼠和牛。老鼠代表智慧,牛代表勤奮。 智慧和勤奮一定要緊緊結合在一起。如果光有智慧不勤奮,那就變成小聰明;而光是勤奮,不動腦筋,那就變成愚蠢。所以這兩者一定要結合,這是我們祖先對中國人的第一組期望和要求,也是最重要的一組。

第二組是老虎和兔子。老虎代表勇猛,兔子代表謹慎。勇猛和謹慎一定要緊緊結合在一起,才能做到所謂的膽大心細。如果勇猛離開了謹慎,就變成了魯莽,而你沒有勇猛,一味的謹慎,謹慎就變成膽怯。這一組也非常重要,所以放在第二 。

我看著這些貴族,補上一句︰ " 所以當我們表現出謹慎的時候,千萬不要以為我們中國人沒有勇猛的一面。" 實際上,我們祖先追求的是一種和諧的智慧和圓融,從來不會單獨給一個要求和任務。 "看著大家陷入沈思,我繼續往下說。

第三組是龍和蛇。龍代表剛猛,蛇代表柔韌。所謂剛者易折,太剛了容易折斷,但是如果只有柔的一面,就易失去主見, 所以剛柔並濟是我們歷代的祖訓。

接下來是馬和羊。馬代表一往無前,直奔目標,羊代表和順。如果一個人只顧自己直奔目標,罔顧周遭,必然會和周遭不斷磕碰,最後不見得能達到目標。但是一個人如果光顧著和周遭和順,之后他連方向都沒有了,目標也失去了。所以一往無前的秉性一定要與和順緊緊結合在一起,這是我們祖先對中國人的第四組期望。

再接下來是猴子和雞。猴子代表靈活,至於雞呢,以前的年代沒有鐘,都是聽雞鳴聲決定一天的開始,所以雞定時打鳴,代表恆定。靈活和恆定一定要緊緊結合起來,如果你光靈活,沒有恆定,再好的政策最後也得不到斬獲。但如果說你光是恆定,一潭死水、一塊鐵板,那就不會有我們今天的改革開放了。只有它們之間非常圓融的結合,一方面具有穩定性,保持整體的和諧和秩序,另一方面又能不斷變通地前 進,這才是最根本的要旨。

最後是狗和豬。狗是代表忠誠,豬是代表隨和。一個人如果太忠誠,不懂得隨和,就會排斥他人。而反過來,一個人太隨和,沒有忠誠,這個人就失去原則。所以無論是對一個民族國家的忠誠、對團隊的忠誠,還是自己理想的忠誠,一定要與隨和緊緊結合在一起,這樣才容易真正保持內心深處的忠誠。這就是我們中國人一直堅持的外圓內方,君子和而不同。

中國人每個人都有屬于自己的生肖,有的人屬豬,有的人屬狗,這意義何在?實際上,我們的祖先期望我們要圓融,不能
偏頗,要求我們懂得到對應面切入。比如屬豬的人能夠在他的隨和本性中,也去追求忠誠;而屬狗的人則在忠誠的本性中,去做到隨和。

解釋完十二生肖,我說︰ "不知道你們那些寶瓶座啊、射手座啊、公羊座啊,體現了你們祖先哪些期望和要求?也希望不
吝賜教。"結果呢,這些貴族老爺們很長時間都沒說話,全場鴉雀無聲,一根針掉在地上都能聽見。最後貴族們紛紛由衷地表示對中國人和中國人的祖先非常敬佩︰沒有想到中國的十二 生肖 有這麼深刻而實在的意義。

2008/10/22

經典SQL語句集錦(收藏版)

找到好料的...先記起來先


下列語句部分是MsSql語句,不可以在access中使用。

SQL分類:
DDL—資料定義語言(CREATE,ALTER,DROP,DECLARE)
DML—資料操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—資料控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,簡要介紹基礎語句:
1、說明:新增資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 新增 備份資料的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:新增新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表新增新表:
A:create table tab_new like tab_old (使用舊表新增新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後資料類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:增加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:新增索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
註:索引是不可更改的,想更改必須刪除重新建。
9、說明:新增視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 範圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 範圍
更新:update table1 set field1=value1 where 範圍
查找:select * from table1 where field1 like 』%value1%』 ---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count * as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、說明:幾個進階查詢運算詞
A: UNION 運算符
UNION
運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重複行而派生出一個結果表。當 ALL 隨 UNION
一起使用時(即 UNION ALL),不消除重複行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重複行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重複行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重複行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重複行。
註:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left outer join:
左外連接(左連接):結果集幾包括連接表的符合行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外連接(右連接):結果集既包括連接表的符合連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的符合行,還包括兩個連接表中的所有記錄。

其次,大家來看一些不錯的sql語句
1、說明:複製表(只複製結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a

2、說明:拷貝表(拷貝資料,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;

3、說明:跨資料庫之間表的拷貝(具體資料使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、說明:顯示文章、送出人和最後回覆時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、說明:線上視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、說明:between的用法,between限制查詢資料範圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數值1 and 數值2

9、說明:in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)

10、說明:兩張關聯表,刪除主表中已經在副表中沒有的訊息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、說明:日程安排提前五分鐘提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段

14、說明:前10條記錄
select top 10 * form table1 where 範圍

15、說明:選擇在每一組b值相同的資料中對應的a最大的記錄的所有訊息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重複行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、說明:隨機取出10條資料
select top 10 * from tablename order by newid()

18、說明:隨機選擇記錄
select newid()

19、說明:刪除重複記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、說明:列出資料庫裡所有的表名
select name from sysobjects where type='U'

21、說明:列出表裡的所有的
select name from syscolumns where id=object_id('TableName')

22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select 中的case。
select
type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when
'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end)
FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3

23、說明:初始化表table1
TRUNCATE TABLE table1

24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

25、說明:亂數應用
select top 10 A.sort,[顯示欄位] from (select (newid()) sort,* from [資料表來源]) A Order by A.sort
  
隨機選擇資料庫記錄的方法(使用Randomize函數,通過SQL語句實現)
  對存儲在資料庫中的資料來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP「找個隨機數」然後打印出來。實際上常見的解決方案是建立如下所示的循環:
Randomize
RNumber = Int(Rnd*499) +1
 
While Not objRec.EOF
If objRec("ID") = RNumber THEN
... 這裡是執行腳本 ...
end if
objRec.MoveNext
Wend
 
 
 這很容易理解。首先,你取出1到500範圍之內的一個隨機數(假設500就是資料庫內記錄的總數)。然後,你遍歷每一記錄來測試ID
的值、檢查其是否符合RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊語法。假如你的RNumber
等於495,那麼要循環一遍資料庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型資料庫了,後者通常在一
個資料庫內就包含了成千上萬條記錄。這時候不就死定了?
  採用SQL,你就可以很快地找出準確的記錄並且打開一個只包含該記錄的recordset,如下所示:
Randomize
RNumber = Int(Rnd*499) + 1
 
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber
 
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
 
  不必寫出RNumber 和ID,你只需要檢查符合情況即可。只要你對以上語法的工作滿意,你自可按需操作「隨機」記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。
再談隨機數
  現在你下定決心要搾乾Random 函數的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機範圍內的記錄。把上面的標準Random 示例擴展一下就可以用SQL應對上面兩種情況了。
  為了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以存儲三個隨機數,然後查詢資料庫獲得符合這些數字的記錄:
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
 
  假如你想選出10條記錄(也許是每次頁面裝載時的10條連結的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這裡的ID 是自動生成的號碼):
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"

  注意:以上語法的執行目的不是檢查資料庫內是否有9條並發記錄。

 
隨機讀取若干條記錄,測試過
Access語法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server語法:select top n * from 表名 order by newid()
MySql語法:Select * From 表名 Order By rand() Limit n
Access左連接語法(最近開發要用左連接,Access幫助什麼都沒有,網上沒有Access的SQL說明,只有自己測試, 現在記下以備後查)
語法:Select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
使用SQL語句 用...代替過長的字元串顯示
語法:
SQL資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access資料庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
 
Conn.Execute說明
Execute方法
  該方法用於執行SQL語句。根據SQL語句執行後是否返回記錄集,該方法的使用格式分為以下兩種:
    1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:
    Set 對像變量名=連接對像.Execute("SQL 查詢語言")
   Execute方法調用後,會自動新增記錄集對象,並將查詢結果存儲在該記錄對像中,通過Set方法,將記錄集賦給指定的對象儲存,以後對像變量就代表了該記錄集對象。

    2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:
    連接對像.Execute "SQL 操作性語句" [, RecordAffected][, Option]
      ·RecordAffected 為可選項,此出可放置一個變量,SQL語句執行後,所生效的記錄數會自動儲存到該變量中。通過訪問該變量,就可知道SQL語句隊多少條記錄進行了操作。
      ·Option 可選項,該參數的取值通常為adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字元解釋為命令文本。通過指定該參數,可使執行更高效。

·BeginTrans、RollbackTrans、CommitTrans方法
  這三個方法是連接對像提供的用於事務處理的方法。BeginTrans用於開始一個事物;RollbackTrans用於回滾事務;CommitTrans用於送出所有的事務處理結果,即確認事務的處理。
  事務處理可以將一組操作視為一個整體,只有全部語句都成功執行後,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處裡前的狀態。
 
 BeginTrans和CommitTrans用於標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過
連接對象的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一
個錯誤訊息。

2008/10/21

Wii Music 期待中...

剛才在Wii 360玩樂誌中預購了 Wii Music
這款早在 Wii 發表時的CF中,有幾個片段就是截取 Wii Music的遊戲畫面
簡單的操作,讓不熟悉音樂的玩家也可以從中得到樂趣!
很期待能早日拿到手,更期待看到小朋友沉浸於其中的畫面 :D
但是從這次預購的事件中
不難發現台灣還是有很多的有心人士
很有心的為了幾十塊的差額,為了一般民眾的跟廠商力爭到底
參與這次的預購我想除了期待遊戲本身外
我也希望能用行動支持這些熱情的人


2008/10/20

金字塔底層的悲哀

即使台灣在世界地圖上雖然只有一小塊鼻屎般的大小
但是在國際上的民主政治卻有著不容小看的地位
看一下台灣的歷史,舉凡是1987年台灣解嚴,2000年的台灣政黨輪替
台灣人民所展現的民主風範無一不被國際媒體所稱道......
即使如此...對於一個平凡的上班族而言:那又如何?
民主當道,但是在企業中依然是像文中的圖片一樣,你的所有意見最頂端的人絕對聽不到~無論是好或不好
而那些能昇官加薪的永遠都是那些走狗,三腳貓,鳥人(見圖)之類的人物
越大的企業,越是如此!
廣大的上班族群們,一起努力往走狗/三腳貓/鳥人的階級前進吧!

2008/08/28

人生最後的一站

昨夜是個難熬的夜晚
孤單情緒的高漲,似乎因為老媽的病情而全都湧上心頭
與挽強的癌細胞持續了抗戰了一年
想不到最後我們還是敗戰下來
在這過程中,親友的關心,人情的冷暖都看在眼中,記在心中

人生就像一幕幕的電影
我想老媽已經在演最後的一部
其實我很開心,因為這個世界太多要煩惱的事了
早點離開說不定是件幸褔的事!
僅存的感覺就是不捨

猶記得,十幾歲的青少年時期,與老媽兩人騎著機車看到美麗夕陽,兩人就坐在機車上,吃著爆米花,欣賞著天空為我們演奏的顏色交響樂!!

老媽,我愛妳~!