1扛芽、設(shè)置窗體的屬性
Name: 給窗體起一個名字(每一個窗體都是一個對象)
FormBorderStyle: 設(shè)置框體的邊框樣式? 6個值
None:? 去掉邊框
FixedSingle: 不允許拖動邊框
SizeAble:? 默認(rèn)值
Text: 設(shè)置窗體的標(biāo)題
ICon:? 設(shè)置窗體及任務(wù)欄顯示的圖標(biāo)
BackgroundImage:? 設(shè)置窗體背景圖片
BackColor:? 設(shè)置窗體背景顏色
StartPosition:? 設(shè)置窗體默認(rèn)顯示位置
CenterScreen:? 居中顯示
CenterParent: 在父窗體中間顯示
WindowState:? 設(shè)置打開時最大化敬辣、最小化建蹄、正常
Maximized:最大化
MInimized: :最小化
Normal: 正常窗體大小
2棍潘、常用的控件
在工具箱里面找---視圖--工具箱
1、Label:文本標(biāo)簽 顯示文字? 設(shè)置Text屬性值
2匠童、TextBox:? 文本框
3埂材、ComboBox:組合框(下拉框)
設(shè)置下拉列表直接添加項(xiàng),一個項(xiàng)單獨(dú)一行
4汤求、Button: 按鈕? 設(shè)置顯示文字設(shè)置Text
3俏险、取控件的值
空間名.Text
string? name=? txt_user.Text;
4、事件
窗體的載入事件
load事件:直接雙擊窗體進(jìn)入的事件就是載入事件
click: 單擊事件
5扬绪、消息框:
1竖独、? MessageBox.Show(提示語句);
2、? MessageBox.Show(提示語句,標(biāo)題);
3挤牛、? MessageBox.Show(提示語句,標(biāo)題预鬓,按鈕);
4、? MessageBox.Show(提示語句,標(biāo)題赊颠,按鈕,圖標(biāo));
6劈彪、消息框的返回值
返回值是 DialogResult 類型
判斷的時候也需要用到枚舉去判斷
DialogResult? res= MessageBox.Show("帳號密碼不能為空","警告",
MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
if (res==DialogResult.OK)
{
txt_name.Focus();//? 獲得焦點(diǎn)
}
7竣蹦、窗體間的傳值
A窗體傳值傳到B窗體
1、在B窗體添加一個public修飾的字段name
2沧奴、在A窗體創(chuàng)建B窗體對象后給B窗體的這個字段賦值
B? b=new B();
b.name="張三";
b.Show();
8痘括、 使用數(shù)據(jù)庫連接工具類和 業(yè)務(wù)分離,提高程序可維護(hù)性
1、新建一個數(shù)據(jù)庫連接工具類 ConnectionUtil
1.1? 先寫數(shù)據(jù)庫連接字符串
string constr = @"Data Source=.;Initial Catalog=MySchool;User ID=root;pwd=root";
1.2? 定義一個SqlConnection類型的字段? ? _conn
1.3? 封裝這個字段 去掉set(不需要從外面賦值)
1.4? 在get里面做判斷纲菌,如果_conn字段是空值(也就是沒有創(chuàng)建這個對象)
public SqlConnection Conn
{
get {
if (_conn==null)
{
_conn = new SqlConnection(constr);
}
return _conn;
}
注意點(diǎn):
在屬性里面出現(xiàn)的對象都是小寫的字段,如果使用大寫的屬性挠日,會出現(xiàn)無限遞歸調(diào)用,
導(dǎo)致內(nèi)存溢出
1.5 自定義一個數(shù)據(jù)庫連接對象打開的方法
(如果直接使用連接對象.Open(),一旦數(shù)據(jù)庫連接對象沒有關(guān)閉時再次調(diào)用Open()會報(bào)異常)
1.5.1
public void OpenConn()
{
//ConnectionState? 枚舉類型翰舌,指的是數(shù)據(jù)庫連接對象的當(dāng)前狀態(tài)嚣潜,需要引入命名空間
// Closed:關(guān)閉? OPen:打開? Broken:阻塞狀態(tài)
if (Conn.State == ConnectionState.Closed)
{
Conn.Open();
}
else if (Conn.State == ConnectionState.Broken)
{
//? 如果是阻塞狀態(tài)? 需要先關(guān)閉 再打開
Conn.Close();
Conn.Open();
}
}
注意點(diǎn): 打開或關(guān)閉方法里面使用的數(shù)據(jù)庫連接對象都是用屬性而不用字段
1.6 自定義關(guān)閉數(shù)據(jù)庫連接對象的方法
public void CloseConn()
{
//ConnectionState.Closed 指的是數(shù)據(jù)庫連接對象的當(dāng)前狀態(tài)
// closed:關(guān)閉? OPen:打開? Broken:阻塞狀態(tài)
if (Conn.State == ConnectionState.Open || Conn.State == ConnectionState.Broken)
{
Conn.Close();
}
}
工具類的用處:
以后需要使用連接對象時,只需要創(chuàng)建工具類的對象
通過對象.Conn屬性獲得連接對象
通過對象.OpenConn()? 打開數(shù)據(jù)庫連接對象
通過對象.CLoseConn()? 關(guān)閉數(shù)據(jù)庫連接對象
9椅贱、創(chuàng)建數(shù)據(jù)庫操作類--提供給業(yè)務(wù)邏輯類處理數(shù)據(jù)庫數(shù)據(jù)的一些方法
對數(shù)據(jù)庫的增刪改查的方法
9.1? 定義一個數(shù)據(jù)庫連接工具類對象(對象.Conn獲取連接對象)
ConnectionUtil? connUtil=new ConnectionUtil();
自定義方法? ---查詢的方法
public? ? SqlDataReader? GetStudentByNo(string sql)
{
//? 1懂算、獲得數(shù)據(jù)庫連接對象
SqlConnection? sqlConn=? ? connUtil.Conn;
//? 2、打開數(shù)據(jù)庫連接
connUtil.OpenConn();
//? 3庇麦、創(chuàng)建Command對象
SqlCommand? mand=new SqlCommand(sql,sqlConn)
//? 4计技、執(zhí)行操作? SqlCommand調(diào)用對應(yīng)的執(zhí)行方法
SqlDataReader? reader= mand.ExecuteReader()? //? 查詢多行時使用
return reader;
}
//? ? 統(tǒng)計(jì)學(xué)生總?cè)藬?shù)的方法
public? ? int? CountStudent(string sql)
{
//? 1、獲得數(shù)據(jù)庫連接對象
SqlConnection? sqlConn=? ? connUtil.Conn;
//? 2山橄、打開數(shù)據(jù)庫連接
connUtil.OpenConn();
//? 3垮媒、創(chuàng)建Command對象
SqlCommand? mand=new SqlCommand(sql,sqlConn)
//? 4、執(zhí)行操作? SqlCommand調(diào)用對應(yīng)的執(zhí)行方法
int? count=(int) mand.ExecuteScalar()? //? 查詢單個值時使用
// ? 5航棱、關(guān)閉數(shù)據(jù)庫連接對象
connUtil.CloseConn()
return count;
}
//? 執(zhí)行增刪改通用的方法
public? ? int? CountStudent(string sql)
{
//? 1睡雇、獲得數(shù)據(jù)庫連接對象
SqlConnection? sqlConn=? ? connUtil.Conn;
//? 2、打開數(shù)據(jù)庫連接
connUtil.OpenConn();
// 3丧诺、創(chuàng)建Command對象
SqlCommand? mand=new SqlCommand(sql,sqlConn)
// 4入桂、執(zhí)行操作? SqlCommand調(diào)用對應(yīng)的執(zhí)行方法
int? count= mand.ExecuteNonQuery()//? 增刪改時調(diào)用? 返回受影響(執(zhí)行成功)的行數(shù)
// 5、關(guān)閉數(shù)據(jù)庫連接對象
connUtil.CloseConn()
return count;
}