ADO.NET是一组公开数据访问服务的类,为创建分布式数据共享应用程序提供了一组发放的组件
1.ADO.NET的主要组件
需要用到ADO.NET提供的两个组件:NET数据提供程序和DAtaSet(数据集).
(1).NET数据通提供程序:k可以实现数据集和对数据的快速,只读只进访问。
(2)DataSer(数据集):ADO.NET的断开式的核心组件。
2.NET数据提供程序的四大核心对象
(1)Connection对象:用于开启程序和数据库之间的连接
(2)Command对象:用于对数据库发出一些操作指令。例如,可以对数据库下达查询、新增、修改、删除数据指令,以及调用数据库中的存储过程等。
(3)DataAdapter对象:在数据库和DataSet之间执行数据传输工作。在Command对象下达命令后将返回数据放DataSet(数据集)中.
(4)DataReader对象:当只需逐以读取数据而不需要其他操作时,可以使用DataReader对象。DataReader对象每次只从数据源中提取一条记录.
2.1 Connection连接对象
Connection对象的常用属性
属性 | 说明 |
---|---|
ConnectionString | 设置/获取应用程序连接数据字符串 |
Connection对象的常用方法
方法 | 说明 |
---|---|
void Open() | 用于打开与指定数据库的连接 |
void Close() | 关闭与数据库的连接 |
1.定义连接字符串
Data Source = 服务器名称或IP地址; Initial Catalog = 数据库名; User Id = 用户名; PWD =密码;
2.创建Connection对象
SqlConnection connection = new Sqlconnection(connString);
3.打开数据库连接
调用Connection对象的Open()方法打开数据库连接
connection.Open();
注意:在.NET Core 框架下,不会自动添加System.Data和System.Data.SqlClient的引用.需要在菜单栏,
选择""工具(T)" >"NuGet包管理器(N)";
如何处理异常
try{
//可能会出现异常的代码
}catch(){
//出现异常后进行的处理代码
}finally{
//不管是否出现异常都需要执行的代码
}
command对象概述
执行返回单条连接的select语句,如聚合函数SUM、AVG等
执行返回具有多余记录的select语句
执行DML语句,如修改、插入、删除记录等
执行DDL语句,如创建表。
创建Command对象的语句如下
SqlCommand command = new SqlCommand(String sql, SqlConnection conn);
Command对象的主要属性
属性 | 说明 |
---|---|
Connection | Command对象使用的数据库连接 |
CommandText | 要执行的SQL语句 |
Command对象的主要方法
方法 | 说明 |
---|---|
SqlDataReader ExecuteReader() | 执行查询命令,返回DataReader对象 |
Object ExecuteScalat() | 执行查询返回单一值,如执行COUNT(*) |
int ExecuteNonQuery() | 用于执行非查询类操作,返回的值是本次操作所影响的行数 |
使用Command对象程序数据
示例:使用Command对象查找BookDB数据库用户表中是否存在用户姓名为"夏颖",密码为"123456"的用户信息。
若存在,则提醒“登录成功”,否则“失败”
class program
{
static void Main(string[] args)
{
Console.Write("请输入用户姓名:");
string userName = Console.ReadLine();
Console.Write("请输入密码:");
string password = Console.ReadLine();
string strMsg = "";
bool loginType = DBoperation.CheckUserLogin(userName,Password,ref strMsg);
if(loginType == true){
Console.WriteLine("登录成功");
}else{
Console.WriteLine(strMsg);
}
}
}
public class DBHelper{
private const string connString ="Data source = .; Initial Catalog = BookDB; User ID =sa; PWD = 123456";
public static bool CheckUserLogin(string userName,string password, ref string strMsg)
{
SqlConnection conn = new SqlConnection(ConnString);
try{
//创建SQL语句
string strsql = $"语句";
conn.Open();
//创建Command命令
SqlCommand comm = new SqlCommand(strSql, conn);
int iRet = (int)comm.ExecuteScalar();
if(iRet>=1)
{
strMsg = "用户姓名或者密码错误!";
return false;
}else{
return true;
}
}
catch(Exception){
strMsg = "发生异常!";
return false;
}
finally{
//关闭数据库连接
conn.Close();
}
}
}
使用Command对象操作数据
向数据库中插入一条数据或者修改、删除某条数据。可以使用Command对象的ExecuteNoQuery()方法实现。
ExecuteNonQuery()方法用于执行非查询类的SQL语句,如update、delete、insert,它的返回值是受SQL语句影响的记录行数。使用ExecuteNonQuery()方法的步骤如下
(1)创建Connection对象
(2)编写要执行的SQl语句
(3)创建Command对象
(4)执行ExecuteNonQuery()方法
(5)根据ExecuteNonQuery()方法的返回值进行后续的处理。若返回值小于或等于0,则说明没有记录受影响
示例:使用ExecuteNonQuery()方法实现以下功能
1.接收用户输入的图书信息,并将图书信息插入数据表中,2.接收用户输入的图书名称,删除指定的图书记录,3.接收用户输入的图书名称,删除指定的图书记录.代码如下
class progrm
{
private const string connString = "Data Source = .; Initial Catalog = BookDB; User ID =sa; PWD =123456";
static void Main(string[] args)
{
Console.WriteLine("1.添加图书");
Console.WriteLine("2.修改图书");
Console.WriteLine("3.删除图书");
whlie(true)
{
Console.Write("请输入要操作的键:");
string opeationType = Console.ReadLine();
if(opeationType == "1")
{
console.WriteLine("================");
console.Write("请输入图书名称:");
string bName = console.ReadLine();
Console.Writeline("请输入图书价格:");
double bPrice = double.Parse(console.ReadLine());
Console.write("请输入图书作者:");
string bAuthor = Console.ReadLine();
Console.Write("请输入图书分类ID:");
string cId = Console.ReadLine();
}
else if(opeationType == "2")
{
console.WriteLine("===============");
console.Write("请输入图书名称:");
string bName = Console.ReadLine();
Console.Write("请输入图书价格:");
double bprice = double.parse(Console.ReadLine());
ModifyBookInfoByName(BName,bPrice);
}
else if (opeationType == "3")
{
console.WriteLine("===============");
console.Write("请输入图书名称:");
string bName = Console.ReadLine();
DeleteBookInfoByName(bName);
}
}
console.ReadLine();
}
}
public static void AddBookInfo(string bName,double bPrice,string bAuthor,string CId)
{
string sql = $"insert into BookInfo(BName,BPrice,BAuthor,CId) values('bName}','{bPrice}','{bAuthor}','{cId}')";
sqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql,conn);
int i = comm.ExecuteNOnOuery();
if(i>0)
{
Console.WriteLine("添加成功");
}else{
console.WriteLine("添加失败");
}
conn.Close();
}