2009年4月5日 星期日

PHP 連接 MSSQL Server

總是為了PHP 連接MSSQL大傷腦筋
首先就是ntwdblib.dll要自己從MSSQL 2000以後的版本裡面自己COPY
接著又是iCONV 成UTF-8的問題
最後就是nTEXT系列撈不出來的問題

之前沒時間測試Microsoft新推出的官方版SQL Server 2005 Driver for PHP
今天因為案子的關係,花點時間測試一下吧

首先從這裡下載
http://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&displaylang=en

解壓後,把php_sqlsrv.dll和php_sqlsrv_ts.dll(thread-safe版本 )複製到php ext目錄

然後用php.ini掛起來extension=php_sqlsrv.dll,重新啟動Apache

==================================================
接著看看phpinfo有沒有掛到sqlsrv...
==================================================
然後sqlsrv的語法和原本完全不一樣,又要花點時間K文件了...
有空繼續測,還是暫時用老方法
==================================================

2009年3月31日 星期二

.Net C# App_Code共用函數資料夾

1. 建立.cs檔案,直接可以寫程式
2. 在其他資料夾,不需要任何的宣告,直接可以使用App_Code的值、類別、函數

在App_Code寫程式
Session()要換成HttpContext.Current.Session()


Response.Write()要換成System.Web.HttpContext.Current.Response.Write()

Request系列也要換成HttpContext.Current.Request

2009年3月25日 星期三

.Net C# .ToString() vs. Convert.ToString()

.ToString() vs. Convert.ToString()
兩種都可以把東西轉換成字串
但兩種又不太一樣

Convert.ToString()是將任何物件強制轉換為字串

.ToString()則是若有些物件有提供ToSting()方法才可以轉換,否則會錯誤

Convert還有其他格式轉換方式,可以參考
http://msdn.microsoft.com/zh-tw/library/system.convert_members.aspx

至於.ToString因為配合不同的物件,有不同的功用,可以作到number_format這一類的功能

如:
int a = 99.123
a.ToString("C") => NT$ 99.12
輸出金額格式,台灣的顯示方式是,前置單位NT$,千分號為(,),取小數點以下兩位四捨五入

int a = 99
a.ToString("D10") => 0000000099
自動補到D後面的位數(D參數一定要整數使用,有小數點會發生錯誤)

int a = 99.123
a.ToString("F2") => 99.12
Float的意思,取浮點數,到小數點F後面的位數,四捨五入

int a = 99.123
a.ToString("N") => 99.12
和C類似,只是沒有前置單位

其他還有日期格式等等都可以使用,
需要參考各物件的toString的IFormatProvider

.NET C# DataTable的拆解

預設的DataTable其實蠻容易理解的
首先就是
DataTable.Rows.Count,可以看到總共有多少筆資料
DataTable.Columns.Count,可以看到總共有多少欄位

至於資料編號則是從零開始遞增
DataTable.Rows[資料編號]['欄位名稱']
就可以取出裡面的值

欄位名稱編號也是從零開始遞增
DataTable.Columns[資料編號]就可以取出欄位名稱

其他還有一些可以用的公用屬性
DataTable.TableName,取得資料表名稱

更詳細的東西參考
http://msdn.microsoft.com/zh-tw/library/system.data.datatable_members(VS.80).aspx

.Net C# 關於與MSSQL連線

不用拉來拉去,而用手刻的連線方式
SqlConnection ConnX = new SqlConnection(連線字串);
try {
ConnX.Open();
} catch {
//連線失敗的處理
}
SqlDataAdapter Comm = new SqlDataAdapter(SQL語法, ConnX);
DataSet ds = new DataSet();
Comm.Fill(ds, "資料表名稱");
//將查詢出來的東西放到ds這個DataSet裡面
DataTable products=ds.Tables["資料表名稱"];
//在將東西轉換到DataTable以提供取用

.Net C# Session 的使用

.Net C#的Session非常簡單,不用預先做任何宣告
直接拿來當陣列使用即可

宣告時Session["名稱"] = 值
取出時Session["名稱"]

但注意,Session必須在某觸發事件中
如:Page_Onload或是Click等事件
直接當作直譯式語言使用,會導致錯誤

2009年3月24日 星期二

.Net C# GET POST取得

GET(顯示傳遞值在網址列): Request.QueryString["名稱"]
POST(隱藏傳遞值在網址列): Request.Form["名稱"]

如果傳遞相同名稱的值
將會變成使用逗號(,)分隔的字串資料

無法像PHP一樣,使用名稱[],來接收值而變成陣列
也不會像PHP一樣,後值會覆蓋前值

但注意,空值也會變成分隔字串