2011年6月24日

[C#] 資料庫管理系統

C#製作的員工、訂單、客戶管理系統

使用ADO.NET元件存取Access資料庫


主程式畫面(上)
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database2.accdb";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM " + table + " ORDER BY " + ordkey,conn);
da.Fill(ds, table);
dataGridView1.DataSource = ds.Tables[table];
da.Dispose();
ds.Dispose();
conn.Dispose();
程式碼連線的某區段

點我下載專案黨

2011年6月4日

[JAVA] Socket 和 Swing 測試

JAVA使用Socket傳送檔案小測試

實作了伺服器端與客戶端,可傳送可接收

伺服器端的儲存位置並 沒有 寫成為動態選擇,目前為寫死狀態
Server連接port也還沒寫入偵測有無佔用(如果有占用會出錯= =||)

總之還有很多BUG....

主要目的是測試GUI介面和結合multi thread的實作



GUI介面




原始碼下載請點我

2011年5月22日

[VB] 實作HTTP檔案下載(多執行緒)



Imports System.Net
Imports System.IO
Imports System.Threading
Public Class Form1
    '跨執行緒使用的委派
    Public Delegate Sub ChangeUpdate()
    Public Delegate Sub ChangeSet(ByVal max As Integer, ByVal min As Integer)
    private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '使用new thread產生執行緒
        '使用Parameterized傳遞參數
        Dim thread1 As New Thread(New ParameterizedThreadStart(AddressOf downFile))
        thread1.Start(TextBox1.Text)
    End Sub

    Private Sub downFile(ByVal url As Object)
        Dim url2 As String = url.ToString()

        'HttpWebRequest產生Http的請求並用HttpWebResponse接收
        Dim request As HttpWebRequest = WebRequest.Create(url)
        Dim response As HttpWebResponse = request.GetResponse()

        '找尋Http標頭中的檔案長度
        Dim length As Integer = Convert.ToInt32(response.GetResponseHeader("content-length"))

        '因為下載時不是用UI Thread,所以必須使用Invoke來改變ProgressBar的屬性
        Me.Invoke(New ChangeSet(AddressOf SetBar), New Object() {length, 0})

        '開啟一個檔案空間並命名為"test.jpg"
        '檔名可視下載檔案改變,或是解析下載網址來判斷
        Dim fs As FileStream = New FileStream("test.jpg", FileMode.Create)
        Dim br As BinaryReader = New BinaryReader(response.GetResponseStream())
        Dim bw As BinaryWriter = New BinaryWriter(fs)

       '開始讀取串流,邊讀邊寫入
        For i = 0 To length - 1
            bw.Write(br.ReadByte)
            '同樣因為不是UI Thread所以透過委派改變ProgressBar屬性
            Me.Invoke(New ChangeUpdate(AddressOf UpdateBar))
        Next
        br.Close()
        bw.Close()
        fs.Close()
        response.Close()
    End Sub

    Private Sub SetBar(ByVal max As Integer, ByVal min As Integer)
        ProgressBar1.Maximum = max
        ProgressBar1.Minimum = min
    End Sub

    Private Sub UpdateBar()
        ProgressBar1.Value = ProgressBar1.Value + 1
    End Sub
End Class


使用HttpWebRequest和HttpWebResponse下載Http協定的檔案

為了避免在下載時等待過久而造成主執行緒(UI Thread)死當的情況

所以使用多執行緒下載