二月 01

結構 (struct) 資料型別

程式 沒有回應 »   瀏覽人數:[ 1,049user+923bot ]

struct 是一種用來宣告結構的關鍵字,在結構中包含相關變數,可以將結構視為變數群組,以學生資料 (student) 來說,若要設計其結構,應該包含幾個相關變數,如:學號(num),姓名(name)、電話(tel)、手機(mobile)、地址(address)等,底下介紹結構的宣告及叫用方式:

結構 (struct) 宣告方式:

[存取修飾詞] struct [結構名稱]
{
  [存取修飾詞] [資料型別] [變數名稱];
  [存取修飾詞] [資料型別] [變數名稱];
  ...
}

 

結構 (struct) 叫用方式:

[結構名稱] [變數名稱];

 

語法範例:

C#:
  1. public struct Student
  2.         {
  3.             public string Num;
  4.             public string Name;
  5.             public string Tel;
  6.             public string Mobile;
  7.             public string Address;
  8.         }
  9.        
  10.         private void btnAdd_Click(object sender, EventArgs e)
  11.         {
  12.             //宣告結構
  13.             Student std;
  14.            
  15.             //指定成員變數
  16.             std.Num = txtNum.Text;
  17.             std.Name = txtName.Text;
  18.             std.Tel = txtTel.Text;
  19.             std.Mobile = txtMobile.Text;
  20.             std.Address = txtAddress.Text;
  21.  
  22.             String msg = "";
  23.             msg = msg + "學號:" + std.Num + "\n";
  24.             msg = msg + "姓名:" + std.Name + "\n";
  25.             msg = msg + "電話:" + std.Tel + "\n";
  26.             msg = msg + "手機:" + std.Mobile + "\n";
  27.             msg = msg + "地址:" + std.Address;
  28.  
  29.             MessageBox.Show(msg, "學生基本資料");
  30.         }

二月 01

列舉、結構、類別的比較表

程式 沒有回應 »   瀏覽人數:[ 767user+679bot ]
enum struct class
中文意義 列舉 結構 類別
成員資料型別 受限制、而且只能為整數型別 不受限制 不受限制
叫用方法 直接輸入列舉名稱 宣告結構變數 宣告類別變數
使用 static 修飾詞
包含事件及方法
介面實作
結構函式
型別系統 Value Type Value Type Reference Type
預設傳遞參數方式 Call by Value Call by Value Call by Reference
實體存放記憶體在Stack或Heap Stack Stack Heap
欄位初始設定式
指派成員內容值 可以,只能整數
功能 簡單 普通 較強

 

結構 (struct) 宣告方式:

[存取修飾詞] struct [結構名稱]
{
  [存取修飾詞] [資料型別] [變數名稱];
  [存取修飾詞] [資料型別] [變數名稱];
  ...
}

 

列舉 (enum) 宣告方式:

[存取修飾詞] enum [列舉名稱] : [資料型別]
{
  [成員1],
  [成員2],
  ...
  [成員n]
}

 

十二月 25

[客戶管理程式開發] 雛形

程式 1 個回應 »   瀏覽人數:[ 1,098user+990bot ]

前些日子有做到到客戶關係管理的簡報,突然有的開發的動機,本程式採用 C# 撰寫,目前正在開發階段,未來不排除朝開放原始碼方向,大家集思廣益,功能方面目前還在思考當中,基本上該有的功能應該都會有。

今天完成了基本的介面,以及資料繫結的項目,放個照片上來,讓大家有個印象。

十二月 25

Access 常用時間日期函數

程式 沒有回應 »   瀏覽人數:[ 2,989user+1,513bot ]

以下是日期函數用法,提供你方式,你自己可以做到的:

