2011年3月23日 星期三

MS SQL char 與 varchar 和 nchar 與 nvarchar

參考資料:http://blog.yam.com/clayclay76/article/25172410
http://msdn.microsoft.com/zh-tw/library/ms186939%28v=sql.90%29.aspx

char在MS SQL中
假設指定長度為char(10)
如果填入的值是abcd
因為長度沒有達到10
所以會自動在字串右邊補空白
也就是abcd後面會有6個空白


而varchar則是相反
假設指定長度為varchar(10)
如果填入的值是abcd
並不會自動填補空白
字串一樣是abcd


固定長度 (nchar) 或可變長度 (nvarchar) 的 Unicode 資料,且使用 UNICODE UCS-2 字元集。
nchar [ ( n ) ]
n 字元的固定長度 Unicode 字元資料。n 必須是 1 到 4,000 的值。儲存體大小是 n 位元組的兩倍。nchar 的 SQL-2003 同義字是 national charnational character
nvarchar [ ( n | max ) ]
可變長度,Unicode 字元資料。n 可以是 1 到 4,000 的值。max 表示最大儲存體大小是 2^31-1 位元組。儲存體大小是輸入字元數的兩倍 + 2 位元組 (以位元組為單位)。輸入的資料長度可以是 0 字元。nvarchar 的 SQL-2003 同義字是 national char varyingnational character varying

2011年3月22日 星期二

ASP和PHP語法對照表

資料來源:http://www.design215.com/toolbox/asp.php

要改寫某些案子的時候就可以拿來參考.

2011年3月18日 星期五

Facebook在ie使用stream publish被IE8的XSS (Cross Site Scripting) filter擋掉的解法

資料來源:http://wiselysong.blogspot.com/2010/10/2010-10-08-facebook-javascript-sdk-in.html

百思不得其解的狀況下,拜求google大神.得到的籤詩如下:

HTML最前方的!DOCTYPE定義區段沒寫才造成的。這在非IE8瀏覽器下基本都不會有影響的,但是在IE8底下就會造成這問題!
在HTML最前面補上了 <!DOCTYPE html>
同樣的中文內容在測試會被擋掉的在這就都可以正常了 .

用ie打開UTF8的網頁卻一片空白..........

資料來源:http://zonble.net/archives/2004_05/485.php

用ie以外的瀏覽器看都正常.唯獨ie一開就一片空白.怎解?
解法如下:

如果使用的是Mozilla、Mozilla Firefox、Sarafi等其他目前流行的瀏覽器,通常就不會有這樣的問題。
如果您在Windows作業系統上,使用Internet Explorer瀏覽器的話,往往會出現這樣的狀況:在瀏覽使用UTF-8編碼製作的中文網頁時,瀏覽器並不能夠自動偵測網頁的編碼方式,從原本預設的語 系編碼(例如Big5正體中文等),切換成改以UTF-8編碼,結果畫面上就是一片空白,什麼都沒有,即使在網頁當中,已經加上了特別標明內文語系的 metadata標籤:

在Internet Explorer中,還是沒有辦法正常處理。
我之前也遇過這樣的狀況,在做了一些嘗試之下,發現有個方法可以解決這樣的問題,那就是,在網頁的<head> 到</head>當中的檔頭部份,調整一下各種<meta>標籤在檔案中的順序。如果說,在<head>當中,排在 最前面的是像網頁標題標籤<title></title>,當中就出現了UTF-8中文,就很容易造成在瀏覽器中畫面一片空白, 我在想,或許是因為Internet Explorer會一開始就用預設的語系解讀、分析網頁,而在標題的地方遇到UTF-8字元,就解讀錯誤,而不會繼續往下讀,讀到meta標籤,讀出這個 網頁是以UTF-8編碼。
所以,在</head>的部份,把”Content-Type”放在最前面,便可以解決這樣的問題了。

文章來源: http://zonble.net/archives/2004_05/485.php

2011年3月14日 星期一

將資料匯出到Excel(*.csv),文字格式資料的處理手法

目前查到的有幾種解法:
1.設定儲存格格式
<td style="mso-number-format:\@">
資料參考來源:http://yanyoliu.blogspot.com/2006/04/asp-excel.html

2.數字前面加上單引號
參考資料:http://www.programmer-club.com.tw/ShowSameTitleN/asp/12676.html

3.數字前面加上chr(127)
參考資料:http://www.blueshop.com.tw/board/show.asp?subcde=BRD200606191649367F8
ASCII字碼對應表
http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/The_Characters.asp

