类和对象:
- 抽象是对具体问题进行概括
- 类是对事物的一种抽象定义,在C#中类可以定义字段、属性和方法等成员。
- 在C#中实例化对象后,可以通过对象名.方法名进行调用成员方法
- 在C#中,定义命名空间的关键字是namespace,使用命名空间的关键字是using。
- 属性:是对字段的封装,能够阻止非法数据的输入,从而保护内部数据的安全。
ADO.NET基础:
- ADO.NET是微软公司提供的一款全新的数据库访问技术,客户端应用程序可以使用ADO.NET来连接数据源,并查询、添加、删除和更新所包含的数据。
- ADO.NET最大的优势在于可以在数据源完全断开连接的情况下,对数据进行更新修改,在将数据的更新情况返回至数据源。
- ADO.NET的解决方案是以XML格式表示内存数据(数据集),然后将数据以XML格式进行发送。
.NET Framework数据提供程序:
| .NET Framework数据提供程序 | 说明 |
| SQL Server .NET Framework数据提供程序 | 提供对Microsoft SQL Server中数据的访问,使用System.Data.SqlClient命名空间 |
| OLE DB .NET Framework数据提供程序 | 提供对使用OLE DB公开的数据源(如Access、Excel等)中数据的访问,使用System.Data.oleDb命名空间 |
| ODBC .NET Framework数据提供程序 | 提供对使用ODBC公开的数据源中数据的访问,使用System.Data.Odbc命名空间 |
.NET Framework数据提供程序核心对象:
| 对象 | 说明 |
| Connection | 建立与特定数据源的连接 |
| Command | 对数据源执行命令 |
| DataReader | 从数据源中读取只进只读的数据流 |
| DataAdapter | 使用数据源填充DataSet并支持更新 |
DataSet数据集:
DataSet数据集是数据驻留在内存中的表现形式。
ADO.NET操作数据库的方式步骤:
使用Connection对象、Command对象和DataReader对象实现非断开式访问数据库:
- 创建数据库连接对象Connection,并进行连接
- 创建命令对象Command
- 执行相应的SQL命令
- 关闭数据库连接
SQL Server身份验证连接字符串:
server=服务器名;database=数据库名;uid=用户名;pwd=密码;Windows身份验证连接字符串:
server=服务器名;database=数据库名;Intergrated Security=true;Command对象:
Command对象用于执行SQL命令,对数据库中的数据进行增删改查和执行聚合函数。
Command对象的常见属性:
- CommandText:获取或是设置对数据库执行的T-SQL命令
- Connection:获取或设置连接上数据库的Connection对象
Command对象的常用方法:
- ExecuteNonQuery:执行T-SQL语句,并返回受影响的行数
- ExecuteReader:执行查询命令,并返回DataReader对象
- ExecuteScalar:执行查询命令,返回结果集中首行首列的值
执行聚合函数语法:
Object 结果集中首行首列的值 = 命令对象.ExecuteScalar();注意:ExecuteScalar方法返回的是Object对象,需要对其进行类型转换。
DataReader对象:
它提供了一个只读只进的数据读取器,用于从查询结果中读取数据,他每次只能读取一行数据,并且在读取过程中,必须保持连接处于打开的状态。
DataReader对象常用属性:
- FieldCount:获取每行数据的列数
- HasRows:指示查询结果中是否还存在未读取的数据,bool类型
DataReader对象常用的方法:
- Read:使DataReader前进到下一条记录,如果下一条有记录。则返回true。否则返回false
- Close:关闭DataReader对象
- GetName:获取指定列的名称
SqlDataReader 数据库读取对象 = 命令对象.ExecuteReader();异常处理类与DBHelper类:
- 类的静态成员包括静态字段、静态方法和静态属性。
- 被关键字static修饰的方法被称为静态方法,没有被static修饰的方法称为实例方法。
- 程序中的错误可以分为三类,即编译错误、逻辑错误和异常。
- 在C#中,提供了3种常见的异常处理结构,分别是try…catch、try…catch…finally和try…finally
字符串的处理方法:
C#中有一个String类,他是.NET Framework类库中的内置类,它位于System命名空间中并且它包含很多对字符串处理的方法。
常用字符串处理的方法:
- int IndexOf(string value):获取指定的value字符串在当前字符串中第一个匹配项的索引,如果找到了value,就返回他的索引,如果没有找到,就返回-1
- int LastIndexOf(string value):获取指定的字符串value在当前字符串中最后一个匹配项的索引,如果找到了value,就返回他的索引,如果没有找到,就返回-1
- string Join(string separator,string[] value):在字符串数组value中的每个字符串用指定的分隔符sparator连接,返回连接后的字符串
- string[] Split(char separator):用指定的分隔符separator分隔字符串,返回分割后的字符串组成的数组
- string SubString(int startIndex,int length):从指定的位置stratIndex开始检索长度为length的子字符串
- string ToLower():获取字符串的小写形式
- string ToUpper():获得字符串的大写形式
- string Trim():去掉字符串中两端的空格
- string Format(string str,params object obj):将参数列表中的参数数据按照顺序根字符串进行拼接。
静态方法与实例方法的区别:
| 静态方法 | 实例方法 |
| 需要static关键字修饰 | 不需要static关键字修饰 |
| 只能使用类名进行调用 | 只能使用对象进行调用 |
| 只能访问静态成员 | 可以访问静态成员也可以访问实例成员 |
| 加载类时初始化 | 创建对象时初始化 |
DBHelper类:
/// <summary>
/// 数据库操作类
/// </summary>
class DBHelper
{
// 构造函数
/// <summary>
/// 数据库操作对象
/// </summary>
public DataBase() { }
/// <summary>
/// 数据库操作对象
/// </summary>
/// <param name="serverLocalHost">服务器地址</param>
/// <param name="serverTableName">数据库名</param>
/// <param name="serverUserName">数据库用户名</param>
/// <param name="serverPassword">数据库密码</param>
public DataBase(string serverLocalHost, string serverTableName, string serverUserName, string serverPassword)
{
this.ServerLocalHost = serverLocalHost;
this.ServerTableName = serverTableName;
this.ServerUserName = serverUserName;
this.ServerPassword = serverPassword;
}
#region 数据库连接变量
/// <summary>
/// 服务器地址
/// </summary>
private static string serverLocalHost = Database_Info.serverLocalHost;
public string ServerLocalHost { set => serverLocalHost = value; }
/// <summary>
/// 数据库名
/// </summary>
private static string serverTableName = Database_Info.serverTableName;
public string ServerTableName { set => serverTableName = value; }
/// <summary>
/// 数据库用户名
/// </summary>
private static string serverUserName = Database_Info.serverUserName;
public string ServerUserName { set => serverUserName = value; }
/// <summary>
/// 数据库密码
/// </summary>
private static string serverPassword = Database_Info.serverPassword;
public string ServerPassword { set => serverPassword = value; }
/// <summary>
/// 数据库连接字符串
/// </summary>
private static string DataCodeKey = "server=" + serverLocalHost + ";database=" + serverTableName + ";uid=" + serverUserName + ";pwd=" + serverPassword + ";";
#endregion
#region 数据连接和查询对象
/// <summary>
/// SqlConnection对象
/// </summary>
private SqlConnection conn = null;
/// <summary>
/// SqlCommand对象
/// </summary>
private SqlCommand comm = null;
/// <summary>
/// SqlDataReader对象
/// </summary>
private SqlDataReader sdr = null;
/// <summary>
/// SqlDataAdapter对象
/// </summary>
private SqlDataAdapter sda = null;
#endregion
/// <summary>
/// 连接数据库方法
/// </summary>
/// <param name="commState">是否实例化SqlCommand对象</param>
/// <param name="sql">用于SqlCommand对象中参数的SQL执行语句</param>
/// <param name="resderState">是否启用实例化SqlDataReader对象</param>
public void ConnectToDatabase(bool commState, string sql = "", bool readerState = false)
{
//尝试连接数据库
try
{
//实例化SqlConnection对象
conn = new SqlConnection(DataCodeKey);
//判断是否已打开数据库连接
if (conn.State == ConnectionState.Closed)
{
//数据库关闭,执行该代码块,打开数据库
conn.Open();
}
else if (conn.State == ConnectionState.Broken)
{
//数据库断开连接,执行改代码块,先关闭数据库连接,再重新打开该连接
conn.Close();
ConnectToDatabase(commState, sql, readerState);
}
}
catch (Exception)
{
MessageBox.Show("连接错误!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//是否需要实例化SqlCommand对象
if (commState)
{
comm = new SqlCommand(sql, conn);
//是否需要实例化SqlDataReader对象
if (readerState)
{
sdr = comm.ExecuteReader();
}
}
//如果不需要实例化SqlCommand或SqlDataReader,则实例化SqlDataAdapter对象
else if (!readerState && sql != "")
{
sda = new SqlDataAdapter(sql, conn);
}
}
/// <summary>
/// 数据库数据增删改
/// </summary>
/// <param name="sql">数据库执行语句</param>
/// <returns>返回执行结果(true或false)</returns>
public bool IUDSQL(string sql)
{
//实例化数据库对象并打开数据库连接
ConnectToDatabase(true, sql, false);
//获取数据库执行成功的数据条
int result = comm.ExecuteNonQuery();
//关闭数据库连接,释放资源
conn.Close();
comm.Dispose();
//判断数据库执行语句的执行结果
if (result > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 数据库数据查询(Adapter对象)
/// </summary>
/// <param name="sql">数据库执行语句</param>
/// <returns>以DataSet数据格式返回数据</returns>
public DataSet QueryDataSQLUseAdapter(string sql)
{
//实例化DataSet对象
DataSet ds = new DataSet();
//实例化数据库对象并打开数据库连接
ConnectToDatabase(false, sql, false);
//将数据传输至DataSet中
sda.Fill(ds);
//关闭数据库连接,释放资源
conn.Close();
sda.Dispose();
//返回数据
return ds;
}
/// <summary>
/// 数据库数据查询(Reader对象)
/// </summary>
/// <param name="sql">SQL执行语句</param>
/// <returns>返回数据库中的指定数据</returns>
public List<Dictionary<string, object>> QueryDataSQLUseReader(string sql)
{
//实例化Dictionary和List集合对象
List<Dictionary<string, object>> results = new List<Dictionary<string, object>>();
ConnectToDatabase(true, sql, true);
//循环读取数据
while (sdr.Read())
{
var rowData = new Dictionary<string, object>();
for (int i = 0; i < sdr.FieldCount; i++)
{
rowData[sdr.GetName(i)] = sdr.GetValue(i);
}
results.Add(rowData);
}
// 关闭并清理对象
sdr.Close();
sdr.Dispose();
comm.Dispose();
conn.Close();
//返回数据
return results;
}
/// <summary>
/// 数据库存储过程数据查询(单字符串查询)
/// </summary>
/// <param name="sql">SQL执行语句</param>
/// <returns>返回数据库中的指定数据</returns>
public string ExecuteStoredProcedure(string sql)
{
string res = "";
ConnectToDatabase(true, sql);
// 注册SqlInfoMessage事件来捕获PRINT语句输出的消息
conn.InfoMessage += (sender, e) => res = e.Message;
// 执行查询
comm.ExecuteNonQuery();
//关闭连接释放资源
comm.Dispose();
conn.Close();
//返回数据
return res;
}
}Windows窗体运用:
C#关键字:
- partial:表示“部分的”,这是一个新的特性——分布类,使用该关键字可以将同一个类的代码分开放在多个文件中。
使用Form窗体:
窗体的常用属性:
- Name:窗体对象的名字,可以用在代码中进行标识
- BackColor:窗体的背景色
- Icon:只是窗体的图标。这在窗体的系统菜单框中显示,以及当前窗体最小化是显示
- BackgroundImage:窗体的背景图像
- FormBorderStyle:窗体显示的边框样式,有7个可选的值,默认是Sizable
- MaximizeBox:确定窗体标题右上角释放有最大化框,默认为True
- ShowInTaskbar:确定窗体是否出现在Windows任务栏中,默认为True
- StratPosition:确定窗体第一次显示时的位置
- Text:窗体标题栏中显示的文本
- TopMost:指示窗体是否始终希纳是在此属性未设置为True的所有窗体之上,默认为False
- WindowState:确定窗体的初始可是状态,默认为Normal
FormBorderStyle的属性值及说明:
- Fixed3D:固定的三维边框
- FixedDialog:固定的对话框样式的粗边框
- FixedSingle:固定的单行边框
- FixedToolWindow:不可调整大小的工具窗体边框
- None:无边框
- Sizable:可调整大小的边框
- SizableToolWindow:可调整大小的工具窗体边框
StratPosition的属性及说明:
- Manual:窗体的位置由Location属性决定
- CenterScreen:窗体在当前屏幕内居中,较为常用
- WindowDefaultLocation:窗体定位在Windows默认位置,其尺寸由Size属性决定
- WindowDefaultBounds:窗体定位在Windows默认位置,其边界也由Windows默认决定
- CenterParent:窗体在其父窗体中居中
WindowState的属性值及说明:
- Normal:窗体加载后的初始尺寸由Size属性决定
- Minimized:窗体加载后直接最小化到任务栏
- Maximized:窗体加载后直接最大化
窗体中的常用事件:
- Load:窗体加载事件,窗体加载时发生
- Click:窗体点击事件,单击窗体时发生
- DoubleClick:窗体双击事件,双击窗体时发生
- MouseMove:鼠标移动事件,鼠标移动窗体时发生
- KeyDown:键盘按下事件,在首次按下某个键时发生
- KeyUp:键盘释放事件,在释放某个键时发生
显示消息框:
简单的消息框:
MessageBox.Show("要显示的字符串")带标题的消息框:
MessageBox.Show("要显示的字符串","消息框标题")带标题、按钮的消息框:
MessageBox.Show("要显示的字符串","消息框标题",消息框按钮)带标题、按钮和图标的消息框:
MessageBox.Show("要显示的字符串","消息框标题",消息框按钮,消息框图标)提醒:每个消息框都有一个返回值,是一种DislogResult(对话框返回值)类型,可以通过点击运算符“.”来获取其中的一种返回值,如DialogResult.OK是指用户点击了“确定”按钮返回的值
Windows基础控件:
常用组件分类:
| 组件分类 | 作用 |
| 文本类组件 | 可以在控件上显示文本,如TextBox、Label等 |
| 选择类组件 | 主要为用户提供选择的项目,如RadioButton、CheckBox等 |
| 分组组件 | 可以将窗体中的其他控件进行分组处理,如GroupBox、Panel等 |
| 菜单组件 | 为系统制作功能菜单,如菜单栏、右键快捷菜单等 |
| 工具栏组件 | 提供组菜单中常用的相关工具 |
| 状态栏组件 | 显示应用程序的相关信息 |
大部分控件都具有Anchor(锚定)和Duck(停靠)属性来方便布局。
- Anchor属性:它的作用就是设置控件相对与窗体的某个边缘的距离保持不变
- Dock属性:停靠的意思
- 锁定控件:将其属性值设置为True来将其控件进行锁定
文本类控件:
- Label控件:用于显示用户不能编辑的文本
- TextBox控件:通常用于对文本进行编辑
- 按钮控件(Button):允许用户通过单击来执行操作
菜单、工具栏和状态栏:
- 下拉式菜单(MenuStrip):通常出现在应用程序的顶部
- 弹出式菜单(ContextMenuStrip):又称为右键快捷菜单
- 工具栏(ToolStrip):他给用户提供了应用程序中常用的菜单命令的快速访问速度
选择类控件:
- 下拉组合框控件(ComboBox):为用户提供选择列表
- 复选框控件(CheckBox):只有两种状态(选中和取消)
- 单选按钮控件(RadioButton):多个选项中只允许选择一个
下拉组合框控件(ComboBox)中的属性DropDownStyle的属性值:
- Simple:使ComboBox列表部分总是可见的
- DropDown:使用户可以编辑控件的文本框部分,单击箭头才会显示列表
- DropDownList:用户不可以编辑控件的文本框部分,只能点击箭头选择一项
Windows控件应用:
Windows应用程序分为单文档界面应用程序(SDI)和多文档界面应用程序(MDI)两种形式
多文档界面应用程序:
MDI主要由两种窗体组成:父窗体和子窗体
设置步骤:
- 创建一个Windows应用程序
- 创建多个Form窗体
- 设置MDI窗体。在该窗体的属性面板中,将IsMdiContainer属性设置为True即可
- 设置并显示子窗体。通过设置某个子窗体的MdiParent属性,来显示该子窗体显示在那个MDI父窗体中
注意:每个应用程序中只能设置一个MDI窗体
MDI窗体的常用操作:
对当前活动的子窗体可以使用父窗体的ActiveMdiChild属性来获取。子窗体可以调用LayoutMdi()方法来调整排列方式。
注意:LayoutMdi()方法把MdiLayout枚举值作为参数
MdiLayout枚举值:
- ArrangeIcons:排列所有MDI子窗体图标
- Cascade:所有MDI子窗口层叠排列
- TileHorizontal:所有MDI子窗口水平平铺
- TileVertical:所有MDI子窗口垂直平铺
图片框(PictureBox):
PictureBox的常用属性:
- Image:用于设置显示在图片框控件上的图像
- ImageLocation:用于设置显示在图片框控件上的图像路径
- SizeMode:用于控制调整控件或图片的大小及放置位置
SizeMode的属性值:
- Normal:图象被放置于PictureBox的左上角。如果图像比包含他的PictureBox大,则该图像将被拆剪掉
- StretchImage:PictureBox中的图像被拉伸或收缩,以适应PictureBox的大小
- AutoSize:调整PictureBox的大小,使其等于所包含的图像大小
- CenterImage:如果PictureBox比图像大,则图像将居中显示。如果PictureBox比图像小,则图像将居中显示并裁剪掉超出的部分
- Zoom:图像大小按其原有的长宽比例被等比例放大或是缩小
计时器(Timer):
常用属性:
- Interval:事件发送的间隔(频率),以毫秒为单位
- Enable:设置计时器是否启用,布尔类型
常用方法:
- Start():启动计时器
- Stop():停止计时器
常用事件:
- Tick:定时间隔到自动引发的事件
图片集(ImageList):
常用属性:
- Images:存储在控件中的图像集合
- ImageSize:图像集中图像的大小,最大值为256 * 256
- ColorDepth:图像集中图像的颜色深度
Windows数据显示控件:
DataSet数据集:
- DataSet用于缓存从数据源检索的数据,它具有两个重要的特征:编程模型与数据源独立和支持离线访问
- DataSet类位于System.Data命名空间中
创建DataSet对象:
DataSet 数据集对象 = new DataSet("数据集名称")常用属性:
- Tables:获取包含在DataSet中的表的集合
常用方法:
- Clear:清除DataSet中的数据
数据适配器DataAdapter:
DataAdapter对象用于填充数据集DataSet和更新数据库。
常用属性:
- SelectCommand:用于从数据源中查询记录的Command对象
常用方法:
- Fill():向DataSet的数据表中填充数据
dataAdapter对象.Fill(数据集对象,需要填充的数据表的名称)DataGridView控件:
DataGridView控件提供了一种强大且灵活并以表格形式显示数据的方法
常用属性:
- Name:获取或设置DataGridView控件的名称
- DataSource:获取或设置DataGridView控件所显示数据的数据源
- Rows:获取DataGridView控件中所有行的集合
- Columns:获取DataGridView控件中所有列的集合
- SelectionMode:指示选中单元格的模式,选中一个单元格还是选中整行
- SelectedCells:获取用户选中的单元格的集合
- SelectedRows:获取用户选中的行的集合
- SelectedColumns:获取用户选中的列的集合
- MultiSelect:指示是否允许选择多个单元格、行或列
- AllowUserToAddRows:指示是否允许用户在DataGridView中添加行
- AllowUserToDeleteRows:指示是否允许用户在DataGridView中删除行
- ReadOnly:指示是否允许用户编辑DataGridView的单元格
- AllowGenerateColumns:指示在设置DataGridView时是否自动创建列
- ColumnHeadersVisible:指示是否显示列标题列
- RowHeaderVisible:指示是否显示包含标题的行
- CurrentCell:获取或设置当前处于活动状态的单元格
- CurrentRow:获取包含当前单元格的行
- AutoSizeColumnMode:可见列自动调整大小的模式,Fill:所有列自动填充DataGridView
DataView对象筛选和排序数据:
DataView是一张DataTable的虚拟表,主要用于显示数据,其数据的更改都是发生在DataTable中
常用属性:
- RowFilter:获取或是设置用于筛选DataView中查看那些行的表达式
- Sort:获取或设置DataView的一个或多个排序列以及排序顺序
创建DataView对象:
DataView 对象名 = DataTable.DefaultView;
//或者
DataView 对象名 = DataView(DataTable对象名);Windows高级控件:
树形控件(TreeView):
TreeView控件用于显示具有层次结构的数据,他由层叠的节点Node构成。
常用属性:
- Name:获取或设置控件的名称
- Nodes:TreeView控件根节点集合
- SelectedNode:获取或设置当前TreeView控件中选定的树节点
- ImageList:设置或设置TreeView中所使用的图像集,关联ImageList控件
- ImageIndex:获取或设置树节点显示的图像,在ImageList图像中的索引
- SelectedImageindex:获取或设置节点被选中时显示的图像,在ImageList图像集中的索引
常见事件:
- AfterCollapse:在折叠树节点后触发
- AfterExpand:在展开树节点后触发
- AfterSelect:在更改选中节点后触发
- Click:在点击TreeView控件时触发
常见方法:
- ExpandAll:展开TreeView上的所有节点点
Nodes常见方法:
- Remove:删除指定节点
- Add:添加指定节点
列表视图控件ListView:
ListView控件可以显示带有图标的项列表,且具有多种显示模式。
常用属性:
- Name:控件的名称
- Items:包含控件中所有项的集合
- Columns:控件中显示的所有列标题的集合
- View:控件的显示视图
- LargeImageList:当控件以大图标视图显示时使用的ImageList
- SmallImageList:当控件以小图标视图显示时使用的ImageList
- GridLines:在包含控件中的行和列之间是否显示网络线
- MultiSelect:是否可以选择多项
- SelectedItems:获取在控件中选定的项
- FullRowSelect:单击某项是否选择其所有子项
常用方法:
- Clear():从控件中移除所有项和列,清空ListView
常用事件:
- Click:在单击ListView控件时触发
- SelectedIndexChanged:在选定项发生更改时触发
View属性的值:
- Details:详细视图,标准的二维表格,第一行为表头
- LargeIcon:大图标,每一项显示为一个大图标
- SmallIcon:小图标,每一项显示为一个小图标
- List:列表,每一项显示一行
- Tile:平铺,显示大图标,并在右侧显示详细信息
![[学习笔记 Day03]C#基础:可视化程序设计-资源刺客](http://images.kodo.cdn.itdka.cn/wp-content/uploads/2025/08/20250827185617438.jpeg)

![[学习笔记 Day01]C++基础:简单的程序设计,始于梦想的开始!-资源刺客](http://images.kodo.cdn.itdka.cn/wp-content/uploads/2025/09/20250922171813209.webp)
![[学习笔记 Day02]Vue基础:前端造梦,继续干!-资源刺客](http://images.kodo.cdn.itdka.cn/wp-content/uploads/2025/09/20250919193418264.jpeg)






![[自动化 + 手残党专属]宝塔安装AllinSSL证书管理教程-资源刺客](http://images.kodo.cdn.itdka.cn/wp-content/uploads/2025/11/20251112122722716.png)




暂无评论内容