1. 程式人生 > >學習筆記(三)——數據庫命令的應用

學習筆記(三)——數據庫命令的應用

cal 名稱 nbsp ges bsp tex 密碼 連接字符串 集合

學習筆記(三)——數據庫命令的應用

一、存儲過程

(一)基本概念

存儲過程就是固化SQL數據庫系統內部的SQL語句,這樣做的好處是可以提高執行效率,提高數據庫的安全性,減少網絡流量。

(二)創建存儲過程

1、基本語法

CREATE PROCEDURE procedure_name

{ @parameter data_type}

As

--具體語句

Go

--可加可不加,Go的意思是另起一頁,若下邊不寫語句可以不加

2、在存儲過程usp_insertUser中插入用戶

GO

CREATE PROCEDURE usp_insertUser

(@No VARCHAR(10)

,@Password VARCHAR(20))

AS

BEGIN

INSERT tb_User

(No,Password)

VALUES

(@No

,HASHBYTES(‘MD5‘,@Password));

END

(三)調用存儲過程

string strsql = "Data Source=localhost;Initial Catalog=######;Integrated Security=True";//數據庫鏈接字符串

string sql = " usp_insertUser ";//要調用的存儲過程名

SqlConnection conn = new SqlConnection(strsql);//SQL數據庫連接對象,以數據庫鏈接字符串為參數

SqlCommand comStr = new SqlCommand(sql, conn);//SQL語句執行對象,第一個參數是要執行的語句,第二個是數據庫連接對象

comStr.CommandType = CommandType.StoredProcedure;//因為要使用的是存儲過程,所以設置執行類型為存儲過程

//依次設定存儲過程的參數

comStr.Parameters.Add("@Param1", SqlDbType.Text).Value = "####";

conn.Open();//打開數據庫連接

MessageBox.Show(comStr.ExecuteNonQuery().ToString());//執行存儲過程

SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(comStr);

DataTable DT=new DataTable ();

SqlDataAdapter1.Fill(DT);

dataGridView1.DataSource = DT;

conn.Close();//關閉連接

二、面向對象_類

(一)類的定義

1、基本語法

<訪問修飾符>class<類名>

{ 類成員(字段、屬性、方法、事件)}

2、類的修飾符

Public

公有訪問,不受任何限制

Private

私有訪問,只限於本類成員訪問,子類、實例都不能訪問

Protected

保護訪問。只限於本類和子類訪問,實例不能訪問

Internal

內部訪問。只限於本項目內訪問,其他不能訪問

Protected internal

內部保護訪問。只限於本項目或是子類訪問,其他不能訪問

(二)類的實例化

1、基本語法

<類名> <實例名>= new <類名>

{ 構造函數的參數}

(三)構造函數

又稱構造方法

<訪問修飾符> 返回值類型 方法名 (參數列表)

{

方法體

}

【例】

技術分享

技術分享

附:課程示例

在登錄控件下的代碼:

this.User.No = this.txb_UserNo.Text.Trim();

//將文本框的文本清除首尾的空格後,賦予用戶的相應屬性;

this.User.Password = this.txb_Password.Text.Trim();

this.User.LogIn(); //調用用戶的方法登錄,並將各文本框的文本作為參數;

MessageBox.Show(this.User.Message); //在消息框中顯示登錄消息;

if (!this.User.HasLoggedIn) //若用戶未完成登錄,即登錄失敗;

{

this.txb_Password.Focus(); //密碼文本框獲得焦點;

this.txb_Password.SelectAll(); //密碼文本框內所有文本被選中;

}

我們僅需用這簡短的代碼就可以完成登錄的過程,但是我們還需要編寫相關類的代碼。

因為引用SQL數據庫操作類,一般在進行數據庫操作的時候會引入命名空間。所以在編寫類的時候,我們需要在頁面上方寫下如下代碼:

using System.Data; //包含各類數據對象;

using System.Data.SqlClient; //包含訪問SQL Server所需的各類對象;

using System.Configuration; //包含訪問配置文件所需的配置管理器;需事先在本項目的“引用”中添加對System.Configuration的引用;

這個時候我們可以編寫相關類:

public class User

{

/// 公有屬性:用戶號;

public string No

{

get;

set;

}

/// 公有屬性:密碼;

public string Password

{

get;

set;

}

/// 公有屬性:是否完成登錄;

public bool HasLoggedIn

{

get;

set;

}

/// 公有屬性:消息;

/// (用於返回驗證結果)

public string Message

{

get;

set;

}

/// 公有方法:登錄;

public void LogIn()

{

SqlConnection sqlConnection = new SqlConnection(); //聲明並實例化SQL連接;

sqlConnection.ConnectionString =

ConfigurationManager.ConnectionStrings["Sql"].ToString(); //配置管理器從App.config讀取連接字符串;

SqlCommand sqlCommand = sqlConnection.CreateCommand(); //調用SQL連接的方法CreateCommand來創建SQL命令;該命令將綁定SQL連接;

sqlCommand.CommandText = "usp_selectUserCount"; //指定SQL命令的命令文本;命令文本為存儲過程名稱;(運用到了2.5的知識。)

sqlCommand.CommandType = CommandType.StoredProcedure; //SQL命令的類型設為存儲過程;

sqlCommand.Parameters.AddWithValue("@No", this.No); //向SQL命令的參數集合添加參數的名稱、值;

sqlCommand.Parameters.AddWithValue("@Password", this.Password);

sqlConnection.Open(); //打開SQL連接;

int rowCount = (int)sqlCommand.ExecuteScalar(); //調用SQL命令的方法ExecuteScalar來執行命令,並接受單個結果(即標量);

sqlConnection.Close(); //關閉SQL連接;

if (rowCount == 1) //若查得所輸用戶號相應的1行記錄;

{

this.HasLoggedIn = true; //完成登錄;

this.Message = "登錄成功。"; //給出正確提示;

}

else //否則;

{

this.HasLoggedIn = false; //未完成登錄;

this.Message = "用戶號/密碼有誤,請重新輸入!"; //給出錯誤提示;

}

}

}

學習筆記(三)——數據庫命令的應用