日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

传智播客数据绑定和数据库开发基础(第四季)-杨中科

發(fā)布時(shí)間:2023/12/20 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传智播客数据绑定和数据库开发基础(第四季)-杨中科 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(一)數(shù)據(jù)綁定、ListBox、DataGrid SQLServer基礎(chǔ)、SQLServer使用主鍵策略

?

(二)DataReader、DataSet、參數(shù)化查詢、防注入漏洞攻擊、SQLHelper

用戶界面中進(jìn)行登錄判斷。輸錯(cuò)三次禁止登陸(半小時(shí)),用數(shù)據(jù)庫(kù)記錄ErrorTimes。 數(shù)據(jù)導(dǎo)入:從文本文件導(dǎo)入用戶信息。易錯(cuò)點(diǎn):Parameter的重復(fù)添加。File.ReadAllLines() 數(shù)據(jù)導(dǎo)出:將用戶信息導(dǎo)出到文本文件。File.WriteAllLines()

省市聯(lián)動(dòng)選擇 手機(jī)號(hào)碼歸屬地查詢

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.SqlClient; 10 11 namespace adonet 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void button1_Click(object sender, EventArgs e) 21 { 22 SqlHelper.ExecuteNonQuery("insert into T_Student(Name,Age) values('a',33)"); 23 DataTable table = SqlHelper.ExecuteDataTable("select * from T_Student where Age=@Age or Name=@Name", 24 new SqlParameter("@Age", 26), new SqlParameter("name", "劉洋")); 25 foreach (DataRow row in table.Rows) 26 { 27 string name = (string)row["name"]; 28 MessageBox.Show(name); 29 } 30 } 31 } 32 } View Code 1 namespace adonet 2 { 3 partial class Form1 4 { 5 /// <summary> 6 /// 必需的設(shè)計(jì)器變量。 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// 清理所有正在使用的資源。 12 /// </summary> 13 /// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param> 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows 窗體設(shè)計(jì)器生成的代碼 24 25 /// <summary> 26 /// 設(shè)計(jì)器支持所需的方法 - 不要 27 /// 使用代碼編輯器修改此方法的內(nèi)容。 28 /// </summary> 29 private void InitializeComponent() 30 { 31 this.button1 = new System.Windows.Forms.Button(); 32 this.SuspendLayout(); 33 // 34 // button1 35 // 36 this.button1.Location = new System.Drawing.Point(88, 78); 37 this.button1.Name = "button1"; 38 this.button1.Size = new System.Drawing.Size(75, 23); 39 this.button1.TabIndex = 0; 40 this.button1.Text = "button1"; 41 this.button1.UseVisualStyleBackColor = true; 42 this.button1.Click += new System.EventHandler(this.button1_Click); 43 // 44 // Form1 45 // 46 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 47 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 48 this.ClientSize = new System.Drawing.Size(284, 261); 49 this.Controls.Add(this.button1); 50 this.Name = "Form1"; 51 this.Text = "Form1"; 52 this.ResumeLayout(false); 53 54 } 55 56 #endregion 57 58 private System.Windows.Forms.Button button1; 59 } 60 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Windows.Forms; 5 6 namespace adonet 7 { 8 static class Program 9 { 10 /// <summary> 11 /// 應(yīng)用程序的主入口點(diǎn)。 12 /// </summary> 13 [STAThread] 14 static void Main() 15 { 16 Application.EnableVisualStyles(); 17 Application.SetCompatibleTextRenderingDefault(false); 18 Application.Run(new Form1()); 19 } 20 } 21 } View Code

sqlhelper

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data.SqlClient; 6 using System.Configuration; 7 using System.Data; 8 9 namespace adonet 10 { 11 class SqlHelper 12 { 13 private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; 14 15 public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) 16 { 17 using (SqlConnection conn = new SqlConnection(connStr)) 18 { 19 conn.Open(); 20 using (SqlCommand cmd = conn.CreateCommand()) 21 { 22 cmd.CommandText = sql; 23 cmd.Parameters.AddRange(parameters); 24 return cmd.ExecuteNonQuery(); 25 } 26 } 27 } 28 29 public static object ExecuteScalar(string sql, params SqlParameter[] parameters) 30 { 31 using (SqlConnection conn = new SqlConnection(connStr)) 32 { 33 conn.Open(); 34 using (SqlCommand cmd = conn.CreateCommand()) 35 { 36 cmd.CommandText = sql; 37 cmd.Parameters.AddRange(parameters); 38 return cmd.ExecuteScalar(); 39 } 40 } 41 } 42 43 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) 44 { 45 using (SqlConnection conn = new SqlConnection(connStr)) 46 { 47 conn.Open(); 48 using (SqlCommand cmd = conn.CreateCommand()) 49 { 50 cmd.CommandText = sql; 51 cmd.Parameters.AddRange(parameters); 52 53 SqlDataAdapter adapter = new SqlDataAdapter(cmd); 54 DataSet dataset=new DataSet(); 55 adapter.Fill(dataset); 56 return dataset.Tables[0]; 57 } 58 } 59 } 60 } 61 } View Code

?

(三)ADO.Net案例:登陸、數(shù)據(jù)導(dǎo)入導(dǎo)出、省市聯(lián)動(dòng)選擇

1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <connectionStrings> 4 <add name="dbConnStr" connectionString="data source=.;initial catalog=Scott;user id=sa;password=222222"/> 5 </connectionStrings> 6 </configuration> View Code

?

