Board logo

標題: vb在資料庫的應用 [打印本頁]

作者: 呆呆    時間: 2011-2-15 13:20     標題: vb在資料庫的應用

本帖最後由 呆呆 於 2011-2-15 13:40 編輯

我們無論做什麼事,都會從外部接收訊息
過濾這些訊息成為有用的資料而存於電腦中,就可以方便日後存取
但是如果資料過於龐大,就不利於日後搜尋,檢索
當然,我們也可以利用實體資料庫,利如資料書面化,但所佔用的空間非常多
查詢困難,
所以電腦的資料庫就是我們現今最常使用的儲存資料庫的工具
儲存資料有儲存資料的規則性,我們時常看到網友們在excel上做出很多
很漂亮的報表,然後要求各板主們是否能將他們的報表自動化,無論是利用excel的公式
或者是利用vba,這個其實是不符合效益的,就現今的觀點而言,報表是最終輸出,我們一定
不會只要一種報表,而這不一定只是一種報表中很多都是由同一筆資料所組成,或由該筆
資料導出結果,如果我們在excel資料表中建立各儲存格中的關連,最後一定是忘了那一個
才是真正的主資料,而且主要資料被散在各資料表中,最後管理起來一定相當不便,一個錯
就全盤都錯,我們常看到老闆們因為求快,就要求只要做什麼就好了,其實這個就是造成日後
的困擾,清查起來很困難,而且更重要的是修改困難,因此我們才會時常建議,資料儲存最好就
是用一筆一筆的,不要像報表形式,因為就算是我們不用樞紐分析表,而用的是語言開發介面工具(vba,或是vb,C#...)
這樣子程式寫起來也比較輕鬆
作者: 呆呆    時間: 2011-2-15 15:52

本帖最後由 呆呆 於 2011-2-15 16:02 編輯

excel通常有每個儲蓄格他們的格式
設定這些格式有助於速度,讓電腦事先可以知道要如何處理資料
這和程式語言中的宣告是一樣的,定義這些格式和宣告的效用是等值的
但excel的格式沒那麼的嚴謹,要定義不定義都可以,這是因為excel不是
用來當資料庫的軟體,雖然小的資料庫我常用excel(如一個專案的資料用acess就太過火了)
設定這些格式讓我們可以很容易排序,搜索,我們只要想一下就知道了
如果有一筆資料,如一個班級中所有人的姓名身高,體重,那如果A的身高和B的身高不在同一欄
等同於你還要寫程式去排,這就是浪費,而且,如果你要輸出一張卡片,A的身高體重,是要給A的
B的身高體重是要給B的,難道你真的去做二張報表,A一張,B一張,當然不是,一定是我在報表上選
A就顯示A資料,選B就是B資料
作者: 呆呆    時間: 2011-2-15 16:58

本帖最後由 呆呆 於 2011-2-15 17:08 編輯

現今的資料庫系統大多為關連式資料庫系統
當然也有非關連式的,但關連式是現今的主流
為什麼會採取關連式,最主要的原因還是要避免空間的浪費

編號        班級        姓名        體重        身高
1        六年甲班        同學甲        60        160
2        六年甲班        同學乙        55        158
3        六年甲班        同學丙        49        150
4        六年甲班        同學丁        46        152
5        六年甲班        同學戊        50        155
6        六年甲班        同學己        52        162

例如, 班級的欄位 都是六年甲班,這代表這一欄的資料重複
我們可以把他獨立出來,另做班級資料表,然後採取關連將二個資料表搭上關係
那麼只要資料一多,節省的空間就很驚人,這就是關連式資料庫的優點,而這個動作
就叫正規化(Normalized)
作者: brewfan    時間: 2011-2-15 23:33

謝謝大大的分享,希望未來能多多指導小弟!!!
作者: 呆呆    時間: 2011-2-16 03:47

本帖最後由 呆呆 於 2011-2-16 06:17 編輯

我打開  visual basic 2008 Express 如圖,在檢視頁有資料庫總管選項
作者: 呆呆    時間: 2011-2-16 06:20

本帖最後由 呆呆 於 2011-2-16 06:21 編輯

我們在資料總管中有資料連結,在資料連結上用老鼠點右鍵會出現快顯功能表,選取加入資料連結
作者: 呆呆    時間: 2011-2-16 12:28

本帖最後由 呆呆 於 2011-2-16 12:30 編輯

出現視窗後,選擇我們要的資料庫所在位置,當然我的和別人一定會有所不同
然後可以按測試連線鈕,我採用的測是是sql sever 的北風資料庫 ,一般的資料庫demo 大都會利用這個來做
作者: 呆呆    時間: 2011-2-19 13:31

本帖最後由 呆呆 於 2011-2-19 13:36 編輯

當然這是一種連接方式
另一種是寫程式 ,我們 新增一個windowsform 專案,然後在表單上面新增二個按鈕
鍵入以下程式碼
  1. Imports System.Data.SqlClient
  2. Public Class Form1

  3.     Private CN As SqlConnection

  4.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


  5.         CN = New SqlConnection
  6.         CN.ConnectionString = "Data Source =.\SQLEXPRESS;" & _
  7.                               "AttachDbFilename=D:\NorthWind\NORTHWND.MDF;" & _
  8.                               "Integrated Security=True;Connect Timeout=30;User Instance=True"
  9.         CN.Open()
  10.         MessageBox.Show("資料庫開啓")


  11.     End Sub


  12.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  13.         CN.Close()
  14.         CN.Dispose()
  15.         MessageBox.Show("資料關閉")
  16.     End Sub

  17. End Class
複製代碼
當我們要開sql資料庫時,要利用 System.Data.SqlClient名稱空間下的SqlConnection物件
這個物件開啓資料庫之前,要給他一個連線字串 ConnectionString  , 我的連線字串一般不會和
其他人相同,然後我們就可以用 Open 方法來開啓
最後 資料庫用完時,別忘了要關掉,所以按鈕2就是負責關閉資料庫連線 並釋放資源
作者: 呆呆    時間: 2011-2-19 19:48

本帖最後由 呆呆 於 2011-2-19 19:50 編輯

sqlConnection有一個StateChange事件
它有一個傳遞的參數e可以告訴你所用的資料庫連線狀態
如果我們把程式碼改成如下,查看情況
  1. Imports System.Data.SqlClient


  2. Public Class Form1

  3.     Private CN As SqlConnection

  4.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


  5.         CN = New SqlConnection
  6.         CN.ConnectionString = "Data Source =.\SQLEXPRESS;" & _
  7.                               "AttachDbFilename=D:\NorthWind\NORTHWND.MDF;" & _
  8.                               "Integrated Security=True;Connect Timeout=30;User Instance=True"

  9.         AddHandler CN.StateChange, AddressOf CNOnStateChanging
  10.         CN.Open()
  11.         MessageBox.Show("資料庫開啓")


  12.     End Sub


  13.     Private Sub CNOnStateChanging(ByVal sender As Object, ByVal e As System.Data.StateChangeEventArgs)

  14.         MessageBox.Show(e.CurrentState.ToString)

  15.     End Sub

  16.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  17.         CN.Close()
  18.         CN.Dispose()
  19.         MessageBox.Show("資料關閉")
  20.     End Sub

  21. End Class
複製代碼

作者: 呆呆    時間: 2011-2-20 16:18

我們已經連上資料庫了,
但我們要如何讀取,編輯資料庫上的資料呢
ado.net 給了我們一個很簡單的物件來做這件事
就是command物件
作者: kevenpeter    時間: 2011-5-11 23:58

請教呆呆兄,如何建立資料庫,接收券商DDE Server
的報價,並將數據存入資料庫呢?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)