總網頁瀏覽量

關於我自己

我的相片
人生的必修課是接受無常,人生的選修課是放下執著。

2015年10月1日 星期四

【Microsoft Visual Studio】基礎篇 - 建立DataSet和DataGridView - 2010 Professional

****************************************
*          電腦環境:Windows 7 64bit                *
*          Microsoft Visual Studio版本:2010 Professional         *
****************************************

沿用上一個範例繼續http://bedingfield-tsots.blogspot.tw/2015/09/sql-server-management-studio_30.html

將DataSet拖曳到Design畫面中

這裡選不具型別資料庫集Untyped dataset

對!然後畫面中就看不見DataSet了!
畫面下方是可以看到標幟DataSet1
接著要去變更Tables屬性

跳出新畫面,按一下「Add」

就多了一個叫「Table1」的Members
再去點一下「Columns」的屬性

這邊的「Add」


按四次!


上述畫面按「Close」關閉後
回來再拉一個「DataGridView」
點一下「Choose Data Source」的下拉箭頭

選Other Data Sources > Form1 List Instances > DataSet1 (前面有執行才會出現)


調一下DataGridView的寬高
在其DataMember屬性的下拉箭頭點一下

選到「Table1」
就會出現如下的表格在DataGridView中了

****************************************
*          程式語法:Visual Basic                  *
****************************************

主要差異用底下黃底標示

Imports System.Data.SqlClient

Public Class Form1

    Private resourceCulture As Global.System.Globalization.CultureInfo
    'Protected WithEvents Repeater1 As System.Web.UI.WebControls.Repeater

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '先將listBox清空
        listBox1.Items.Clear()
        Dim cs As String = "server=(local)\abc;database=Northwind;integrated security=SSPI;"
        Dim qs As String = "SELECT * FROM [Northwind].[dbo].[Employees]"

        '1.引用SqlConnection物件連接資料庫 
        'Using cn As New SqlConnection(cs)
        Using cn As New SqlClient.SqlConnection(cs)
            '2.開啟資料庫 
            cn.Open()
            Dim da As SqlDataAdapter = New SqlDataAdapter(qs, cs)
            Using command As New SqlCommand(qs, cn)

                Dim ds As DataSet = New DataSet()
                da.SelectCommand = command
                da.Fill(ds)
                DataGridView1.AutoGenerateColumns = True
                DataGridView1.DataSource = ds.Tables(0)

            End Using
            cn.Close()
            cn.Dispose()
        End Using
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '先將listBox清空
        listBox1.Items.Clear()
        Dim cs As String = "server=(local)\abc;database=Northwind;integrated security=SSPI;"
        Dim qs As String = "select * from employees"
        '1.引用SqlConnection物件連接資料庫
        Using cn As New SqlConnection(cs)
            '2.開啟資料庫
            cn.Open()
            '3.引用SqlCommand物件
            Using command As New SqlCommand(qs, cn)
                '4.搭配SqlCommand物件使用SqlDataReader
                Using dr As SqlDataReader = command.ExecuteReader()
                    While (dr.Read())
                        Dim intID As Integer = dr.GetOrdinal("employeeid")
                        Dim intDesc As Integer = dr.GetOrdinal("FirstName")
                        listBox1.Items.Add((dr(intID).ToString() & " – ") + dr(intDesc).ToString())
                    End While
                End Using
            End Using
        End Using
    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        '先將listBox清空
        listBox1.Items.Clear()
        listBox2.Items.Clear()
        Dim cs As String = "server=(local)\abc;database=Northwind;integrated security=SSPI;"
        Dim qs As String = "select * from employees;select * from products"

        '1.引用SqlConnection物件連接資料庫
        Using cn As New SqlConnection(cs)
            '2.開啟資料庫
            cn.Open()
            '3.引用SqlCommand物件
            Using command As New SqlCommand(qs, cn)
                '4.搭配SqlCommand物件使用SqlDataReader
                Using dr As SqlDataReader = command.ExecuteReader()
                    While (dr.Read())
                        '5.判斷資料列是否為空
                        If Not dr(0).Equals(DBNull.Value) Then
                            listBox1.Items.Add((((dr(0).ToString() & vbTab) + dr(1).ToString() & vbTab) + dr(2).ToString() & vbTab) + dr(3).ToString())
                        End If
                    End While
                    '6.下一個查詢結果
                    dr.NextResult()
                    While (dr.Read())
                        If Not dr(0).Equals(DBNull.Value) Then
                            listBox2.Items.Add((((dr(0).ToString() & vbTab) + dr(1).ToString() & vbTab) + dr(2).ToString() & vbTab) + dr(3).ToString())
                        End If
                    End While
                End Using
            End Using
        End Using
    End Sub

    Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

    End Sub
