ADO.NET基础_ADO.NET基本概念
作者:田超凡
版权所有,转载请注明原作者,仿冒侵权必究法律责任
1.如何使用T-SQL语句进行增删改查操作?聚合函数有哪些?分别有什么作用?
T-SQL插入数据:
一次插入一行:
INSERT INTO table_name(column1_name,column2_name..)
VALUES (value1,value2...)
一次插入多行:
已存在表中数据插入已存在表中:
INSERT INTO table_name(column1_name,column2_name..)
SELECT (column1_name,column2_name..)
FROM table_name
已存在表中的数据插入到新表中(自动创建新表):
SELECT column1_name,column2_name..
INTO table_name
FROM table_name
联合插入多行数据(手动输入)
INSERT INTO table_name(column1_name,column2_name..)
SELECT value1,value2 UNION
SELECT...最后一行结尾不加UNION
T-SQL删除数据
DELETE FROM table_name
WHERE..
删除表中所有数据
DELETE FROM table_name=TRUNCATE TABLE table_names
T-SQL修改数据
UPDATE table_name SET column1_name=value1,column2_name=value2
WHERE...
T-SQL查询数据
SELECT * FROM table_name
SELECT column1_name,column2_name...
FROM table_name
WHERE...
聚合函数:基于某个列进行计算,返回计算后的值
SUM()求和
AVG()平均数
MAX()最大值
MIN()最小值
COUNT()计数
2.C#语言中的基础语法是什么?
命名空间:namespace
类:class
程序的入口:Main()方法
变量:一个变量用来存储一个数据,在内存中划出一块存储空间,变量的值可以随着程序运行过程根据需要进行修改
常量:const常量是指程序运行过程中保持不变的值,常量必须声明并赋值后才能使用,不能强制修改常量的值
3.C#语言中的逻辑控制语句有哪些?
选择结构:
if_else/if-else if/多重if/嵌套if/switch-case
循环结构:
while/do-while/for/foreach
跳转语句:
break/continue/return
4.类和对象的关系是什么?什么是封装?访问修饰符有哪些,分别有什么作用?
类是对象的抽象,对象是类的实例。new一个对象的过程可以理解为类的实例化的过程。对象可以封装类的属性和方法,实现信息隐藏。
封装就是将属性和方法保存在一起,可以有选择性的隐藏或显示类的属性和方法,提高程序的安全性。
访问修饰符:
public 可以在其他任何类中使用
private 只能在当前类中使用
protected 只能在同一个包中,继承链中使用
internal 只能在同一个项目中使用
5.方法的返回值有哪几种情况?方法的参数有哪几种情况?字段、属性、方法的区别是什么?什么是值传递和引用传递,二者有什么区别?
方法的返回值:可以有返回值(必须在方法主体中使用return返回值),也可以没有返回值(方法要声明为void)
方法的参数:无参方法和带参方法,如果是带参方法,则实参的数量、类型、顺序都要和形参保持一致,
字段:描述类具有的特征
属性:封装字段,保证信息的安全性
方法:描述类具有的功能
值传递:参数不使用ref修饰,调用方法后不会保留参数的更新值
引用传递:参数使用ref修饰,会保留参数的更新值
5.数据库表的基本结构是什么?
字段、数据类型、约束、主外键、默认值、标识列
6.C#语言中String类常用处理字符串的方法有哪些?""和string.Empty的区别是什么?
比较字符串的值是否相等:Equals()
获取字符串长度:Length
比较字符串:Compare(str1,str2)
获取指定字符串在目标字符串中的索引:
indexOf()首次出现的索引
lastIndexOf()最后一次出现的索引
提取字符串:Substring(int startIndex,int length)
分割字符串:Split()
连接字符串:Join()
消除两端空格:Trim()
转换为大写/小写:ToUpper()/ToLower()
""会为字符串对象分配一个长度为0的存储空间
string.Empty表示空字符串,不会为字符串分配存储空间
7.如何使用T-SQL语句创建数据库、表、进行表结构操作?(DML数据操作语言)
T-SQL创建数据库:
CREATE DATABASE 数据库名
ON PRIMARY
(
NAME='',
FILENAME='',
SIZE=,
MAXSIZE=,
FILEGROWTH=
)
LOG ON
(
NAME='',
FILENAME=''
SIZE=,
MAXSIZE=,
FILEGROWTH=
)
GO
T-SQL创建表
CREATE TABLE 表名
(
列名 数据类型 列的特征(包括是否为空IS NULL/是否有默认值DEFAULT/是否是标识列IDENTITY/是否是主键PRIMARY KEY)
)
GO
T-SQL操作表结构:
添加约束
ALTER TABLE 表名
ADD CONSTRAINT 约束名 约束类型 约束内容
插入列:
ALTER TABLE 表名
ADD 列名 数据类型
修改列的数据类型:
ALTER TABLE 表名
ALTER COLUMN 列名 数据类型
删除列:
ALTER TABLE 表名
DROP COLUMN 列名
8.什么是主键和外键?数据表之间的主外键关系怎么建立?
对于已建立主外键关系的表能够起到什么效果?
主键用来唯一标识表中每一行,强制实体完整性,一个表只能有一个主键,当需要将两列或两列以上的列设置为一个主键时,则该主键也叫复合主键。
外键用来建立引用关系,确保从表中的某个数据项在主表中必须存在,强制引用完整性,一个表可以有多个外键
建立主外键关系的方式:
①在设计器中添加关系:选择主键表、主键列以及对应的外键表、外键列
②使用ALTER TABLE 语句
ALTER TABLE 表名
ADD FOREIGN KEY (外键)
REFERENCES 主表(主键)
对于已建立主外键关系的表而言:在操作表中数据时会有限制:
必须先插入主表中的数据,再插入从表中的数据
修改主表中的数据后也要同时修改从表中的数据,不能孤立从表中的记录
删除主表前先删除主表
总的来说,在建立了主外键关系的表中,外键表中外键列中的数据必须存在于已经与它建立了主外键关系的主表中的主键列中
※学习本章知识,你需要掌握的知识点有:
1.什么是ADO.NET?ADO.NET的两大核心组件是什么?什么是断开连接机制?
2.什么是.NET FrameWork数据提供程序?什么是DataSet数据集?二者分别有什么作用?
3.不同数据库的数据提供程序分别位于.NET框架中的哪些命名空间中?.NET FrameWork数据提供程序四大核心对象是什么?分别有什么作用?他们在SQL Server数据提供程序中的类名是什么?在SQL Server数据提供程序中,Connection和Command对象的属性和方法有哪些?
4.什么是编译错误?什么是运行错误?什么是异常?
5.处理异常的关键字是哪些?分别有什么作用,捕获异常流程是怎样的?
6.使用Connection对象和Command对象的语句流程和基本语法顺序是怎样的?连接数据库的连接字符串是什么?连接字符串的每一部分分别有什么作用?
7.使用Connection对象建立和数据库的连接以及使用Command对象对数据库中数据进行操作时的注意事项有哪些?
※学习完本章之后,可以对照下面我的自我总结看看有没有掌握本章的知识点:
1.
ADO.NET位于Microsoft .NET Framework(.NET框架)中,是.NET框架中的框架类库FCL中的重要组成部分之一,ADO.NET的主要作用是访问和操作数据库,使数据库和应用程序进行交互,从而可以通过应用程序更加灵活方便地对数据库中的数据进行处理,提高数据库的重用性,同时也给用户带来了很好的用户体验,使用户在操作数据库时更方便、更快捷,并且由于和应用程序结合在了一起,通过应用程序的组件渲染以及其他的特效使得ADO.NET可以在处理数据库中的数据同时借助应用程序这一强有力的支持得到了广大互联网乃至其他各个行业用户的一致好评。
ADO.NET是.NET Framework中一组允许应用程序和数据库实现交互的类。.NET Framework中的两大核心组件是:.NET Framework数据提供程序和DataSet数据集。使用ADO .NET在操作数据库中的数据主要有两种处理机制:连接机制和断开连接机制。连接机制体现在可以通过C#编程语言建立和数据库的连接,然后对数据库中的数据进行高效的访问和操作,从而不需要每次都手动进入数据库管理系统中通过查询窗口对数据库中的数据进行操作,提高了工作效率。断开连接机制主要体现在.NET Framework中的核心对象DataAdapter数据适配器和ADO .NET的另一大组件DataSet数据集,使用DataAdapter可以建立数据库和数据集之间的关系,通过Fill()方法将数据库中的数据填充到数据集中,如果应用程序更新了数据集中的数据,则可以再通过Update()方法将数据集中的数据同步提交到数据库。
2.
.NET Framework数据提供程序通过核心对象可以对数据库中的数据进行快速的增删改查操作,主要适用于操作数据。
数据集是独立于任何数据库存在的,可以断开和数据库的连接并操作数据。从而不需要每次都要打开和数据库的连接。数据集其实就是将数据库中的数据临时存储到本地,在需要对数据库中的数据进行操作时,直接对数据集中的数据进行操作,然后通过数据适配器提供的方法将数据集中的数据和数据库中的数据同步。
3.
不同数据提供程序的命名空间:
SQL Server数据提供程序 System.Data.SqlClient;
OLEDB 数据提供程序 System.Data.OleDb;
ODBC数据提供程序 System.Data.Odbc;
Oracle 数据提供程序 System.Data.OracleClient;
EntityClient 实体数据模型 System.Data.EntityClient;
.NET Framework数据提供程序的四大核心对象是:
Connection建立和数据库的连接
Command执行命令
DataReader 读取只进且只读的数据流
DataAdapter 数据适配器,建立数据库和数据集之间的关系
四大核心对象在SQL Server数据提供程序中的类名分别是
SqlConnection/SqlCommand/SqlDataReader/SqlDataAdapter
SqlConnection建立和数据库的连接
属性:
ConnectionString 连接字符串
方法:
void Open()打开连接
void Close()关闭连接
SqlCommand执行命令
属性:
Connection已经定义好的connection对象
CommandText 需要执行的T-SQL语句
方法:
int ExecuteNonQuery()对数据进行不返回值的操作(比如增、删、改),返回受影响的行数
SqlDataReader ExecuteReader()或
SqlDataReader ExecuteReader(CommandBehavior behavior)返回DataReader对象,需要先引入System.Data命名空间
Object ExecuteScalar()返回查询结果中的第一个值,返回值Object引用类型,实际使用使用过程中一般需要将结果进行拆箱(强制转换)为其他基本数据类型。
4.
编译错误指的是程序在运行之前(编译时)发生的错误,运行错误指的是通过编译后在运行时发生的错误。异常指的是运行错误(运行时发生的错误)。异常不能绝对避免,但是可以预知。因此在编写代码时要将程序运行过程中可能发生的错误进行预测,然后进行编码处理,提高程序的健壮性。
5.处理异常的关键字:
try在运行时首先进入try块执行try块中的语句,也就是说try块中的语句应该放入一般情况下不会发生异常或者刚开始进入代码块时需要预先执行的语句。
Catch进行异常处理,在执行try块中的语句时如果发生异常则直接中断try块中语句的执行,跳进到catch块中执行catch块中的语句。因此catch块中应该放入当发生程序发生异常时的处理语句。
finally块中一般放入程序无论是否发生异常都需要在最后执行的语句。
捕获异常流程:
以下几种情况的执行流程是针对于一个完整的捕获异常语句而言的
try
{
}
catch(Exception e)异常类
{
}
finally
{
}
- 程序运行过程中没有发生异常
try-finally
执行完try块中的语句后再执行finally块中的语句
②程序运行过程中发生异常:
- 在try块中发生异常:
在发生异常的位置中断try块中的语句的执行,直接跳进到catch块中执行catch块中的异常处理语句,最后再执行finally块中的语句
(2)在catch块中发生异常
直接执行catch块中的异常处理语句。
(3)在finally块中发生异常
运行时直接报错,一般不做异常处理。
6.使用Connection对象建立数据库连接和Command对象执行命令的基本流程顺序是:
①在命名空间声明之前引入SQL Server数据提供程序的命名空间
using System.Data.SqlClient
②定义连接字符串
string sqlConn=”Data Source=.;Initial Catalog=database_name;User ID=sa; Pwd=123456”;
③定义一个SqlConnection对象,参数是连接字符串
SqlConnection connection=new SqlConnection(strConn);
④打开连接
connection.Open();
⑤定义需要执行的T-SQL语句,存储在一个字符串变量中
string sql=”T-SQL语句”;
⑥定义SqlCommand对象,将需要执行的Sql语句字符串和已经定义好的SqlConnection对象作为参数传入。
SqlCommand command=new SqlCommand(sql,connection);
⑦根据不同需求调用command对象的不同方法执行,注意:
需要考虑类型转换的问题,有些方法的返回值需要进行类型转换。
⑧关闭连接
connection.Close();
建议插入异常处理代码完善整个执行流程,从而提高程序的健壮性。
连接字符串的组成:
Data Source=需要连接的数据库所在的服务器的名称,一般为.或local或127.0.0.1
Initial Catalog=需要连接的数据库的名称
User ID=数据库的用户名
Pwd=用户名对应的密码(如密码为空,则可以省略该项)
完整的连接字符串例子:
“Data Source=.;Initial Catalog=MySchool;User ID=sa;Pwd=123456”
7.
(1)需要访问和操作数据库,一定要先引入相应数据提供程序的命名空间,SQL Server命名空间是System.Data.SqlClient;
(2)。定义连接字符串,注意连接字符串的各个组成部分,不要写错单词和标点符号,也不要写错需要连接的对象的名称(如数据库名),还要确保定义的用户名和密码是正确的,能够正常访问和操作数据库
(3)一定要注意SqlConnection对象在定义时必须将连接字符串作为参数传入。SqlCommand对象在定义时必须将需要执行的SQL语句字符串和已经定义好的SqlConnection对象作为参数传入,并且第一个参数是需要执行的SQL语句字符串,第二个参数是已经定义好的SqlConnection对象
(4)在定义SQL语句时,要注意当需要传入字符串型数据和数据库中的数据进行比对时,字符串型数据要加单引号,列名和表名一般建议使用[]中括号括起来,方便排错,保持代码的清晰和规范,提高代码可读性。查询语句要符合SQL语言规范
(5)在使用Command对象执行命令之前一定要打开数据库的连接,在执行完对数据的操作流程之后,必须关闭数据库的连接,提高性能。
(6)数据的类型要准确,必要时进行数据类型转换。
(7)对象在使用之前必须实例化,不能为空对象。