什么是ado.net

使用.net技术操作数据库的一套类库。

命名空间

system.data:描述数据的命名空间
system.data.sqlclient:专门针对sqlserver的命名空间

四大类(不同数据库会有不同的前缀),四大模型

connection :用于连接数据库

command: 链接成功后用于操作数据库的命令

        1。 ExecuteNonQuery模型
1-1.执行非查询语句,返回受影响行数,如果执行的是非增、删、改操作返回-1
int ExecuteNonQuery()
例: string con=“数据库连接信息”;
sqlconnection conn=new sqlconnection(con);
string sql=“sql语句”;
sqlcommand cmd=new sqlcommand(sql,conn);
conn.Open();
int count=cmd.ExecuteNonQuery();//返回受影响的行数
conn.Dispose();
cmd.Dispose();//释放资源
例子2: string coonStr=@"链接信息";
string sql="sql语句";
using(SqlCoonection conn=new SqlCoonection(coonStr))
{
using(SqlCommand cmd=new SqlCommand(sql,conn))
{
conn.Open();
int count=cmd.ExecutrNonQuery();
}
}

ExecuteScalar模型

2、ExecuteScalar模型:返回查询的第一行第一列的结果。返回类型是object,用法和上一个类型相同。

連接池

保存連接對象的池子。用於存放數據庫連接對象。當conn.close()時,在一定時間內(比如100ms)講連接信息保存在連接池中。當再次打開相同的數據庫時,直接用池子中的鏈接對象,大大提高了與數據庫交互的效率。
例子: string connStr='鏈接信息';
Stopwatch sp=new Stopwatch();
sp.Start()//計時開始
for(int i=0;i<1000;i++)
{
SqlConnection conn=new SqlConnection(connStr);
conn.Open();
conn.Close();//有此項操作才是使用了連接池
}
sp.Stop();//計時結束
Console.Write(sp.Elapsed);//打印出花費的時間
禁用連接池:在鏈接的數據庫字符串後面加上pooling=false;
string connStr='鏈接信息';pooling=false;

简单处理注入漏洞攻击

注入漏洞:原本是一个数据,现在变成一个数据和一个条件(可能是永远为true的条件)
解决办法:1、限制其只允许是数据
string pwd=pwd.Replace("\'","\'\'");//数据库sql语句里要表示一个单引号的字符串,常常用连续2个单引号来表示一个单引号字符串。(次办法常用于asp时代)
2、参数化查询

如何使用参数化查询

1.将原来需要字符串拼接的值,用一个@引导的变量名代替
2.使用SqlParameter类型将参数变量与值绑定在一起
3.将Sqlparameter对象交给cmd对象的Parameter集合
例子:string uid="uid";
string pwd="pwd";
string coonStr=ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
string sql="select count(*) from 表名 where uid=@uid and pwd=@pwd;";
SqlParameter pUid=new SqlParameter("@uid",uid);
SqlParameter pPwd=new SqlParameter("@pwd",pwd);
int count;
using(SqlConnection conn=new Sqlconnection(coonStr))
{
using(SqlCommand cmd=new SqlCommand(sql,conn))
{
//将参数交给cmd、
cmd.Parameters.Add(pUid);
cmd.parameters.Add(pPwd);
conn.Open();
count=(int) cmd.ExecuteScalar();
}
}

ExecuteReader模型

执行数据库的查询操作时,返回查询结果,返回的数据类型是SqlDataReader类型
例子: string sql="sql语句";
string connStr="连接信息";
using(SqlConnection conn= new SqlConnection(connStr)){
using(SqlCommand cmd= new SqlCommand(sql,conn)){
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
using(reader){
while(reader.Read())//read表示索引跳到下一行
for(int i=0;i<reader.FieldCount;i++)
{
string data=reader[i].ToString();
Console.Write(data+",");
}
COnsole.WriteLine(); }
Console.ReadKey();
}
}

datareader:用于取数据

dataadapter:将数据库的数据转换成后台相对应的数据类型

例子; string coonStr="连接信息";
string sql ="sql语句";
DataSet ds=new DataSet();
using (SqlDataAdapter sda=new SqlDataAdapter(sql,coonStr))
{
sda.Fill(ds);//将数据写入ds中
}

连接数据库

1.数据库地址和实例名,数据库名,验证的凭证(用户名密码,本机数据库连接凭证)

server=ip或者机器名或.\实例名;database=数据库名;uid=sa;pwd=123;或integrated   security=true;//集成安全验证(windows身份验证)
例:string connstr=“server=.;database=master;uid=sa;pwd=123”;
sqlconnection conn=new sqlconnection(connstr);//连接数据库
conn.Open();//打开数据库