End Class

按F5執行看看


點一下Button1
資料庫中的資料就進入DataGridView1了!!!(累翻)



****************************************
*               參考資料                   *
****************************************

MS SQL Server 新增 刪除 更新 查詢 四大基本指令

最近一樣的忙碌,不過昨天終於搞定系統文件了,今天開始要好好寫程式了,離上次PO文也半個月之譜了,這次要分享的文章是屬於基礎篇,關於MS SQL Server的四大基本指令,相信很多剛剛開始寫程式的人這方面一定很頭痛,除了對於程式語言本身不熟悉,ADO.Net也不了解,還要使用SQL語法與資料庫溝通,剛開始寫程式的我也遇到這種麻煩,很討厭,所以為了讓新手能快速上手,就決定分享一下簡單又好學的內容。

在Visual C#中,操作MS SQL Server必須要有四個主要的元件,分別為:SqlConnection、SqlDataAdapter、SqlCommand、DataSet:
SqlConnection:表示 SQL Server 資料來源的唯一工作階段 (Session)。如果具有主從架構資料庫系統時,它就相當於伺服器的網路連接。
SqlDataAdapter:SqlDataAdapter 是 DataSet 和 SQL Server 之間的橋接器 (Bridge),用來擷取和儲存資料。
SqlCommand:建立 SqlCommand 的執行個體 (instance) 時,會將讀取/寫入屬性設定為其初始值。
DataSet:DataSet 從資料庫擷取之資料的記憶體中快取,為 ADO.NET 架構的主要元件。

1.新增
1String strSQL = " INSERT INTO TABLENAME (SCHEMA, SCHEMA, SCHEMA) VALUES (VALUES, VALUES, VALUES) ";
2SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=IP;User Id=ID; Password=PASSWORD; Initial Catalog=DBNAME");
3sqlConn.Open();
4SqlCommand sqlcommand = new SqlCommand(strSQL, sqlConn);
5sqlcommand.ExecuteNonQuery();
6sqlConn.Close();

2.刪除
1String strSQL = " DELETE FROM TABLENAME WHERESCHEMA = VALUE ";
2SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=IP;User Id=ID; Password=PASSWORD; Initial Catalog=DBNAME");
3sqlConn.Open();
4SqlCommand sqlcommand = new SqlCommand(strSQL, sqlConn);
5sqlcommand.ExecuteNonQuery();
6sqlConn.Close();

3.更新
1String strSQL = " UPDATE TABLENAME SET SCHEMA = VALUE WHERE SCHEMA = VALUE ";
2SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=IP;User Id=ID; Password=PASSWORD; Initial Catalog=DBNAME");
3sqlConn.Open();
4SqlCommand sqlcommand = new SqlCommand(strSQL, sqlConn);
5sqlcommand.ExecuteNonQuery();
6sqlConn.Close();

4.查詢
1String strSQL = " SELECT * FROM TABLENAME WHERE SCHEMA=VALUE ";
2SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=IP;User Id=ID; Password=PASSWORD; Initial Catalog=DBNAME");
3sqlConn.Open();
4SqlDataAdapter sqlDA = new SqlDataAdapter(strSQL, sqlConn);
5DataSet dataset = new DataSet();
6sqlDA.Fill(dataset);
7sqlConn.Close();
若要將查詢資料丟到DataGridView中,在sqlConn.Open()與sqlConn.Close()中間加入以下程式碼:
1DataGridView.AutoGenerateColumns = true;
2DataGridView.DataSource = dataset.Tables[0];

5.若要將值(VALUE)換成控制元件,例如:TEXTBOX、COMBOBOX...等,可利用【'"+TEXTBOX.TEXT+"'】這樣的語法直接替換。


沒有留言:

張貼留言