数据库访问的方法和技术
ADO.NET的主要组件
DataSet(数据集)是断开式的访问方式,DataSet完全可以在内存里面存放一个类似于数据库这样的结构,在里面进行操作,最终可以保存到我们的数据库中去。
.NET平台数据提供程序,是连接式的方式,就是实时的操作数据库。
操作数据库的话,需要使用NuGet程序包安装相应的Connection对象
为什么要使用Connection对象?
Connection对象
使用之前,需要安装相应的数据库的Connection对象
using System.Data.SqlClient;
//sqlserver身份验证登陆
//server 服务器 uid 帐号 pwd 密码 database 数据库
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=SchoolSystemDB");
conn.Open();//打开数据库
Console.WriteLine("打开数据库成功");
conn.Close();//关闭数据库
Console.WriteLine("关闭数据库");
有时候数据库会动态切换,会有很多应用场景,所以一般会使用,使用一个属性ConnectionString即可,上面的是构造方法方式复制,下面这种也可以。
conn.ConnectionString = "server=.;uid=sa;pwd=sa;database=SchoolSystemDB";
对数据库进行简单地增加删除修改
using System.Data.SqlClient;
namespace ADO_NET
{
internal class StudentManager
{
///
/// 添加
///
public void Add()
{
Console.WriteLine("请输入姓名:");
string stuName = Console.ReadLine();
Console.WriteLine("请输入性别:");
string sex = Console.ReadLine();
Console.WriteLine("请输入出生日期");
string birthday = Console.ReadLine();
Console.WriteLine("请输入年级");
string gradeId = Console.ReadLine();
Console.WriteLine("请输入住址:");
string address = Console.ReadLine();
Console.WriteLine("请输入电话:");
string telephone = Console.ReadLine();
//第一步:创建访问数据库的连接对象
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=SchoolSystemDB");
//第二步:打开数据库
conn.Open();
//第三步:创建一个用于执行脚本的对象
string sql = $@"insert into Students(StuName, Sex, Brithday, GradeId, CreateTime, Address, Telephone)
values('{stuName}','{sex}','{birthday}',{gradeId},default,'{address}','{telephone}')";
SqlCommand command = new SqlCommand(sql,conn);
//第四步:创建执行脚本对象
int result = command.ExecuteNonQuery();//添加、删除、修改,执行返回影响受影响的条数
//第五步:关闭数据库
conn.Close();
if (result > 0)
{
Console.WriteLine("添加成功");
}
else
{
Console.WriteLine("添加失败");
}
}
///
/// 删除
///
public void Delete()
{
Console.WriteLine("请输入需要删除的学生编号:");
string stuNo = Console.ReadLine();
//第一步:创建访问数据库的连接对象
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=SchoolSystemDB");
//第二步:打开数据库
conn.Open();
//第三步:创建一个用于执行脚本的对象
string sql = $@"delete from students where StuNo={stuNo}";
SqlCommand command = new SqlCommand(sql, conn);
//第四步:创建执行脚本对象
int result = command.ExecuteNonQuery();//添加、删除、修改,执行返回影响受影响的条数
//第五步:关闭数据库
conn.Close();
if (result > 0)
{
Console.WriteLine("删除成功");
}
else
{
Console.WriteLine("删除失败");
}
}
///
/// 修改
///
public void Update()
{
Console.WriteLine("请输入需要修改的学生编号:");
string stuNo = Console.ReadLine();
Console.WriteLine("请输入修改学生姓名:");
string stuName = Console.ReadLine();
//第一步:创建访问数据库的连接对象
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=SchoolSystemDB");
//第二步:打开数据库
conn.Open();
//第三步:创建一个用于执行脚本的对象
string sql = $@"update Students
set StuName='{stuName}'
where StuNo={stuNo}";
SqlCommand command = new SqlCommand(sql, conn);
//第四步:创建执行脚本对象
int result = command.ExecuteNonQuery();//添加、删除、修改,执行返回影响受影响的条数
//第五步:关闭数据库
conn.Close();
if (result > 0)
{
Console.WriteLine("修改成功");
}
else
{
Console.WriteLine("修改失败");
}
}
}
}
查询常见的有两种:
command.ExecuteScalar();一行一列受影响,平时在应用场景的时候,聚合函数、count、avg、sum、max、min
select count(*) as 共计 from Students
where GradeId=2
--登录用户名是否存在
select count(*) from Students
where StuName='六耳猕猴'
--游戏中有没有用户名被注册
select count(stuno) from Students
where StuName='张无忌'
public void GetNameByStuNo()
{
Console.WriteLine("请输入需要查询的学生编号:");
string stuNo = Console.ReadLine();
//第一步:创建访问数据库的连接对象
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=SchoolSystemDB");
//第二步:打开数据库
conn.Open();
//第三步:创建一个用于执行脚本的对象
string sql = $@"select stuname from Students where stuno={stuNo}";
SqlCommand command = new SqlCommand(sql, conn);
//第四步:创建执行脚本对象
object obj = command.ExecuteScalar();//查询返回第一行第一列
//第五步:关闭数据库
conn.Close();
if (obj!=null)
{
Console.WriteLine(#34;该学生的姓名:{obj.ToString()}");
}
else
{
Console.WriteLine("找不到该学生信息");
}
}
留言与评论(共有 0 条评论) “” |