2011年3月9日 星期三

Recordset 語法及相關運作

資料來源:http://blog.blueshop.com.tw/mars/archive/2004/09/08/177.aspx


語法
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open Source, ActiveConnection, CursorType, LockType, Options

參數
Source 選擇性參數:  此 Variant 是為一個有效的 Command 物件變數名稱、SQL 陳述式、資料表名稱、已存的程序呼叫,或是一個保存的 Recordset 的檔名。
ActiveConnection 選擇性參數:  不是 Variant 得到一個有效的 Connection 物件變數名稱,就是 String 包含 ConnectionString 參數。
CursorType 選擇性參數:  此 CursorTypeEnum 值決定提供者在開啟 Recordset 時應使用的指標類型。其可以是下列其中一種常數。

常數說明
adOpenForwardOnly:開啟一個順向資料指標。(預設)
AdOpenKeyset:開啟一個索引鍵集 (keyset-type) 資料指標。
AdOpenDynamic:開啟一個動態資料指標。
AdOpenStatic:開啟一個靜態資料指標。
LockType 選擇性參數:
此 LockTypeEnum 值決定提供者在開啟 Recordset 時應使用何種鎖定 (同時性)。其可以是下列其中一種常數。
常數說明adLockReadOnly:唯讀,資料無法變更。(預設)
AdLockPessimistic:悲觀鎖定,提供者會進行必要的動作以確保能順利編輯資料錄,其方法通常是在編輯時立即在資料源處鎖定資料錄。
AdLockOptimistic:樂觀鎖定,提供者使用樂觀性鎖定,當您呼叫 Update 方法時,僅鎖定資料錄。
AdLockBatchOptimistic:樂觀批次更新,此為批次更新模式所需,與即時更新模式相反。
Options 選擇性參數:  
一個 Long 值,表示提供者在 Source 引數代表 Command 物件以外的東西時應如何評估它,否則 Recordset 應從前次儲存的檔案還原。它可以是下列其中一種常數。

常數說明
adCmdText:提供者會將 Source 評估為指令的文字定義。
AdCmdTable:ADO 會產生一個 SQL 查詢,從 Source 中指定的資料表傳回所有資料列。
AdCmdTableDirect:提供者會從 Source 中指定的資料表傳回所有資料列。
AdCmdStoredProc:提供者會將 Source 評估為一個預存程序。
AdCmdUnknown:Source 引數中未知的指令類型。
AdCommandFile:保留的 (已儲存的) Recordset 會從 Source 中指定的檔案還原。
AdExecuteAsync:Source 作非同步執行。
AdFetchAsync:表示在 CacheSize 屬性中指定的初始數量被抓取後,剩下的資料列就會被非同步地抓取。
應用函數
RecordSet.BOF 判斷指標是否超過最前面
RecordSet.EOF 判斷指標是否超過最後面
RecordSet.MoveFirst 將資料錄指標移至第一筆
RecordSet.MoveLast 將資料錄指標移至最後一筆
RecordSet.MoveNext 將資料指標往後移一筆
RecordSet.MovePrevious 將資料指標往前移一筆
RecordSet.Fields.Count 傳回Recordset中的欄位數
RecordSet(i).Name 傳回Recordset中第i個欄位的名稱
RecordSet.RcordCount 傳回Recordset中資料錄的筆數
RecordSet("欄位名稱") 傳回指定欄位名稱的資料內容
RecordSet(i) 傳回RecordSet中的第i個欄位資料
RecordSet.Fields(i).DefinedSize 傳回RecordSet中的第i個欄位資料欄位長度
RecordSet.Fields(i).Type 傳回RecordSet中的第i個欄位資料欄位資料型別
RecordSet.BookMark 傳回設定的書籤以儲存現在紀錄的位置。RecordSet.AbsolutePostition 將指標移至RecordSet中的某一筆資料上
RecordSet.PageSize 設定每頁顯示的資料筆數
RecordSet.PageCount 傳回分頁後的總頁數
RecordSet.AbsolutePage 傳回目前所在的頁數
RecordSet.AddNew 新增資料至資料表中
RecordSet.Update 更新目前這筆資料
RecordSet.Delete 刪除目前這筆資料
RecordSet.Find 尋找資料值
RecordSet.GetRows 可將Recordset中的資料儲存至陣列中
RecordSet.Sort 可將Recordset中的資料排序