Year()函數:取得日期資料內的年份值
Year(#2003/03/01#),顯示結果2003

(繼續閱讀 »)

十二月 08

C# 比較字串

程式 4 個回應 »   瀏覽人數:[ 1,615user+1,366bot ]

C# 屬於強型別的資料型態,所以在型別方面,編譯器檢查的很嚴格,所以一些在 VB.NET 中習慣的用法,拿到 C# 中就會出現錯誤。

舉例來說 C# 不能使用 0 或 1 來替代布林值,而字串也不能直接比較,這對我們剛開始會造成一些困擾!下面 VB.NET 的用法如果拿到 C# 中使用就會出錯

VB.NET:
  1. Dim a As String = "111"
  2. Dim b As String = "111"
  3. IF a = b THEN
  4. ...
  5. END IF

C# 針對比較字串有兩個比較常用的函數:

String.Compare  比較兩個字串的值。傳回整數值
String.Equals 比較兩個字串的值。傳回布林值

C#中改用比較字串的函數

C#:
  1. String a = "111";
  2. String b = "222";
  3. if(String.Equals(a,b))
  4. {
  5.     ....
  6. }
  7. else
  8. {
  9.     ....
  10. }

參考資料:C#比較字串(MSDN)

十二月 08

SQL Server 中易混淆的數據類型

程式 沒有回應 »   瀏覽人數:[ 589user+786bot ]

本文摘自「藍色理想」http://www.blueidea.com/tech/program/2004/1724.asp。

(1)char、varchar、text和nchar、nvarchar、ntext
char 和varchar的長度都在1到8000之間,它們的區別在於char是定長字符數據,而varchar是變長字符數據。所謂定長就是長度固定的,當輸入的數據長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字符數據則不會以空格填充。text存儲可變長度的非 Unicode數據,最大長度為2^31-1(2,147,483,647)個字符。

後面三種數據類型和前面的相比,從名稱上看只是多了個字母"n",它表示存儲的是Unicode數據類型的字符。寫過程序的朋友對Unicode應該很瞭解。字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為瞭解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較:nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。

(2)datetime和smalldatetime
datetime:從1753年1月1日到9999年12月31日的日期和時間數據,精確到百分之三秒。
smalldatetime:從1900年1月1日到2079年6月6日的日期和時間數據,精確到分鍾。

(3)bitint、int、smallint、tinyint和bit
bigint:從-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型數據。
int:從-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型數據。
smallint:從-2^15(-32,768)到2^15-1(32,767)的整數數據。
tinyint:從0到255的整數數據。
bit:1或0的整數數據。

(4)decimal和numeric
這兩種數據類型是等效的。都有兩個參數:p(精度)和s(小數位數)。p指定小數點左邊和右邊可以存儲的十進制數字的最大個數,p必須是從 1到38之間的值。s指定小數點右邊可以存儲的十進制數字的最大個數,s必須是從0到p之間的值,默認小數位數是0。

(5)float和real
float:從-1.79^308到1.79^308之間的浮點數字數據。
real:從-3.40^38到3.40^38之間的浮點數字數據。在SQL Server中,real的同義詞為float(24)。

十一月 25

微軟現在也想搞自由軟體這一套,連續推出了 Express 系列,不過不免詬病一下,既然要免費了為何不開放多一點功能,像 SQL Server 2005 Express 就少了很多功能,不過就整體看起來,還是比 Access 好多了。

SQL Server 2005 Express 有 SQL Server Management Studio Express 來進行圖形化管理,不過卻沒有匯入匯出的功能,有點不方便,但是可以利用其他方法來達成這個匯入功能。

但要使用SQL指令匯入需要先開啟OPENROWSET才能執行匯入功能。

依序操作如下:

Microsoft SQL Server 2005 > 組態工具 > SQL Server 2005 介面組態 > 功能的介面區組態 > 勾選「啟用OPENROWSET和OPENDATASOURCE支援」

將要匯入的Excel檔就定位,例如放在D:\testdata\zipcode.xls,檢查一下,第一行是欄位名稱,第二行起是資料的部分,然後工作表名稱可以維持原本的Sheet1或是自己重新命名(記得下面的Sheet1$要配合修改)
接著就可以執行

SQL:
  1. SELECT * INTO zone FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
  2. 'Excel 8.0;Database=D:\testdata\zipcode.xls', [Sheet1$])

十一月 11

C# 陣列的宣告方式

程式 沒有回應 »   瀏覽人數:[ 7,806user+1,944bot ]

剛開始接觸 C# ,它的宣告方式跟 C/C++,表面上看起來好像相同,不過仔細一看,卻和我習慣方式不一樣,例如在 VB 裡宣告一個陣列:Dim arr1() As String = { }, 在 C# 裡面卻是這樣宣告的:String[] arr1 = { };,有點不習慣,不過看久了也還好。

(繼續閱讀 »)

十一月 11

C# 簡介

程式 1 個回應 »   瀏覽人數:[ 1,223user+1,266bot ]

       好吧!我知道我必須踏入這個萬惡的深淵裡,在現今兩大主流 (JAVA、C#) 中尋找最適合我的武器,雖然我很喜歡 VB,但是看在正規的程式設計師眼中,VB 就像是玩具一般,尤其上課老師談到 VB 時,眼中流露出的不屑,真是令我感到萬般不自在,真想舉手幹橋他一番,VB 不是原罪,在 DOT.NET 時代中,VB 已經蛻化成完整物件導向語言,加上多執行緒、泛型,其實真的沒什麼好詬病的,VB 不再是玩具,不再是小孩玩泥巴,不過也大大提高了學習的曲線。

(繼續閱讀 »)

九月 12
VB.NET:
  1. '建立 DataAdapter 物件
  2.     Dim objCmd As New OleDbDataAdapter("Select * From 成績單", objConn)
  3. '建立 CommandBuilder 物件
  4.     Dim objCB As OleDbCommandBuilder = New OleDbCommandBuilder(objCmd)
  5. '建立 DataSet 物件,並將 SelectCommand 的執行結果置入 DataSet 物件中
  6.    Dim DS As New DataSet()
  7.    objCmd.Fill(DS, "成績單")
  8. '建立 myTable 為 DataTable 物件,將 DataSet 物件的成績單資料表指定給 myTable   
  9.    Dim myTable As DataTable = DS.Tables("成績單")
  10. '修改資料列
  11.    myTable.Rows(6)("統計") = 80
  12. '刪除資料列
  13.    myTable.Rows(4).Delete()
  14. '新增資料列
  15.    Dim myRow As DataRow = myTable.NewRow()
  16.    myRow("學號") = "A8608011"
  17.    myRow("姓名") = "小丸子"
  18.    myRow("會計") = 95
  19.    myRow("統計") = 70
  20.    myTable.Rows.Add(myRow)
  21. '將 DataSet 物件的資料更新到來源資料
  22.    objCmd.Update(DS, "成績單")