六月 22
其實 WinForm 跟 WebForm 在連結資料庫方面其實差不了太多。
C#:
-
protected void Page_Load(object sender, EventArgs e)
-
{
-
//第一:連結SQL資料庫
-
string connstr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\test_Data.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True";
-
SqlConnection conn =
new SqlConnection
(connstr
);
-
conn.Open();
-
-
//第二:執行SQL指令
-
string sqlstr = "select * from test";
-
SqlCommand cmd =
new SqlCommand
(sqlstr,conn
);
-
-
SqlDataReader dr = cmd.ExecuteReader();
-
-
//第三:印出資料
-
while (dr.Read())
-
{
-
Response.Write("文章編號:" + dr["id"] + "<br>");
-
Response.Write("日 期:" + dr["test_time"] + "<br>");
-
Response.Write("文章標題:" + dr["title"]);
-
Response.Write("<hr>");
-
}
-
-
//第四:關閉連線
-
cmd.Cancel();
-
dr.Close();
-
conn.Close();
-
conn.Dispose();
-
}
文章參考於:ASP.NET專題實務-適用C# 作者:周棟祥
六月 21

在 VS20085 工具列中,AJAX 擴充功能這個選項是內建的,不過在 VS2005 中並沒有,現在坊間的書籍大多以 VS2008 為主,會常用到 AJAX 功能,不過如果不更換版本,在 VS2005 中也可以安裝 AJAX 擴充功能。你必須下載以下檔案(約1MB多)安裝完成後,AJAX 擴充功能就會出現了。
下載檔案:
ASP.NET AJAX 1.0
六月 20
用 Visual Studio 久了會發現一個問題,就是會越來越依賴這個開發工具,因為它什麼都幫你處理好了,程式指令永遠只記得前面三個字母,因為VS有指令自動補齊,連接資料庫有精靈幫忙,管你是 MSSQL 還是 Access,全部按一按搞定,還順便幫你把 Insert、Update、Select、Delete…等 SQL 四大溝通指令寫好了,程式就這麼在拖拉、設定之間開發完成,有的甚至不用寫任何一行指令。
以前我很排斥用精靈方式來寫程式,堅持一字一句 Key 出來,不過我發現這會花費很多時間,舉個例子來說好了,寫一個簡單的通訊錄,不包括建資料庫的時間,用傳統手 Key 方式,我大概要花上半天的時間,因為我要拉控制項、設定控制項名稱、寫資料庫連接、資料繫結、資料配接器的 Insert、Update、Select、Delete 四個屬性質、設定 BindSource 導覽列…等,寫完天都黑了。
不過如果換成精靈模式寫,大概只要30分鐘就可以搞定,在產出力方面,精靈模式大勝,不過在程式靈活度、和可讀性來說,還是傳統手 Key 方式略勝一籌。
站在公司的立場,當然希望程式設計師的產出力越多越好,有些小地方還是用拖拉的就好,藝術這種東西不能當飯吃,VS是一個很邪惡的東西,因為他讓新手認為寫程式是一件很簡單的東西,讓老手離不開它。
六月 19
C#:
-
前面補0的數字字串
-
String.Format("{0:0000}", 157); // 輸出 0157
-
-
前後都補0的數字字串
-
String.Format("{0:0000.0000}", 157.42); // 輸出 0157.4200
-
-
每3位數(千)加逗號
-
(String.Format("{0:0,0}", 38560); // 輸出 38,560
-
-
格式化電話號碼
-
(String.Format("{0:(###) ###-####}", 8005551212); // 輸出 (800) 555-1212
-
-
金額的表示
-
(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0); // 這個會顯示 Zero
-
(String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1243.50); // 這個會顯示 $1,243.50
依照上面格式範例 ~ 套用到我的報表要呈現的欄位 ~ 如以下 ~
C#:
-
private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
-
{
-
if (e.Item.ItemIndex.ToString() != "-1")
-
{
-
e.Item.Cells[0].Text = string.Format("{0:#,0.0}",double.Parse(e.Item.Cells[3].Text.ToString()));
-
}
-
}
參考資料來源:
http://blog.stevex.net/index.php/string-formatting-in-csharp/
六月 18
伺服器應用程式無法使用
您嘗試在此 Web 伺服器上存取的 Web 應用程式目前無法使用。
請按 Web 瀏覽器中的 [重新整理] 按鈕,再試一次。
系統管理員注意:
Web 伺服器的應用程式事件記錄檔中的
錯誤訊息詳細說明了這項特定要求失敗原因。
請檢閱這個記錄項目,查看造成錯誤的原因為何。
終於找到
方法解決了~"~
http://blog.xuite.net/giin/blog/13640747
請直接到
[開始]→[執行]→輸入
[ C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727\aspnet_regiis.exe -i ] 就行了
最後確認一下預設的IIS執行環境
IIS→預設網站→內容→ASP.NET→確認 版本2.0.50727
應該就OK了!!
四月 06
如果發現有執行程式關不掉
木馬、病毒、當掉的程式皆可使用
按開始->執行->輸入 cmd -> 按enter
c:>ntsd -c q -p <<程序識別碼>>
Q.程序識別碼那裡來??
- 按開始->執行->輸入taskmgr.exe -> 按enter
- 檢視->選擇欄位-> 勾選PID(程序識別碼)->按確定
- 然後就能看見PID。
適用系統:
windows 2000、window xp(NT系列的應該都可以用)。
windows xp 有其他類似的工具 tasklist和tskill
tasklist:列出所有程序名稱及其他資訊。
tskill:終止程序, tskill <<程序名稱>>。
二月 04
C#:
-
DateTime dt1 =
new DateTime
(2008,
12,
31);
-
DateTime dt2 =
new DateTime
(2009,
2,
13);
-
TimeSpan s =
new TimeSpan
(dt2.
Ticks - dt1.
Ticks);
-
MessageBox.Show(Convert.ToString(s.Days));
-
-
//回傳44天,相反則為負值
參考網址:
C# 如何取得兩個 DateTime 日期之間的天數
TimeSpan MSDN
二月 02
enum 是一種用來宣告列舉型別 (Enumeration Type) 的關鍵字,是一組列舉清單項目的具名常數所構成的特殊型別,emun 主要目的在提高程式的可讀性,及易維護性,使用 enum 有以下幾點需要注意:
- enum 不能使用於方法 (Method) 內宣告。
- 資料型別必須是 byte,sbyte,short,ushort,int,uint,long 或 ulong。
- 預設資料型別為 int。
- float 與 double 不可為 enum 的資料型別。
關於列舉的宣告方式如下:
[存取修飾詞] enum [列舉名稱] : [資料型別]
{
[成員1],
[成員2],
...
[成員n]
}
|
關列舉範例程式如下:
C#:
-
public enum student : short
-
{
-
周杰倫 = 1,
-
方文山 = 2,
-
蔡依林 = 3,
-
王立宏 = 4
-
}
-
-
private void button1_Click(object sender, EventArgs e)
-
{
-
//將combox的文字數字轉換成短整數
-
short num = 0;
-
if (cbox.Text != "")
-
{
-
num = short.Parse(cbox.Text);
-
}
-
-
switch (num)
-
{
-
case (short) student.周杰倫:
-
MessageBox.Show("周杰倫", "明星");
-
break;
-
case (short) student.蔡依林:
-
MessageBox.Show("蔡依林", "明星");
-
break;
-
case (short) student.方文山:
-
MessageBox.Show("方文山", "明星");
-
break;
-
case (short) student.王立宏:
-
MessageBox.Show("王立宏", "明星");
-
break;
-
default:
-
MessageBox.Show("所選取數值不在範圍中","注意");
-
break;
-
}