ado.net基础(一)的更多相关文章

  1. ADO.NET基础03

    数据库和VS的连接,实现数据的同步,让用户的一切信息都可以在数据库中留下记录. ADO.NET基础      它是连接所有数据库的一种特殊的技术,提供对不同的数据库统一操作接口. 在VS中也可以添加数 ...

  2. .Net Core 系列:2、ADO.Net 基础

    目录: 1.环境搭建 2.ADO.Net 基础 3.ASP.Net Core 基础 4.MD5.Sha256.AES 加密 5.实现登录注册功能 6.实现目录管理功能 7.实现文章发布.编辑.阅览和删 ...

  3. 有关ADO.NET基础中的基础的熟悉过程

    现在对于ADO.NET基础的理解与记忆并不严谨和完善 所以,只写一点关于自己的理解,嗯,一种去转换思维理解的方法吧,算是吧 希望各位前辈或者同学,积极指出其中的错误和偏差 个人对于刚接触的ADO.NE ...

  4. 如鹏网学习笔记(六)ADO.Net基础

    ADO.Net基础 一.ADO.Net简介 1,程序要通过SQL语句自动化的操作数据库,必须要用一个类库, 类库要提供execute("insert into ...")/exec ...

  5. ADO.NET基础开发

    ADO.NET是微软新一代.NET数据库的访问架构,ADO是ActiveX Data Objects的缩写.ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供了一个面向对象的数据访问架构, ...

  6. ADO.NET基础巩固-----连接类和非连接类

          最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这 ...

  7. ADO.NET基础(增删改查)

    ADO.NET是一种数据访问技术,就是将C#和MSSQL连接起来的一个纽带.可以通过ADO.NET将内存中的临时数据写入到数据库中,也可以将数据库中的数据提取到内存中供程序调用. ADO.NET是所有 ...

  8. C# ADO.NET基础&实战

    什么是ADO.NET:数据库访问技术! 作用:通过程序来连接访问数据库! 一.基础: using System.Data.SqlClient;    //数据库连接命名空间 string connec ...

  9. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)

    通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...

  10. 【ADO.NET基础-GridView】GridView的编辑、更新、取消、删除以及相关基础操作代码

    代码都是基础操作,后续功能还会更新,如有问题欢迎提出和提问....... 前台代码: <asp:GridView ID=" OnRowDataBound="GridView1 ...

随机推荐

  1. 写给自己的话,学院派 C 转 实用派Java

    本人计算机专业出身,学校学习过C / VC++. 写过很一般的代码, 刷过北大百炼 ACM 的部分试题.学过数据结(还可以),数据库(学的一般会用sql).用 c指针链表构建过二叉树实现过哈夫曼编码加 ...

  2. AIR724UG上电后引脚的默认电平

    使用AIR724UG的引脚作为继电器的控制引脚时,由于上电时引脚的电平有的高,有的低. 在某些场合我们希望GPIO上电默认是低电平,所以我将常用引脚中可用的引脚标注了出来.

  3. java一个校验对象是否为null的豪华大礼包

    自写的校验所有类型是否为null的工具类, 懒人福音,嘎嘎好用. 1 /** 2 * 一个校验对象是否为null的豪华大礼包 3 * 可以校验:Collection,Map,String,Enumer ...

  4. Metasploit(MSF)渗透测试之永恒之蓝实验

    实验环境 前提:对方的445端口必须开放,首先要保证是能够访问到目标机器的,那么我们先ping一下目标机器,看网络是否连通 如果无法ping的话,对方机器必须要关闭防火墙,或许有其他方法在对方开启防火 ...

  5. zookeeper选主测试

    Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统 zookeeper基于目录监听机制来选主,多个客户端节点都可以来对zookeeper上某个目录节点进行监听和注册, ...

  6. Model Context Protocol(MCP)在claude使用

    定义 MCP通过统一的协议,使AI模型(如Claude.GPT等)能够动态调用外部工具(如数据库.API.本地文件等),并实现跨模型的上下文共享与协作 架构 客户端-服务器模型: MCP主机(Host ...

  7. devops组件搭配选型

    名称 作用 备注 sentry 异常捕获系统 gitlab 代码仓库 jenkins 持续集成 open-falcon 监控系统 grafana 监控FE prometheus 监控系统 thanos ...

  8. C++11——右值引用&完美转发

    总而言之,右值引用,完美转发,std::move()都是为了在程序运行过程中,避免变量多次重复的申请和释放内存空间,使用移动语义将申请的空间通过这几种方式进行循环使用,避免重新开辟新空间和拷贝浪费算力 ...

  9. C++11 auto和decltype关键字

    今天来看下C++中的auto和decltype两个关键字 auto关键字定义变量,编译器会自动判断变量的类型 举个栗子: auto i =100; // i 是 int auto p = new A( ...

  10. codeup之字符串求最大值

    Description 从键盘上输入3个字符串,求出其中最大者. Input 输入3行,每行均为一个字符串. Output 一行,输入三个字符串中最大者. Sample Input Copy Engl ...