1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <connectionStrings> 4 <add name="myconnStr" connectionString ="data source=.;initial catalog=Scott;user id=sa;password=222222"/> 5 </connectionStrings> 6 </configuration> View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Adonet 7 { 8 class Area 9 { 10 public int AreaId 11 { get; set; } 12 public string AreaName 13 { get; set; } 14 } 15 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.SqlClient; 10 11 namespace Adonet 12 { 13 public partial class LoginWindow : Form 14 { 15 public LoginWindow() 16 { 17 InitializeComponent(); 18 } 19 20 private void btnLogin_Click(object sender, EventArgs e) 21 { 22 if (userName.Text.Length <= 0) 23 { 24 MessageBox.Show("請(qǐng)輸入用戶名"); 25 return; 26 } 27 if (passWord.Text.Length <= 0) 28 { 29 MessageBox.Show("請(qǐng)輸入密碼"); 30 return; 31 } 32 33 DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where username=@username;", 34 new SqlParameter("@username", userName.Text)); 35 if (table.Rows.Count <= 0) 36 { 37 MessageBox.Show("用戶名不存在"); 38 return; 39 } 40 if (table.Rows.Count > 1) 41 { 42 MessageBox.Show("不好啦,用戶名重復(fù)"); 43 return; 44 } 45 DataRow row = table.Rows[0]; 46 string dbPassword = (string)row["Password"]; 47 long id = (long)row["Id"]; 48 int errorTimes = (int)row["ErrorTimes"]; 49 if (errorTimes >= 3) 50 { 51 MessageBox.Show("輸入次數(shù)過(guò)多,用戶已經(jīng)鎖定"); 52 return; 53 } 54 if (passWord.Text != dbPassword) 55 { 56 SqlHelper.ExecuteNonQuery("update T_User set ErrorTimes=ErrorTimes+1 where Id=@Id", 57 new SqlParameter("@Id", id)); 58 MessageBox.Show("密碼錯(cuò)誤"); 59 } 60 else 61 { 62 MessageBox.Show("登陸成功"); 63 } 64 } 65 } 66 } View Code 1 namespace Adonet 2 { 3 partial class LoginWindow 4 { 5 /// <summary> 6 /// 必需的設(shè)計(jì)器變量。 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// 清理所有正在使用的資源。 12 /// </summary> 13 /// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param> 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows 窗體設(shè)計(jì)器生成的代碼 24 25 /// <summary> 26 /// 設(shè)計(jì)器支持所需的方法 - 不要 27 /// 使用代碼編輯器修改此方法的內(nèi)容。 28 /// </summary> 29 private void InitializeComponent() 30 { 31 this.userName = new System.Windows.Forms.TextBox(); 32 this.label1 = new System.Windows.Forms.Label(); 33 this.label2 = new System.Windows.Forms.Label(); 34 this.passWord = new System.Windows.Forms.TextBox(); 35 this.btnLogin = new System.Windows.Forms.Button(); 36 this.SuspendLayout(); 37 // 38 // userName 39 // 40 this.userName.Location = new System.Drawing.Point(135, 34); 41 this.userName.Name = "userName"; 42 this.userName.Size = new System.Drawing.Size(100, 21); 43 this.userName.TabIndex = 0; 44 // 45 // label1 46 // 47 this.label1.AutoSize = true; 48 this.label1.Location = new System.Drawing.Point(46, 37); 49 this.label1.Name = "label1"; 50 this.label1.Size = new System.Drawing.Size(41, 12); 51 this.label1.TabIndex = 1; 52 this.label1.Text = "用戶名"; 53 // 54 // label2 55 // 56 this.label2.AutoSize = true; 57 this.label2.Location = new System.Drawing.Point(58, 104); 58 this.label2.Name = "label2"; 59 this.label2.Size = new System.Drawing.Size(29, 12); 60 this.label2.TabIndex = 2; 61 this.label2.Text = "密碼"; 62 // 63 // passWord 64 // 65 this.passWord.Location = new System.Drawing.Point(135, 101); 66 this.passWord.Name = "passWord"; 67 this.passWord.Size = new System.Drawing.Size(100, 21); 68 this.passWord.TabIndex = 3; 69 // 70 // btnLogin 71 // 72 this.btnLogin.Location = new System.Drawing.Point(88, 161); 73 this.btnLogin.Name = "btnLogin"; 74 this.btnLogin.Size = new System.Drawing.Size(75, 23); 75 this.btnLogin.TabIndex = 4; 76 this.btnLogin.Text = "登錄"; 77 this.btnLogin.UseVisualStyleBackColor = true; 78 this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click); 79 // 80 // LoginWindow 81 // 82 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 83 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 84 this.ClientSize = new System.Drawing.Size(284, 261); 85 this.Controls.Add(this.btnLogin); 86 this.Controls.Add(this.passWord); 87 this.Controls.Add(this.label2); 88 this.Controls.Add(this.label1); 89 this.Controls.Add(this.userName); 90 this.Name = "LoginWindow"; 91 this.Text = "LoginWindow"; 92 this.ResumeLayout(false); 93 this.PerformLayout(); 94 95 } 96 97 #endregion 98 99 private System.Windows.Forms.TextBox userName; 100 private System.Windows.Forms.Label label1; 101 private System.Windows.Forms.Label label2; 102 private System.Windows.Forms.TextBox passWord; 103 private System.Windows.Forms.Button btnLogin; 104 } 105 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.SqlClient; 10 11 namespace Adonet 12 { 13 public partial class CitySelectWindow : Form 14 { 15 public CitySelectWindow() 16 { 17 InitializeComponent(); 18 } 19 20 Dictionary<string, int> dictProv = new Dictionary<string, int>(); 21 private void CitySelectWindow_Load(object sender, EventArgs e) 22 { 23 DataTable dtProv = SqlHelper.ExecuteDataTable("select * from AreaFull where AreaPid=0"); 24 //List<Area> listProv = new List<Area>(); 25 //Area area = new Area(); 26 foreach (DataRow row in dtProv.Rows) 27 { 28 //area.AreaId = (int)row["AreaId"]; 29 //area.AreaName = (string)row["AreaName"]; 30 //listProv.Add(area); 31 dictProv.Add((string)row["AreaName"], (int)row["AreaId"]); 32 lbProv.Items.Add((string)row["AreaName"]); 33 } 34 } 35 36 private void lbProv_SelectedIndexChanged(object sender, EventArgs e) 37 { 38 lbCity.Items.Clear(); 39 string areaName = (string)lbProv.SelectedItem; 40 int areaId = dictProv[areaName]; 41 DataTable dtCity = SqlHelper.ExecuteDataTable("select * from AreaFull where AreaPid=@AreaPid", 42 new SqlParameter("@AreaPid", areaId)); 43 foreach (DataRow row in dtCity.Rows) 44 { 45 lbCity.Items.Add((string)row["AreaName"]); 46 } 47 //MessageBox.Show(id.ToString()); 48 } 49 } 50 } View Code 1 namespace Adonet 2 { 3 partial class CitySelectWindow 4 { 5 /// <summary> 6 /// Required designer variable. 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// Clean up any resources being used. 12 /// </summary> 13 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows Form Designer generated code 24 25 /// <summary> 26 /// Required method for Designer support - do not modify 27 /// the contents of this method with the code editor. 28 /// </summary> 29 private void InitializeComponent() 30 { 31 this.lbProv = new System.Windows.Forms.ListBox(); 32 this.lbCity = new System.Windows.Forms.ListBox(); 33 this.lbXian = new System.Windows.Forms.ListBox(); 34 this.SuspendLayout(); 35 // 36 // lbProv 37 // 38 this.lbProv.FormattingEnabled = true; 39 this.lbProv.ItemHeight = 12; 40 this.lbProv.Location = new System.Drawing.Point(12, 12); 41 this.lbProv.Name = "lbProv"; 42 this.lbProv.Size = new System.Drawing.Size(120, 340); 43 this.lbProv.TabIndex = 0; 44 this.lbProv.SelectedIndexChanged += new System.EventHandler(this.lbProv_SelectedIndexChanged); 45 // 46 // lbCity 47 // 48 this.lbCity.FormattingEnabled = true; 49 this.lbCity.ItemHeight = 12; 50 this.lbCity.Location = new System.Drawing.Point(138, 12); 51 this.lbCity.Name = "lbCity"; 52 this.lbCity.Size = new System.Drawing.Size(120, 340); 53 this.lbCity.TabIndex = 1; 54 // 55 // lbXian 56 // 57 this.lbXian.FormattingEnabled = true; 58 this.lbXian.ItemHeight = 12; 59 this.lbXian.Location = new System.Drawing.Point(264, 12); 60 this.lbXian.Name = "lbXian"; 61 this.lbXian.Size = new System.Drawing.Size(120, 340); 62 this.lbXian.TabIndex = 2; 63 // 64 // CitySelectWindow 65 // 66 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 67 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 68 this.ClientSize = new System.Drawing.Size(795, 367); 69 this.Controls.Add(this.lbXian); 70 this.Controls.Add(this.lbCity); 71 this.Controls.Add(this.lbProv); 72 this.Name = "CitySelectWindow"; 73 this.Text = "CitySelectWindow"; 74 this.Load += new System.EventHandler(this.CitySelectWindow_Load); 75 this.ResumeLayout(false); 76 77 } 78 79 #endregion 80 81 private System.Windows.Forms.ListBox lbProv; 82 private System.Windows.Forms.ListBox lbCity; 83 private System.Windows.Forms.ListBox lbXian; 84 } 85 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.IO; 10 using System.Data.SqlClient; 11 12 namespace Adonet 13 { 14 public partial class CustomerImportExportWindow : Form 15 { 16 public CustomerImportExportWindow() 17 { 18 InitializeComponent(); 19 } 20 21 private void btnImport_Click(object sender, EventArgs e) 22 { 23 List<string> list=new List<string>(); 24 OpenFileDialog ofd = new OpenFileDialog(); 25 ofd.Filter = "所有文件|*.txt"; 26 ofd.ShowDialog(); 27 string filename = ofd.FileName; 28 using (StreamReader sr=new StreamReader(filename,Encoding.Default)) 29 { 30 while (!sr.EndOfStream) 31 { 32 list.Add(sr.ReadLine()); 33 } 34 //string[] strs = File.ReadAllLines(filename, Encoding.Default); 35 string[] strs = File.ReadLines(filename, Encoding.Default).ToArray(); 36 foreach (string str in strs) 37 { 38 string[] segs = str.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 39 string name = segs[0]; 40 string age = segs[1]; 41 SqlHelper.ExecuteNonQuery("insert into T_Customer(Name,Age) values(@Name,@Age)", 42 new SqlParameter("@Name", name), 43 new SqlParameter("Age", Convert.ToInt32(age))); 44 } 45 MessageBox.Show("導(dǎo)入成功!成功導(dǎo)入" + strs.Length + "條數(shù)據(jù)!"); 46 //foreach (string line in list) 47 //{ 48 // string[] segs = line.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 49 // string name = segs[0]; 50 // string age = segs[1]; 51 // SqlHelper.ExecuteNonQuery("Insert into T_Customer(Name,Age) values(@Name,@Age)", 52 // new SqlParameter("@Name", name), 53 // new SqlParameter("@Age", Convert.ToInt32(age))); 54 //} 55 //MessageBox.Show("導(dǎo)入成功!成功導(dǎo)入" + list.Count + "條數(shù)據(jù)!"); 56 } 57 } 58 } 59 } View Code 1 namespace Adonet 2 { 3 partial class CustomerImportExportWindow 4 { 5 /// <summary> 6 /// Required designer variable. 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// Clean up any resources being used. 12 /// </summary> 13 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows Form Designer generated code 24 25 /// <summary> 26 /// Required method for Designer support - do not modify 27 /// the contents of this method with the code editor. 28 /// </summary> 29 private void InitializeComponent() 30 { 31 this.btnImport = new System.Windows.Forms.Button(); 32 this.SuspendLayout(); 33 // 34 // btnImport 35 // 36 this.btnImport.Location = new System.Drawing.Point(98, 95); 37 this.btnImport.Name = "btnImport"; 38 this.btnImport.Size = new System.Drawing.Size(75, 23); 39 this.btnImport.TabIndex = 0; 40 this.btnImport.Text = "導(dǎo)入"; 41 this.btnImport.UseVisualStyleBackColor = true; 42 this.btnImport.Click += new System.EventHandler(this.btnImport_Click); 43 // 44 // CustomerImportExportWindow 45 // 46 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 47 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 48 this.ClientSize = new System.Drawing.Size(284, 261); 49 this.Controls.Add(this.btnImport); 50 this.Name = "CustomerImportExportWindow"; 51 this.Text = "CustomerImportExportWindow"; 52 this.ResumeLayout(false); 53 54 } 55 56 #endregion 57 58 private System.Windows.Forms.Button btnImport; 59 } 60 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Windows.Forms; 5 6 namespace Adonet 7 { 8 static class Program 9 { 10 /// <summary> 11 /// 應(yīng)用程序的主入口點(diǎn)。 12 /// </summary> 13 [STAThread] 14 static void Main() 15 { 16 Application.EnableVisualStyles(); 17 Application.SetCompatibleTextRenderingDefault(false); 18 Application.Run(new CitySelectWindow()); 19 } 20 } 21 } View Code

sqlhelper

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Configuration; 6 using System.Data.SqlClient; 7 using System.Data; 8 9 namespace Adonet 10 { 11 static class SqlHelper 12 { 13 private static string connStr = ConfigurationManager.ConnectionStrings["myconnStr"].ConnectionString; 14 15 public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) 16 { 17 using (SqlConnection conn = new SqlConnection(connStr)) 18 { 19 conn.Open(); 20 using (SqlCommand cmd = conn.CreateCommand()) 21 { 22 cmd.CommandText = sql; 23 cmd.Parameters.AddRange(parameters); 24 return cmd.ExecuteNonQuery(); 25 } 26 } 27 } 28 29 public static object ExecuteScalar(string sql, params SqlParameter[] parameters) 30 { 31 using (SqlConnection conn = new SqlConnection(connStr)) 32 { 33 conn.Open(); 34 using (SqlCommand cmd = conn.CreateCommand()) 35 { 36 cmd.CommandText = sql; 37 cmd.Parameters.AddRange(parameters); 38 return cmd.ExecuteScalar(); 39 } 40 } 41 } 42 43 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) 44 { 45 using (SqlConnection conn = new SqlConnection(connStr)) 46 { 47 conn.Open(); 48 using (SqlCommand cmd = conn.CreateCommand()) 49 { 50 cmd.CommandText = sql; 51 cmd.Parameters.AddRange(parameters); 52 DataSet dataSet = new DataSet(); 53 SqlDataAdapter adapter = new SqlDataAdapter(cmd); 54 adapter.Fill(dataSet); 55 return dataSet.Tables[0]; 56 } 57 } 58 } 59 } 60 } View Code

?

(四)ADO.Net案例:手機(jī)號(hào)碼歸屬地查詢、DbValue.Null的處理、三層架構(gòu)

?

(五)典型的ListUI+EditUI、人事管理系統(tǒng)需求分析、架構(gòu)設(shè)計(jì)、MD5算法、程序登錄

DAL:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using Customer.Model; 6 using System.Data; 7 using System.Data.SqlClient; 8 9 namespace Customer.DAL 10 { 11 public static class CustomerDAL 12 { 13 public static CustomerModel ToCustomer(DataRow row) 14 { 15 CustomerModel cust = new CustomerModel(); 16 cust.Id = (long)row["Id"]; 17 cust.Name = (string)row["Name"]; 18 cust.Birthday = (DateTime?)SqlHelper.FromDBValue(row["Birthday"]); 19 cust.Address = (string)row["Address"]; 20 cust.TelNum = (string)row["TelNum"]; 21 cust.CustLevel = (int)row["CustLevel"]; 22 return cust; 23 } 24 25 public static CustomerModel GetById(long id) 26 { 27 DataTable table = SqlHelper.ExecuteDataTable("select * from T_Customer where Id=@Id", 28 new SqlParameter("@Id", id)); 29 if (table.Rows.Count <= 0) 30 { 31 return null; 32 } 33 else if (table.Rows.Count > 1) 34 { 35 throw new Exception("嚴(yán)重錯(cuò)誤,查出多條數(shù)據(jù)!"); 36 } 37 else 38 { 39 return ToCustomer(table.Rows[0]); 40 } 41 } 42 43 public static CustomerModel[] GetAll() 44 { 45 46 DataTable table = SqlHelper.ExecuteDataTable("select * from T_Customer"); 47 CustomerModel[] customers=new CustomerModel[table.Rows.Count]; 48 for (int i = 0; i < table.Rows.Count; i++) 49 { 50 customers[i] = ToCustomer(table.Rows[i]); 51 } 52 return customers; 53 } 54 55 public static void DeleteById(long id) 56 { 57 SqlHelper.ExecuteNonQuery("delete from T_Customer where Id=@Id", 58 new SqlParameter("@Id", id)); 59 } 60 61 public static void Insert(CustomerModel cust) 62 { 63 SqlHelper.ExecuteNonQuery(@"insert into T_Customer (Name,Birthday,Address,TelNum,CustLevel) 64 values(@Name,@Birthday,@Address,@TelNum,@CustLevel)", 65 new SqlParameter("@Name", cust.Name), 66 new SqlParameter("@Birthday", cust.Birthday), 67 new SqlParameter("@Address", cust.Address), 68 new SqlParameter("@TelNum", cust.TelNum), 69 new SqlParameter("@CustLevel", cust.CustLevel)); 70 } 71 72 public static void Update(CustomerModel cust) 73 { 74 SqlHelper.ExecuteNonQuery(@"update T_Customer 75 set Name=@Name,Birthday=@Birthday,Address=@Address,TelNum=@TelNum,CustLevel=@CustLevel 76 where Id=@Id", 77 new SqlParameter("@Name", cust.Name), 78 new SqlParameter("@Birthday", cust.Birthday), 79 new SqlParameter("@Address", cust.Address), 80 new SqlParameter("@TelNum", cust.TelNum), 81 new SqlParameter("@CustLevel", cust.CustLevel), 82 new SqlParameter("@Id", cust.Id)); 83 } 84 } 85 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Configuration; 6 using System.Data.SqlClient; 7 using System.Data; 8 9 namespace Customer.DAL 10 { 11 class SqlHelper 12 { 13 public static string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; 14 15 public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) 16 { 17 using (SqlConnection conn = new SqlConnection(connStr)) 18 { 19 conn.Open(); 20 using (SqlCommand cmd = conn.CreateCommand()) 21 { 22 cmd.CommandText = sql; 23 cmd.Parameters.AddRange(parameters); 24 return cmd.ExecuteNonQuery(); 25 } 26 } 27 } 28 29 public static object ExecuteScalar(string sql, params SqlParameter[] parameters) 30 { 31 using (SqlConnection conn = new SqlConnection(connStr)) 32 { 33 conn.Open(); 34 using (SqlCommand cmd = conn.CreateCommand()) 35 { 36 cmd.CommandText = sql; 37 cmd.Parameters.AddRange(parameters); 38 return cmd.ExecuteScalar(); 39 } 40 } 41 } 42 43 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) 44 { 45 using (SqlConnection conn = new SqlConnection(connStr)) 46 { 47 conn.Open(); 48 using (SqlCommand cmd = conn.CreateCommand()) 49 { 50 cmd.CommandText = sql; 51 cmd.Parameters.AddRange(parameters); 52 DataSet dataset = new DataSet(); 53 SqlDataAdapter adapter = new SqlDataAdapter(cmd); 54 adapter.Fill(dataset); 55 return dataset.Tables[0]; 56 } 57 } 58 } 59 60 public static object FromDBValue(object value) 61 { 62 if (DBNull.Value == value) 63 { 64 return null; 65 } 66 else 67 { 68 return value; 69 } 70 } 71 72 public static object ToDBValue(object value) 73 { 74 if (null == value) 75 { 76 return DBNull.Value; 77 } 78 else 79 { 80 return value; 81 } 82 } 83 } 84 } View Code

images:
Model:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Customer.Model 7 { 8 public class CustomerModel 9 { 10 public long Id { get; set; } 11 public string Name { get; set; } 12 public DateTime? Birthday { get; set; } 13 public string Address { get; set; } 14 public string TelNum { get; set; } 15 public int CustLevel { get; set; } 16 } 17 } View Code

?

1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <connectionStrings> 4 <add name="connStr" connectionString="server=.;database=Scott;uid=sa;pwd=222222"/> 5 </connectionStrings> 6 </configuration> View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using Customer.Model; 10 using Customer.DAL; 11 12 namespace Customer 13 { 14 public partial class CustomerEditUI : Form 15 { 16 public CustomerEditUI() 17 { 18 InitializeComponent(); 19 } 20 21 public bool isInsert { get; set; } 22 public long EditingId { get; set; } 23 24 private void btnSave_Click(object sender, EventArgs e) 25 { 26 CustomerModel cust = new CustomerModel(); 27 cust.Name = txtName.Text; 28 cust.Birthday = dtBirthday.Value; 29 cust.TelNum = txtTelNum.Text; 30 cust.CustLevel = int.Parse(txtCustLevel.Text); 31 cust.Address = txtAddress.Text; 32 if (isInsert) 33 { 34 CustomerDAL.Insert(cust); 35 } 36 else 37 { 38 cust.Id=EditingId; 39 CustomerDAL.Update(cust); 40 } 41 DialogResult = DialogResult.Yes; 42 } 43 44 private void btnCancel_Click(object sender, EventArgs e) 45 { 46 DialogResult = DialogResult.No; 47 } 48 49 private void CustomerEditUI_Load(object sender, EventArgs e) 50 { 51 if (isInsert) 52 { 53 txtName.Focus(); 54 txtCustLevel.Text = "2"; 55 } 56 else 57 { 58 CustomerModel cust = new CustomerModel(); 59 cust = CustomerDAL.GetById(EditingId); 60 txtName.Text = cust.Name; 61 dtBirthday.Value = (DateTime)cust.Birthday; 62 txtTelNum.Text = cust.TelNum; 63 txtCustLevel.Text = cust.CustLevel.ToString(); 64 txtAddress.Text = cust.Address; 65 } 66 } 67 } 68 } View Code 1 namespace Customer 2 { 3 partial class CustomerEditUI 4 { 5 /// <summary> 6 /// Required designer variable. 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// Clean up any resources being used. 12 /// </summary> 13 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows Form Designer generated code 24 25 /// <summary> 26 /// Required method for Designer support - do not modify 27 /// the contents of this method with the code editor. 28 /// </summary> 29 private void InitializeComponent() 30 { 31 this.txtName = new System.Windows.Forms.TextBox(); 32 this.txtTelNum = new System.Windows.Forms.TextBox(); 33 this.txtCustLevel = new System.Windows.Forms.TextBox(); 34 this.txtAddress = new System.Windows.Forms.TextBox(); 35 this.label1 = new System.Windows.Forms.Label(); 36 this.label2 = new System.Windows.Forms.Label(); 37 this.label3 = new System.Windows.Forms.Label(); 38 this.label4 = new System.Windows.Forms.Label(); 39 this.label5 = new System.Windows.Forms.Label(); 40 this.btnSave = new System.Windows.Forms.Button(); 41 this.btnCancel = new System.Windows.Forms.Button(); 42 this.dtBirthday = new System.Windows.Forms.DateTimePicker(); 43 this.SuspendLayout(); 44 // 45 // txtName 46 // 47 this.txtName.Location = new System.Drawing.Point(146, 54); 48 this.txtName.Name = "txtName"; 49 this.txtName.Size = new System.Drawing.Size(100, 21); 50 this.txtName.TabIndex = 0; 51 // 52 // txtTelNum 53 // 54 this.txtTelNum.Location = new System.Drawing.Point(503, 57); 55 this.txtTelNum.Name = "txtTelNum"; 56 this.txtTelNum.Size = new System.Drawing.Size(100, 21); 57 this.txtTelNum.TabIndex = 1; 58 // 59 // txtCustLevel 60 // 61 this.txtCustLevel.Location = new System.Drawing.Point(503, 117); 62 this.txtCustLevel.Name = "txtCustLevel"; 63 this.txtCustLevel.Size = new System.Drawing.Size(100, 21); 64 this.txtCustLevel.TabIndex = 3; 65 // 66 // txtAddress 67 // 68 this.txtAddress.Location = new System.Drawing.Point(146, 179); 69 this.txtAddress.Name = "txtAddress"; 70 this.txtAddress.Size = new System.Drawing.Size(457, 21); 71 this.txtAddress.TabIndex = 4; 72 // 73 // label1 74 // 75 this.label1.AutoSize = true; 76 this.label1.Location = new System.Drawing.Point(77, 60); 77 this.label1.Name = "label1"; 78 this.label1.Size = new System.Drawing.Size(29, 12); 79 this.label1.TabIndex = 5; 80 this.label1.Text = "姓名"; 81 // 82 // label2 83 // 84 this.label2.AutoSize = true; 85 this.label2.Location = new System.Drawing.Point(426, 60); 86 this.label2.Name = "label2"; 87 this.label2.Size = new System.Drawing.Size(53, 12); 88 this.label2.TabIndex = 6; 89 this.label2.Text = "電話號(hào)碼"; 90 // 91 // label3 92 // 93 this.label3.AutoSize = true; 94 this.label3.Location = new System.Drawing.Point(77, 120); 95 this.label3.Name = "label3"; 96 this.label3.Size = new System.Drawing.Size(29, 12); 97 this.label3.TabIndex = 7; 98 this.label3.Text = "生日"; 99 // 100 // label4 101 // 102 this.label4.AutoSize = true; 103 this.label4.Location = new System.Drawing.Point(426, 120); 104 this.label4.Name = "label4"; 105 this.label4.Size = new System.Drawing.Size(29, 12); 106 this.label4.TabIndex = 8; 107 this.label4.Text = "級(jí)別"; 108 // 109 // label5 110 // 111 this.label5.AutoSize = true; 112 this.label5.Location = new System.Drawing.Point(77, 182); 113 this.label5.Name = "label5"; 114 this.label5.Size = new System.Drawing.Size(53, 12); 115 this.label5.TabIndex = 9; 116 this.label5.Text = "通信地址"; 117 // 118 // btnSave 119 // 120 this.btnSave.DialogResult = System.Windows.Forms.DialogResult.Yes; 121 this.btnSave.Location = new System.Drawing.Point(392, 257); 122 this.btnSave.Name = "btnSave"; 123 this.btnSave.Size = new System.Drawing.Size(75, 23); 124 this.btnSave.TabIndex = 10; 125 this.btnSave.Text = "保存"; 126 this.btnSave.UseVisualStyleBackColor = true; 127 this.btnSave.Click += new System.EventHandler(this.btnSave_Click); 128 // 129 // btnCancel 130 // 131 this.btnCancel.Location = new System.Drawing.Point(528, 257); 132 this.btnCancel.Name = "btnCancel"; 133 this.btnCancel.Size = new System.Drawing.Size(75, 23); 134 this.btnCancel.TabIndex = 11; 135 this.btnCancel.Text = "取消"; 136 this.btnCancel.UseVisualStyleBackColor = true; 137 this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); 138 // 139 // dtBirthday 140 // 141 this.dtBirthday.Location = new System.Drawing.Point(146, 114); 142 this.dtBirthday.Name = "dtBirthday"; 143 this.dtBirthday.Size = new System.Drawing.Size(200, 21); 144 this.dtBirthday.TabIndex = 12; 145 // 146 // CustomerEditUI 147 // 148 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 149 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 150 this.ClientSize = new System.Drawing.Size(732, 348); 151 this.Controls.Add(this.dtBirthday); 152 this.Controls.Add(this.btnCancel); 153 this.Controls.Add(this.btnSave); 154 this.Controls.Add(this.label5); 155 this.Controls.Add(this.label4); 156 this.Controls.Add(this.label3); 157 this.Controls.Add(this.label2); 158 this.Controls.Add(this.label1); 159 this.Controls.Add(this.txtAddress); 160 this.Controls.Add(this.txtCustLevel); 161 this.Controls.Add(this.txtTelNum); 162 this.Controls.Add(this.txtName); 163 this.Name = "CustomerEditUI"; 164 this.Text = "CustomerEditUI"; 165 this.Load += new System.EventHandler(this.CustomerEditUI_Load); 166 this.ResumeLayout(false); 167 this.PerformLayout(); 168 169 } 170 171 #endregion 172 173 private System.Windows.Forms.TextBox txtName; 174 private System.Windows.Forms.TextBox txtTelNum; 175 private System.Windows.Forms.TextBox txtCustLevel; 176 private System.Windows.Forms.TextBox txtAddress; 177 private System.Windows.Forms.Label label1; 178 private System.Windows.Forms.Label label2; 179 private System.Windows.Forms.Label label3; 180 private System.Windows.Forms.Label label4; 181 private System.Windows.Forms.Label label5; 182 private System.Windows.Forms.Button btnSave; 183 private System.Windows.Forms.Button btnCancel; 184 private System.Windows.Forms.DateTimePicker dtBirthday; 185 } 186 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using Customer.DAL; 10 using Customer.Model; 11 12 namespace Customer 13 { 14 public partial class CustomerListUI : Form 15 { 16 public CustomerListUI() 17 { 18 InitializeComponent(); 19 } 20 21 void LoadData() 22 { 23 dataGridView1.DataSource = CustomerDAL.GetAll(); 24 } 25 26 private void CustomerListUI_Load(object sender, EventArgs e) 27 { 28 LoadData(); 29 } 30 31 private void toolStripButton1_Click(object sender, EventArgs e) 32 { 33 CustomerEditUI editUI = new CustomerEditUI(); 34 editUI.isInsert = true; 35 editUI.ShowDialog(); 36 if (editUI.DialogResult == DialogResult.Yes) 37 { 38 LoadData(); 39 } 40 41 } 42 43 private void toolStripButton2_Click(object sender, EventArgs e) 44 { 45 if (dataGridView1.SelectedRows.Count <= 0) 46 { 47 MessageBox.Show("請(qǐng)選擇要編輯的行!"); 48 return; 49 } 50 else if(dataGridView1.SelectedRows.Count >=2) 51 { 52 MessageBox.Show("只能選擇一行!"); 53 return; 54 } 55 else 56 { 57 CustomerModel cust = (CustomerModel)dataGridView1.SelectedRows[0].DataBoundItem; 58 CustomerEditUI editUI = new CustomerEditUI(); 59 editUI.isInsert = false; 60 editUI.EditingId = cust.Id; 61 editUI.ShowDialog(); 62 if (editUI.DialogResult == DialogResult.Yes) 63 { 64 LoadData(); 65 } 66 } 67 68 } 69 70 private void toolStripButton3_Click(object sender, EventArgs e) 71 { 72 if (dataGridView1.SelectedRows.Count <= 0) 73 { 74 MessageBox.Show("請(qǐng)選擇要編輯的行!"); 75 return; 76 } 77 78 DialogResult dr = MessageBox.Show("是否確定", "詢問(wèn)", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 79 if (dr == DialogResult.Yes) 80 { 81 for (int i = 0; i < dataGridView1.SelectedRows.Count; i++) 82 { 83 CustomerModel cust = (CustomerModel)dataGridView1.SelectedRows[i].DataBoundItem; 84 CustomerDAL.DeleteById(cust.Id); 85 } 86 } 87 LoadData(); 88 } 89 } 90 } View Code 1 namespace Customer 2 { 3 partial class CustomerListUI 4 { 5 /// <summary> 6 /// 必需的設(shè)計(jì)器變量。 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// 清理所有正在使用的資源。 12 /// </summary> 13 /// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param> 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows 窗體設(shè)計(jì)器生成的代碼 24 25 /// <summary> 26 /// 設(shè)計(jì)器支持所需的方法 - 不要 27 /// 使用代碼編輯器修改此方法的內(nèi)容。 28 /// </summary> 29 private void InitializeComponent() 30 { 31 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CustomerListUI)); 32 this.toolStrip1 = new System.Windows.Forms.ToolStrip(); 33 this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); 34 this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); 35 this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); 36 this.dataGridView1 = new System.Windows.Forms.DataGridView(); 37 this.toolStrip1.SuspendLayout(); 38 ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 39 this.SuspendLayout(); 40 // 41 // toolStrip1 42 // 43 this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 44 this.toolStripButton1, 45 this.toolStripButton2, 46 this.toolStripButton3}); 47 this.toolStrip1.Location = new System.Drawing.Point(0, 0); 48 this.toolStrip1.Name = "toolStrip1"; 49 this.toolStrip1.Size = new System.Drawing.Size(1112, 25); 50 this.toolStrip1.TabIndex = 0; 51 this.toolStrip1.Text = "toolStrip1"; 52 // 53 // toolStripButton1 54 // 55 this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; 56 this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); 57 this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; 58 this.toolStripButton1.Name = "toolStripButton1"; 59 this.toolStripButton1.Size = new System.Drawing.Size(23, 22); 60 this.toolStripButton1.Text = "toolStripButton1"; 61 this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); 62 // 63 // toolStripButton2 64 // 65 this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; 66 this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); 67 this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; 68 this.toolStripButton2.Name = "toolStripButton2"; 69 this.toolStripButton2.Size = new System.Drawing.Size(23, 22); 70 this.toolStripButton2.Text = "toolStripButton2"; 71 this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); 72 // 73 // toolStripButton3 74 // 75 this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; 76 this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image"))); 77 this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; 78 this.toolStripButton3.Name = "toolStripButton3"; 79 this.toolStripButton3.Size = new System.Drawing.Size(23, 22); 80 this.toolStripButton3.Text = "toolStripButton3"; 81 this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); 82 // 83 // dataGridView1 84 // 85 this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 86 this.dataGridView1.Location = new System.Drawing.Point(12, 28); 87 this.dataGridView1.Name = "dataGridView1"; 88 this.dataGridView1.RowTemplate.Height = 23; 89 this.dataGridView1.Size = new System.Drawing.Size(1088, 361); 90 this.dataGridView1.TabIndex = 1; 91 // 92 // CustomerListUI 93 // 94 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 95 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 96 this.ClientSize = new System.Drawing.Size(1112, 401); 97 this.Controls.Add(this.dataGridView1); 98 this.Controls.Add(this.toolStrip1); 99 this.Name = "CustomerListUI"; 100 this.Text = "CustomerListUI"; 101 this.Load += new System.EventHandler(this.CustomerListUI_Load); 102 this.toolStrip1.ResumeLayout(false); 103 this.toolStrip1.PerformLayout(); 104 ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 105 this.ResumeLayout(false); 106 this.PerformLayout(); 107 108 } 109 110 #endregion 111 112 private System.Windows.Forms.ToolStrip toolStrip1; 113 private System.Windows.Forms.ToolStripButton toolStripButton1; 114 private System.Windows.Forms.ToolStripButton toolStripButton2; 115 private System.Windows.Forms.ToolStripButton toolStripButton3; 116 private System.Windows.Forms.DataGridView dataGridView1; 117 118 } 119 } View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Windows.Forms; 5 6 namespace Customer 7 { 8 static class Program 9 { 10 /// <summary> 11 /// 應(yīng)用程序的主入口點(diǎn)。 12 /// </summary> 13 [STAThread] 14 static void Main() 15 { 16 Application.EnableVisualStyles(); 17 Application.SetCompatibleTextRenderingDefault(false); 18 Application.Run(new CustomerListUI()); 19 } 20 } 21 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/liuslayer/p/4713787.html

總結(jié)

以上是生活随笔為你收集整理的传智播客数据绑定和数据库开发基础(第四季)-杨中科的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

91高清在线 | 日韩国产精品久久 | 欧美日韩精品网站 | 99久久精品午夜一区二区小说 | 91丨九色丨蝌蚪丨老版 | 国产亚洲综合性久久久影院 | 久草在线视频在线观看 | 在线看的毛片 | 日韩视频1区 | 视频1区2区 | 午夜a区 | 久久国产精品久久久 | 久久精品综合网 | 91大神视频网站 | 日韩三级在线 | 在线成人免费电影 | www.色爱| 国产精品999久久久 久产久精国产品 | 亚洲午夜精品一区二区三区电影院 | 中文字幕乱码日本亚洲一区二区 | 黄色在线观看www | 色噜噜狠狠狠狠色综合 | 亚洲综合五月 | 亚洲黄色在线免费观看 | 久久久久久久网站 | 国产精品成人一区二区三区吃奶 | 97碰在线视频 | 国产剧情一区二区在线观看 | 国产a级精品 | 在线观看日韩专区 | 国产精品免费视频久久久 | 人人草天天草 | 日韩欧美一区视频 | 99国产精品久久久久久久久久 | 91麻豆免费看| 色999五月色| 精品久久久久久久久亚洲 | 精品国产大片 | www.777奇米| 色88久久| 国产精品视频你懂的 | 亚洲天天草 | 成人免费亚洲 | 日本黄色免费大片 | 韩国精品在线 | av在线播放免费 | 国产在线视频不卡 | 国产精国产精品 | 久久国产成人午夜av影院潦草 | 黄色高清视频在线观看 | av大全在线| 国产手机在线观看视频 | 久久久免费国产 | 欧美久久综合 | 国内精品亚洲 | 国产精品一区二区av | 久久艹人人 | 国产美女视频免费观看的网站 | 西西www4444大胆在线 | 免费激情在线电影 | 9在线观看免费高清完整版在线观看明 | 97视频免费 | 狠狠色噜噜狠狠 | 国产高清免费在线观看 | 精品国产免费av | 久久久久久久久久久久久久av | 又黄又爽又色无遮挡免费 | 国产麻豆精品在线观看 | 亚洲成人精品影院 | 九九爱免费视频在线观看 | 在线观看视频一区二区 | 欧美a在线免费观看 | 亚洲日日夜夜 | 日韩中文字幕在线看 | 91亚洲精品久久久蜜桃网站 | 国产亚洲字幕 | 免费视频网 | 国内精品久久久久久久影视麻豆 | 亚洲综合精品视频 | 国产一级片免费观看 | 99热这里只有精品国产首页 | 国产成人av电影 | 亚洲欧洲国产精品 | 国产精品成人免费精品自在线观看 | 人人舔人人爱 | 精品国产a| 九九久久免费 | 东方av在 | 久久综合色影院 | 日日夜夜操操操操 | 一区二区三区日韩精品 | 欧美日韩一区二区三区免费视频 | 不卡的一区二区三区 | 一区二区三区观看 | 国产在线a| 亚洲一区在线看 | 超碰资源在线 | 黄色91免费观看 | 欧美性生活免费看 | 麻豆一区二区三区视频 | 婷婷干五月 | 免费国产黄线在线观看视频 | 天天爽天天做 | 久久久久久久久免费视频 | 精品视频专区 | 日本精品中文字幕在线观看 | 91久久丝袜国产露脸动漫 | 国产一区二区三区高清播放 | 一区二区在线不卡 | www.超碰97.com | 四虎天堂 | 国产资源在线免费观看 | 黄色小说18 | 精品久久91 | 日韩精品一区二区在线 | 国产一区高清在线 | 中文字幕传媒 | 黄色特一级片 | 国产精品视频全国免费观看 | 亚洲精品456在线播放乱码 | 免费观看日韩 | 亚洲九九影院 | 91麻豆网 | 日韩高清一区在线 | 色吊丝在线永久观看最新版本 | 国产999精品久久久久久 | 精品自拍网 | 成年人视频免费在线 | 久久久久久久久网站 | 精品国产精品国产偷麻豆 | 色综合久久五月 | 精品久久久久国产 | www.色综合.com| 992tv在线成人免费观看 | 精品播放 | 中文字幕网站 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 精品国产乱码久久久久久1区2匹 | 欧美日韩国产三级 | 日韩理论片| 人成免费网站 | 国产一级特黄毛片在线毛片 | 少妇搡bbbb搡bbb搡aa | 91成人区 | 国产小视频在线看 | 午夜美女wwww | 精品久久久久一区二区国产 | 最近中文字幕免费 | 精品在线观看国产 | av免费观看高清 | 久久香蕉一区 | 午夜精品中文字幕 | 一级黄色免费 | 成人app在线播放 | www.天天色.com| 超碰97人 | 日韩精品你懂的 | 不卡的av片 | 中文字幕视频免费观看 | 精品一区二区免费在线观看 | 6080yy午夜一二三区久久 | 成人福利av | 亚洲另类视频在线 | 超碰97国产精品人人cao | 亚州精品国产 | www色网站| 99久久99久久免费精品蜜臀 | 人人澡超碰碰97碰碰碰软件 | www.在线看片.com | 亚洲国产精品一区二区尤物区 | 麻豆一区二区三区视频 | 久草在线免费色站 | 黄视频色网站 | 精品一区 在线 | 亚洲五月 | 久久99精品波多结衣一区 | 欧美性做爰猛烈叫床潮 | 国产一在线精品一区在线观看 | 免费a v观看 | 欧美激情视频一区 | 午夜精品一区二区三区在线观看 | 国产剧情一区二区在线观看 | 国产大陆亚洲精品国产 | 黄网av在线 | 99热在线这里只有精品 | 久久在线免费观看 | 日日摸日日 | 狠狠搞,com | 精品视频免费久久久看 | 激情欧美丁香 | 午夜免费福利视频 | 97超碰色偷偷 | 欧美久久久 | 看片一区二区三区 | av线上看| 亚洲精品视频大全 | 精品在线观看免费 | 国产女v资源在线观看 | 国产黄色精品在线观看 | 麻豆av一区二区三区在线观看 | 免费观看国产视频 | 亚洲国产丝袜在线观看 | 亚洲视频1区2区 | 91免费高清| 伊人影院av| 在线免费观看国产黄色 | ,午夜性刺激免费看视频 | 国产精品入口麻豆 | 天天干一干 | 网站免费黄色 | 麻豆一精品传二传媒短视频 | 青青网视频 | 久久久久久黄色 | 日韩电影一区二区三区在线观看 | 久草.com| 精精国产xxxx视频在线播放 | 色噜噜在线观看视频 | 欧美在线一级片 | 91福利区一区二区三区 | 在线观看福利网站 | 91精品视频一区 | 中文字幕乱码电影 | 婷婷视频在线播放 | 五月婷婷,六月丁香 | 国产精品h在线观看 | 亚洲国产大片 | 欧美一区二区免费在线观看 | 久久蜜臀一区二区三区av | 天天做日日爱夜夜爽 | 国产黄在线 | 久久手机看片 | 91成人免费看 | 草久久久| 综合影视| 正在播放国产一区二区 | 日韩欧美综合视频 | 国产成人精品av久久 | 日韩精品免费在线观看 | 国产视频精品视频 | 色开心| 久久综合9988久久爱 | 日本不卡123区 | 字幕网资源站中文字幕 | 特黄色大片 | 国产精品久久久久一区二区 | 成人免费在线观看电影 | 天天操比 | 欧美一区二区日韩一区二区 | 国产色在线视频 | 三级视频日韩 | 亚洲精品动漫成人3d无尽在线 | 国产亚洲一区二区在线观看 | 成人四虎 | 国产精品丝袜久久久久久久不卡 | 久久久免费看片 | 免费看的国产视频网站 | av天天草 | 国产精品不卡在线播放 | 欧美精品xx | 国产日产av | 97精品电影院 | 久久这里有 | 97超碰国产在线 | 国内一区二区视频 | www狠狠| av视屏在线 | 91九色性视频 | 中文字幕在线观看完整版 | 国产精品二区在线 | 亚洲伊人色 | 国产中的精品av小宝探花 | 亚洲美女在线国产 | 在线中文字幕一区二区 | 亚洲一本视频 | 国产丝袜高跟 | 99在线精品视频 | 久久成人精品电影 | 日韩在线视频国产 | 国产成人精品一区一区一区 | 国产在线观看中文字幕 | 在线三级中文 | 国产乱对白刺激视频不卡 | 国产成人久久精品 | 亚洲欧美日韩一区二区三区在线观看 | h动漫中文字幕 | 国产日韩欧美在线看 | 在线观看91视频 | 在线观看视频一区二区 | 成人午夜电影久久影院 | 日韩精品久久久久久 | 国产一区二区影院 | 91精品欧美一区二区三区 | 国产精品欧美一区二区三区不卡 | 色就色,综合激情 | 欧美日韩不卡一区二区三区 | 午夜精品一区二区三区在线 | 色吧av色av | 久久伦理 | 91丨九色丨91啦蝌蚪老版 | 色综合激情久久 | 在线观看视频国产一区 | 国产99久久精品 | 人人插人人插 | 九色视频网址 | 69亚洲乱| 521色香蕉网站在线观看 | 中文字幕在线观看第三页 | 欧亚日韩精品一区二区在线 | 亚洲精区二区三区四区麻豆 | 国产成人精品亚洲日本在线观看 | 国产亚洲欧洲 | 欧美一二三在线 | 国产精品高清av | 久久久免费看片 | 亚洲成人免费在线观看 | 麻豆 91 在线 | 国产91全国探花系列在线播放 | 天天天综合网 | 久久国产精品二国产精品中国洋人 | 久久久精品99 | 在线中文字幕网站 | 日韩电影一区二区三区 | 免费黄色网址大全 | 黄色一级在线免费观看 | 国产成人精品一区二三区 | 日韩精品视频久久 | 精品国模一区二区 | 99久久99久久精品国产片 | 成人国产精品免费 | 日韩高清免费在线 | 激情久久久 | 亚洲国产网站 | 国语精品免费视频 | 欧美日本不卡视频 | 亚洲天堂网视频在线观看 | 亚洲精品久久视频 | 欧美黄色特级片 | 波多野结衣最新 | av免费观看在线 | 欧美在线视频不卡 | 欧美成人xxxxx | 国产91电影在线观看 | 激情五月伊人 | 激情片av | 日韩高清国产精品 | 国产香蕉97碰碰碰视频在线观看 | 色婷婷五| 丁香婷婷综合五月 | 四虎8848免费高清在线观看 | 中文字幕乱码在线播放 | 亚洲精品综合欧美二区变态 | 久久精品欧美日韩精品 | a黄色片在线观看 | 人人爽人人看 | 黄色大片免费网站 | 亚洲爱爱视频 | av电影亚洲 | 国产精品自产拍在线观看 | 66av99精品福利视频在线 | 亚洲国产剧情av | 国产成人av在线 | 99久久激情视频 | mm1313亚洲精品国产 | 国产精品久久久久婷婷 | 日韩欧美精品免费 | 在线国产能看的 | 韩国av免费看 | 日韩精品一区二区三区在线播放 | 伊人五月天婷婷 | 久久久久久久久久久久影院 | www.久草视频 | 日本丶国产丶欧美色综合 | 91在线看网站 | 91精品啪在线观看国产线免费 | 久久情爱 | 欧美精品在线观看 | 91九色性视频 | 成年人电影毛片 | 亚洲激情校园春色 | 日韩一级成人av | 欧美美女一级片 | 欧美精品久久久久性色 | 国产精品久久久久久婷婷天堂 | 亚洲一区二区高潮无套美女 | av在线播放国产 | 麻豆久久精品 | 亚洲精欧美一区二区精品 | av在线小说 | 色国产视频| 久久久综合精品 | 一区二区三区日韩在线观看 | 不卡电影免费在线播放一区 | 91成熟丰满女人少妇 | 九九九九免费视频 | 欧美视频在线二区 | 麻豆你懂的 | 色综合咪咪久久网 | 久久久av免费 | 天天干,天天草 | 国产色中涩| 亚洲女欲精品久久久久久久18 | 久久久久久久久久久精 | 久久久久亚洲最大xxxx | 亚洲va男人天堂 | 亚洲网站在线看 | 久久免费视频99 | 国产专区在线 | 色多多污污 | 69精品 | 天天干天天操天天射 | 麻豆精品视频在线观看免费 | 精品久久久久久一区二区里番 | 超碰在线中文字幕 | 免费aa大片 | 中文字幕日本电影 | 成人a级免费视频 | 久久官网 | 狠狠色狠狠色综合系列 | 日本久久久久久科技有限公司 | 成人久久久精品国产乱码一区二区 | 日韩av黄 | 国产日韩av在线 | 网站你懂的 | 国产精品久久久久久久久久久久午夜 | 久久久久久久久久福利 | 国产日韩精品一区二区三区 | 少妇视频一区 | 久久99精品国产麻豆婷婷 | 超碰人人在线观看 | 国产欧美最新羞羞视频在线观看 | 99视频在线免费 | 四虎在线观看视频 | 日韩在线观看a | 99在线观看免费视频精品观看 | 手机av片 | 国产午夜精品理论片在线 | 开心激情五月网 | av黄色国产 | 国产第一福利 | 亚洲小视频在线 | 天天干天天操av | 精品久久久久久一区二区里番 | 在线观看日韩精品视频 | 国产精品成| 999久久国精品免费观看网站 | 日韩欧美在线免费观看 | 中文字幕在线不卡国产视频 | 国产精品一区二区久久 | 久草在线最新免费 | 欧美日韩不卡一区二区三区 | 国产专区精品视频 | 这里只有精品视频在线 | 国产成人资源 | 国产精品21区 | 免费看国产黄色 | 国产夫妻性生活自拍 | 亚洲午夜精 | av解说在线观看 | 黄色毛片一级片 | 国产一区二区午夜 | 国产精品刺激对白麻豆99 | 国产视频观看 | 国产精品久久久毛片 | 中文字幕在线视频一区二区三区 | 中国一级特黄毛片大片久久 | 国产亚洲亚洲 | 欧美a级在线免费观看 | 在线观看网站黄 | 久久91网| 亚洲乱码国产乱码精品天美传媒 | 欧美va天堂va视频va在线 | 国产精品九九九九九 | 久久久96 | 91麻豆精品久久久久久 | 免费欧美 | av成人免费观看 | 久久久久久久久久久久99 | 国产91精品在线播放 | 久久免费播放 | 成人av一区二区在线观看 | 奇米7777狠狠狠琪琪视频 | 日韩精品久久久久久 | 日韩久久久久久久久 | 久久综合五月天婷婷伊人 | av在线免费网 | 国产欧美日韩精品一区二区免费 | 成人av亚洲 | 99久久精品免费看国产一区二区三区 | 亚洲精品中文字幕视频 | 手机在线看永久av片免费 | 婷婷六月天天 | a一片一级 | 成人在线视频你懂的 | 美女视频永久黄网站免费观看国产 | 2024av| 久久爽久久爽久久av东京爽 | 天天曰夜夜爽 | 69久久99精品久久久久婷婷 | 国产精品99久久久久久有的能看 | 一级免费片| 免费在线观看午夜视频 | av免费看网站 | 国产资源网站 | 最近中文字幕在线中文高清版 | 亚洲综合在线五月天 | 久久精品香蕉视频 | 免费成人在线观看视频 | 精品久久久久久国产91 | 国产999精品久久久影片官网 | 亚洲va韩国va欧美va精四季 | 国模一区二区三区四区 | 天天综合人人 | 国产69久久 | 国产特级毛片aaaaaaa高清 | av日韩国产 | 日韩欧美一级二级 | 涩涩爱夜夜爱 | 操操操日日 | 91在线你懂的 | 国产一区二区播放 | 韩国精品在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 99在线热播精品免费 | 婷婷中文字幕 | 亚洲人毛片 | 91在线视频观看免费 | 黄色亚洲免费 | 亚洲闷骚少妇在线观看网站 | 日韩乱码中文字幕 | 成人小视频在线免费观看 | 国产中文字幕在线视频 | 日韩成人中文字幕 | 亚洲在线激情 | 国产视频网站在线观看 | 亚洲国产中文字幕在线观看 | 黄色三级免费观看 | 在线观看一区 | 欧美日韩中文国产一区发布 | 国产精品久久久久久久久久了 | 久福利| 亚洲一区二区三区miaa149 | www.狠狠色.com | 激情久久久久 | 欧美久久久久久久久久久久久 | 成人亚洲欧美 | 夜夜操网站 | 在线观看av的网站 | 在线免费观看黄色小说 | 国产aaa免费视频 | 国产精品成人久久久 | 亚洲精品456在线播放第一页 | 在线观看 国产 | 国产黄色在线网站 | 天天射天天操天天干 | 国产精品女主播一区二区三区 | 免费看网站在线 | 肉色欧美久久久久久久免费看 | 欧美特一级 | 人人射人人 | 久久免费国产精品1 | 亚洲妇女av| 亚洲欧美成人综合 | 麻花豆传媒mv在线观看网站 | 久久电影网站中文字幕 | 免费男女羞羞的视频网站中文字幕 | 97天堂| 一区在线观看视频 | 99精品在线免费在线观看 | 国产91精品一区二区绿帽 | 蜜桃视频日本 | 综合网欧美 | 日韩精品免费在线视频 | 在线国产福利 | 国内成人综合 | 欧美aaa一级 | 99色网站 | 色视频在线观看 | 超碰在线官网 | 成人高清在线 | 最新日韩中文字幕 | 狠狠狠狠狠狠狠狠 | 99热这里只有精品8 久久综合毛片 | 欧美激情综合色 | 日本性xxxxx 亚洲精品午夜久久久 | 日日夜夜天天 | 亚洲精品成人 | 精品视频免费 | 有码视频在线观看 | 五月婷综合 | 久久久久久国产精品999 | 欧美不卡视频在线 | 激情婷婷久久 | 97在线视频免费播放 | 欧美一级日韩三级 | 91在线观看视频网站 | 天天躁日日躁狠狠躁av麻豆 | 精品久久久久久久久久久久久久久久 | 又紧又大又爽精品一区二区 | 国产亚洲视频在线免费观看 | 亚洲精品综合欧美二区变态 | 97视频免费在线观看 | 欧美成人黄色片 | 91看片在线免费观看 | 丝袜美腿一区 | 色婷婷伊人 | 国产中文字幕网 | 亚洲一区日韩 | 91免费的视频在线播放 | 欧美成亚洲 | 国产成人在线观看 | 婷婷色网视频在线播放 | 国产精品一区久久久久 | 精品国产a | 久久久久网址 | 一级黄色免费网站 | 国产亚洲精品久久久久久无几年桃 | 久久图 | 曰韩在线| 午夜男人影院 | 五月亚洲 | 色综合久久88 | 一区 二区电影免费在线观看 | 99久久99视频 | 国产麻豆电影在线观看 | 亚洲精品欧美专区 | 精品人妖videos欧美人妖 | 日日麻批40分钟视频免费观看 | 麻花豆传媒mv在线观看网站 | 国产视频一区在线播放 | 91麻豆国产福利在线观看 | 婷婷丁香在线观看 | 精品一区二区久久久久久久网站 | 黄色三级在线看 | 最新国产福利 | av丝袜美腿| 国产婷婷 | 国产最新在线视频 | 国产综合婷婷 | 欧美黑人性爽 | 欧美日韩在线免费观看 | 欧美一级电影在线观看 | 精品久久毛片 | 久碰视频在线观看 | 狠狠干在线 | 免费国产在线精品 | 91免费观看视频网站 | 亚洲精品网址在线观看 | 91亚洲国产成人久久精品网站 | 九九综合久久 | 在线观看不卡视频 | 丝袜美女视频网站 | 天堂av免费看 | 最新国产精品久久精品 | 国产精品久久久久影院 | 五月综合网 | 婷婷久久网站 | 欧洲精品一区二区 | 色综合久久天天 | 婷婷在线五月 | 亚洲观看黄色网 | 国产原创中文在线 | 一区二区三区精品在线视频 | 国产精品成人自产拍在线观看 | 亚洲黄色小说网址 | 99久久精品国产欧美主题曲 | 久草9视频| 欧美91成人网 | 日韩在线观看一区 | 婷婷色伊人 | 国产成人精品在线观看 | 国内精品久久久久久久久久清纯 | 国产精品一区二区av日韩在线 | 人人草在线视频 | 国产欧美综合视频 | 亚洲国产成人在线 | 97看片| 夜夜躁狠狠躁 | 久久久久久久免费观看 | 97精品国产97久久久久久久久久久久 | 亚洲国产精品一区二区尤物区 | 丁香视频全集免费观看 | 天天干天天干天天色 | 狠狠狠色丁香综合久久天下网 | 国产在线观看91 | 国产成人一区二区三区在线观看 | 亚洲欧美日本国产 | 日韩精品久久久久久久电影竹菊 | 国产视频一区精品 | 久久美女电影 | 97超碰中文字幕 | 成人午夜免费剧场 | 国产视频每日更新 | 日日操操 | 色婷婷一区 | 在线观看成年人 | 国产视频综合在线 | 欧美日韩一区二区久久 | 五月天激情视频在线观看 | 日韩xxxbbb| 国产一区二区在线播放 | 91九色自拍| 日韩色综合网 | 人人艹人人 | 日韩特级片 | 中文字幕在线视频免费播放 | 一区二区三区中文字幕在线观看 | 久草精品视频在线观看 | 国产免费av一区二区三区 | 久久8精品 | 国产一区视频免费在线观看 | 日韩中文字幕免费电影 | 久草青青在线观看 | 在线视频 一区二区 | 高清不卡毛片 | 国产成人黄色 | 麻豆一二三精选视频 | 97视频在线免费 | 美女视频久久 | 日韩在线网址 | 五月开心六月婷婷 | 激情久久婷婷 | 91黄色免费网站 | 久久国产二区 | 色诱亚洲精品久久久久久 | 久久久穴| 久青草视频 | 精品久久久久久久 | 91污在线 | 在线国产日韩 | 黄色动态图xx | 99精品视频在线播放观看 | 99re在线视频观看 | 久久看视频 | 精品亚洲免a | 在线播放日韩 | 狠狠的干狠狠的操 | 午夜免费久久看 | 美女免费网站 | 国产一二区视频 | 亚洲成人频道 | 午夜在线国产 | 欧美做受高潮1 | 蜜臀av免费一区二区三区 | 国产午夜视频在线观看 | 国产成本人视频在线观看 | 欧美激情精品久久久久久变态 | 麻花天美星空视频 | 中文字幕久久精品 | 在线观看亚洲精品 | 亚洲黄色片在线 | 亚洲一级电影视频 | 五月丁色 | 狠狠久久 | 日本中文在线观看 | 亚洲成av人片在线观看无 | 中文字幕第一页在线视频 | 久久久久久久免费观看 | 国产一区免费在线 | 99视频免费看 | 国产精品一区二区av影院萌芽 | 欧美日韩视频在线观看一区二区 | 国产视频97 | 精品婷婷 | 婷婷六月网 | 天堂av网在线 | 99久久久成人国产精品 | 国产区精品| 亚洲综合激情 | 超碰97在线资源站 | 丁香婷婷电影 | 在线有码中文字幕 | 深夜免费小视频 | 国产网站在线免费观看 | 久久夜av| 99精品黄色 | 麻豆一精品传二传媒短视频 | 色欧美88888久久久久久影院 | 久久久久国产a免费观看rela | 少妇性色午夜淫片aaaze | 一本一本久久aa综合精品 | 免费成人av网站 | 国产亚洲精品久久久久久久久久久久 | 色哟哟国产精品 | 人人狠狠综合久久亚洲婷 | 另类老妇性bbwbbw高清 | 91天堂在线观看 | 日本精品免费看 | 中文在线a在线 | 久久精品1区2区 | av青草| 亚洲jizzjizz日本少妇 | 成人av在线直播 | 中文字幕在线影院 | 国内成人精品2018免费看 | 香蕉久久久久久久 | 91福利视频久久久久 | 亚洲一级片在线观看 | avav片| 在线三级av | 欧美日韩不卡在线 | 成人蜜桃 | 91私密视频 | a在线视频v视频 | 国产精品白浆视频 | 六月丁香激情综合色啪小说 | 国产精品自在线 | 国产精彩视频一区二区 | 日韩,精品电影 | 色婷婷免费视频 | 精品国产自在精品国产精野外直播 | www.天天色.com| 97精品国产97久久久久久免费 | 久久精品这里精品 | 国产成人333kkk| 99久久精品国产一区 | 亚洲欧美国内爽妇网 | 亚洲天天做 | 国产精品入口传媒 | 人人爽久久涩噜噜噜网站 | 九九视频免费观看视频精品 | 97**国产露脸精品国产 | 日免费视频 | 亚洲六月丁香色婷婷综合久久 | 国产视频97 | 国产精品欧美在线 | 五月天亚洲激情 | 97色se| 六月婷婷久香在线视频 | 久久人人插 | 天天射天天爱天天干 | 丁香网五月天 | 久久久久婷 | 国产高清中文字幕 | 四虎影视成人永久免费观看亚洲欧美 | 久久精品国产亚洲 | 国产精品免费久久久久影院仙踪林 | 最近中文字幕高清字幕免费mv | 伊人亚洲精品 | 国产成人精品亚洲a | 激情影院在线 | 五月天丁香亚洲 | 97国产超碰在线 | 国产精品成人自拍 | 五月激情站 | 日韩av中文在线观看 | 久爱综合 | 日韩视频免费在线观看 | 伊人狠狠 | 久久精品美女视频网站 | 激情网在线视频 | 日韩中文字幕一区 | 一区二区三区高清在线 | 在线а√天堂中文官网 | 91亚洲精品久久久蜜桃 | 中文在线资源 | 欧美日韩免费观看一区=区三区 | 青草视频在线看 | 久草视频免费观 | 夜夜躁狠狠躁日日躁 | 日本精品久久久久久 | 最近的中文字幕大全免费版 | 欧美日韩高清在线 | 欧美日韩精品免费观看视频 | 日韩精品一区二区在线视频 | 国产精品青青 | 欧美视频国产视频 | 婷婷黄色片 | 欧美日韩高清一区二区 国产亚洲免费看 | 天天狠狠 | 国产中文字幕视频在线观看 | 人人舔人人爱 | 亚洲高清在线观看视频 | 国产精品免费久久久久影院仙踪林 | 在线免费观看国产黄色 | 国产色拍拍拍拍在线精品 | 国产在线视频导航 | 国产视频不卡一区 | 成人久久18免费 | 亚洲免费公开视频 | 人人爽人人搞 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲mv大片欧洲mv大片免费 | 成人国产精品久久久久久亚洲 | 国产精品扒开做爽爽的视频 | 在线视频 你懂得 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 天天操天天操天天操天天 | 中文字幕永久免费 | 精品国产一区二区三区日日嗨 | 超级碰99 | 欧美激情精品久久久久 | 国产精品视频永久免费播放 | 午夜成人免费影院 | www视频在线播放 | 激情五月婷婷激情 | 国产伦理精品一区二区 | 国产精品一区二区三区在线 | 免费的国产精品 | 久久精品—区二区三区 | 亚洲 中文 在线 精品 | 成人综合日日夜夜 | 中文字幕乱偷在线 | 2023年中文无字幕文字 | 玖玖在线播放 | 好看av在线 | 色噜噜噜噜 | 一区二区三区视频网站 | 精品视频免费播放 | 国产精品久久久免费看 | 日韩精品久久一区二区 | 久久久久久久久久久久影院 | 国产麻豆视频网站 | 成人app在线免费观看 | 狠狠干狠狠艹 | 欧美性色19p| 国产精品日韩在线 | 午夜一级免费电影 | 热久精品| 久久久午夜视频 | 亚洲美女在线一区 | 片网址| 最近高清中文在线字幕在线观看 | 四虎影视成人 | 国产一区在线看 | 麻豆视频入口 | 24小时日本在线www免费的 | 成人免费在线视频观看 | 亚洲天堂毛片 | 久久福利电影 | 国产在线a免费观看 | 国产亚洲精品女人久久久久久 | 精品国产伦一区二区三区观看说明 | 日韩一区二区三区不卡 | 国产视频一区二区三区在线 | 麻豆视频在线免费观看 | 日韩精品观看 | 久久综合久久综合久久 | 日韩在线观看 | 天天天天干 | 国产一区二区在线观看免费 | 天天做日日爱夜夜爽 | 国产精品久久久久久久久软件 | av中文字幕不卡 | 久久精品欧美一区二区三区麻豆 | 五月婷婷激情网 | 免费观看的黄色片 | 92精品国产成人观看免费 | 欧美日韩不卡一区 | 91久久国产精品 | 中文字幕资源在线观看 | av中文字幕不卡 | 日本巨乳在线 | 免费在线观看成人小视频 | 美女网站视频免费黄 | 碰天天操天天 | 精品国产理论 | 中文字幕在线观看视频一区二区三区 | 国产123av| 丁香在线观看完整电影视频 | 欧美日韩精品在线 | 久久理论影院 | 99 视频 高清 | 日本h在线播放 | 中文在线最新版天堂 | 亚洲最新av在线网址 | 日韩在线播放欧美字幕 | 欧美尹人| 亚洲a免费 | 午夜精品视频福利 | 五月导航| 91久久精品一区二区三区 | 国产麻豆精品久久 | www.色婷婷.com | 久久这里只有精品视频首页 | 国产精品免费在线播放 | 在线免费高清视频 | 黄色毛片大全 | 黄色一级在线观看 | 亚洲视频免费在线看 | 欧美激情视频在线观看免费 | 欧美最爽乱淫视频播放 | 黄a网 | 久久久久久久久久久电影 | 成人免费视频在线观看 | 国产女教师精品久久av | 日韩中文字幕91 | 国产婷婷| 亚洲高清免费在线 | 亚洲激情小视频 | 亚洲精品黄网站 | 午夜精品视频一区 | 欧美成人亚洲 | 在线观看日韩免费视频 | 99久久久免费视频 | 日韩理论在线视频 | 深爱开心激情网 | 成人亚洲精品久久久久 | 亚洲免费成人av电影 |