總網頁瀏覽量

關於我自己

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

2015年9月30日 星期三

【SQL Server Management Studio】下載練習用範例資料庫 - 附加資料庫

****************************************
*          電腦環境:Windows 7 64bit                *
*          SQL Server Management Studio版本:2008 R2          *
****************************************

Microsoft所提供的下載點:http://www.microsoft.com/en-us/download/details.aspx?id=23654

點一下「Download」就可以下載了,得到SQL2000SampleDb.msi

點兩下「SQL2000SampleDb.msi」安裝,完成後產出資料夾內有多個檔案
instnwnd.sql
instpubs.sql
NORTHWND.LDF
NORTHWND.MDF
PUBS.MDF
PUBS_LOG.LDF
ReadMe_SQL2000SampleDbScripts.htm

開啟SQL Server Management Studio並登入


準備掛上資料庫.mdf
滑鼠右鍵點擊「資料庫」>「附加」

「加入」



找到要附加的NORTHWND.MDF

NORTHWND.MDF:資料
NORTHWND.LDF:紀錄檔


倘若今天只剩下.mdf檔,丟失了.LDF檔
就把找不到的這個.LDF按「移除」>然後「確定」即可
否則會出現錯誤訊息
標題: Microsoft SQL Server Management Studio
------------------------------

伺服器 'LISASST-PC\LISasst' 的 附加資料庫 失敗。  (Microsoft.SqlServer.Smo)

如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617.0+((KJ_RTM_GDR).110422-1901+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=附加資料庫+Server&LinkId=20476

------------------------------
其他資訊:

執行 Transact-SQL 陳述式或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)

------------------------------

檔案 "D:\MSSQL\DATA\Northwind_log.LDF" 的目錄查閱失敗,有作業系統錯誤 3(系統找不到指定的路徑。)。 (Microsoft SQL Server, 錯誤: 5133)

如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617&EvtSrc=MSSQLServer&EvtID=5133&LinkId=20476

------------------------------
按鈕:

確定
------------------------------


或是用指令的方式來附加資料庫
在工具列空白處按滑鼠右鍵,出現如下選單,要ˇSQL 編輯器

按一下「新增查詢」然後輸入
CREATE DATABASE 資料庫名稱 ON
(FILENAME = N'MDF檔所在路徑')
FOR ATTACH_REBUILD_LOG



展開資料庫>Northwind>資料表,可以看到表單如下
dbo.Categories
dbo.CustomerCustomerDemo
dbo.CustomerDemographics
dbo.Customers
dbo.Employees
dbo.EmployeeTerritories
dbo.Order Details
dbo.Orders
dbo.Products
dbo.Region
dbo.Shippers
dbo.Suppliers
dbo.Territories

記住我們要連的

server是:(local)\abc

databse是:Northwind

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

開啟Microsoft Visual Studio並建立新專案

建立
Button*3
ListBox*2



回到程式面撰寫如下



Imports System.Data.SqlClient

Public Class Form1

    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 LastName,TitleOfCourtesy, Region, ReportsTo 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())
                        '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
                End Using
            End Using
        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
End Class


按F5執行畫面如下

點一下button1
在程式中我們界定了"select LastName,TitleOfCourtesy, Region, ReportsTo from employees"
表示從資料表employees抓出欄位LastName’TitleOfCourtesy、Region、ReportsTo的值
並用dr儲存:Using dr As SqlDataReader = command.ExecuteReader()
(dr(0).ToString() & vbTab)表示抓第一位置的值
(dr(1).ToString() & vbTab)表示抓第二位置的值
(dr(2).ToString() & vbTab)表示抓第三位置的值
(dr(3).ToString() & vbTab)表示抓第四位置的值



點一下button2
在程式中我們界定了"select * from employees"
表示從資料表employees抓出所有欄位的值
但是
Dim intID As Integer = dr.GetOrdinal("employeeid")
Dim intDesc As Integer = dr.GetOrdinal("FirstName")
表示我們只要抓欄位employeeid和FirstName
並以(dr(intID).ToString() & " – ") + dr(intDesc).ToString()的形式呈現

點一下button3
在程式中我們界定了"select * from employees;select * from products"
一次抓2張table的所有欄位值呢
            Using command As New SqlCommand(qs, cn)
                Using dr As SqlDataReader = command.ExecuteReader()
                    While (dr.Read())
            '第1張table的資料
                    End While
                    dr.NextResult()
                    While (dr.Read())
            '第2張table的資料
                    End While
                End Using
            End Using


終於寫完




沒有留言:

張貼留言