欢迎光临
我们一直在努力

SQL三大完整性约束 + C# WinForm数据库连接与数据绑定

考试全覆盖:主键、外键、唯一约束、Check约束、默认值约束、三大完整性体系 + C#ADO.NET原生连接、DataReader读取、DataGridView绑定

核心体系:实体完整性、域完整性、引用完整性

第一部分:数据库核心理论(简答题必背)

1. 主键(Primary Key)

关系型数据库中,能唯一标识单条数据行的字段,作为表的唯一标识。

主键四大特性(满分背诵)

  • 唯一性:主键值绝对不能重复

  • 非空性:主键字段不允许为NULL

  • 稳定性:主键一旦确定,业务中禁止修改

  • 永久性:全数据库生命周期唯一不变

常见主键:学生ID、身份证号、订单编号

2. 外键(Foreign Key)

用于两张表关联的字段,指向另一张表的主键,作用是保证多表数据一致性。

外键三大特点

  • 可空性:外键允许为空,代表暂无关联数据

  • 一致性:外键值必须在主表中存在,保证数据合法

  • 引用性:外键必须关联另一张表的主键

3. 数据库三大完整性约束(终极考点)

3.1 实体完整性(行约束)

约束整行数据唯一有效。 实现方式:主键约束、唯一约束

3.2 域/列完整性(字段约束)

约束字段数据合法、合规。 实现方式:非空、默认值、Check范围约束、长度约束

3.3 引用完整性(表关联约束)

约束多表关联数据一致。 实现方式:外键约束


第二部分:SQL 六大约束实操代码(可直接运行)

约束命名规范(考试标准): PK_主键、UQ_唯一、CK_检查、FK_外键、DF_默认值

1. 主键约束 添加/删除

–存在则删除旧主键约束,避免重复报错
if exists (select * from sysobjects where name = 'PK_Id')
alter table YueShu1 drop constraint PK_Id

–添加主键约束:Id作为主键
alter table YueShu1 add constraint PK_Id primary key(Id)

2. 唯一约束(单列不重复)

–年龄唯一,不能重复
if exists (select * from sysobjects where name = 'UQ_Age')
alter table YueShu1 drop constraint UQ_Age

alter table YueShu1 add constraint UQ_Age unique(Age)

3. Check范围约束(域完整性)

–年龄范围约束:10~40之间
if exists (select * from sysobjects where name = 'CK_Age')
alter table YueShu1 drop constraint CK_Age

alter table YueShu1 add constraint CK_Age check (Age between 10 and 40)

4. 字符串长度约束

–姓名长度小于5个字符
if exists (select * from sysobjects where name = 'CK_Name')
alter table YueShu1 drop constraint CK_Name

alter table YueShu1 add constraint CK_Name check (len(Name)<5)

5. 默认值约束

–地址为空时,默认赋值“地址不详”
if exists (select * from sysobjects where name = 'CK_Address')
alter table YueShu1 drop constraint CK_Address

alter table YueShu1 add constraint CK_Address default ('地址不详') for Address

6. 外键约束(引用完整性核心)

–YueShu1表的ClassId 关联 YueShu2表的ClassId主键
if exists (select * from sysobjects where name = 'FK_ClassId')
alter table YueShu1 drop constraint FK_ClassId

alter table YueShu1
add constraint FK_ClassId
foreign key(ClassId) references YueShu2(ClassId)

第三部分:C# WinForm ADO.NET 数据库完整连接代码

功能:连接远程SQL服务器、查询Students表、数据加载到DataGridView

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace _1数据库连接
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//1.数据库连接字符串:服务器IP端口、数据库名、账号密码
string connectionString = "server=192.168.215.96,1344;database=StudentDataBase;uid=sa;pwd=123456";
SqlConnection connection;

//绑定数据到DataGridView核心方法
public void BindGridView()
{
try
{
//2.创建连接对象并打开连接
connection = new SqlConnection(connectionString);
connection.Open();

//3.编写查询SQL语句
string cmdString = "select * from Students";

//4.创建指令执行对象
SqlCommand command = new SqlCommand(cmdString, connection);

//5.创建读取器:流式读取数据库数据
SqlDataReader dataReader = command.ExecuteReader();

//6.创建数据表容器,装载数据
DataTable dt = new DataTable();
dt.Load(dataReader);

//7.绑定数据到界面表格
dataGridView1.DataSource = dt;

//8.关闭连接(必须关闭,防止占用)
connection.Close();
}
catch (Exception e)
{
//异常捕获:连接失败、SQL错误、网络问题
Console.WriteLine(e.Message);
}
}

//按钮点击触发数据加载
private void button1_Click(object sender, EventArgs e)
{
BindGridView();
}
}
}

第四部分:C#数据库连接核心流程(必考流程题)

  • 定义连接字符串:指定服务器、数据库、账号密码

  • 创建SqlConnection对象:建立通道

  • Open()打开数据库连接

  • 编写SQL语句

  • SqlCommand:绑定SQL与连接对象

  • SqlDataReader:读取执行结果

  • DataTable.Load():装载数据

  • DataGridView绑定数据源

  • Close()关闭连接(重中之重)

  • 第五部分:期末高频简答题汇总

    1. 简述数据库三大完整性约束

    • 实体完整性:保证每行数据唯一,由主键、唯一约束实现。

    • 域完整性:保证字段数据合法,由Check、默认值、非空、长度约束实现。

    • 引用完整性:保证多表关联数据一致,由外键约束实现。

    2. 主键与外键区别

    • 主键:本表唯一、非空、标识单条数据。

    • 外键:关联他表主键、可空、维护多表关系。

    3. ADO.NET读取数据步骤

    连接字符串→创建连接→打开连接→Command执行→DataReader读取→DataTable装载→控件绑定→关闭连接

    第六部分:易错考点

    • 所有约束添加前,必须判断存在并删除,防止重复创建报错

    • 外键约束只能引用主表主键/唯一键

    • C#数据库连接用完必须Close,否则数据库连接池耗尽

    • SqlDataReader是只读流式读取,必须借助DataTable绑定控件

    赞(0)
    未经允许不得转载:171主机测评 » SQL三大完整性约束 + C# WinForm数据库连接与数据绑定
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址