使用ADO.NET访问数据库

10 篇文章 0 订阅
6 篇文章 0 订阅

使用ADO.NET访问数据库

ADO.NET 概念

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

//负责连接数据库
Connection 
    
//负责对数据库执行命令(运算数据)
Command
    
//负责读取数据库传过来的数据
DataReader
ADO.NET 的主要组件

在这里插入图片描述

.NET 数据提供程序类型

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实操

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

using System;
using System.Data.SqlClient;

namespace db110720211102
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            String connStr = "";
            
            //目标:获得连接对象
            SqlConnection conn = new SqlConnection(connStr);
            Console.WriteLine(conn);
            
            //卡顿
            Console.ReadKey();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

namespace db110720211102
{
    class Program
    {
        static void Main(string[] args)
        {
            //先定义
            String connStr = "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";

            //目标:获得连接对象
            SqlConnection conn = new SqlConnection(connStr);
            Console.WriteLine(conn);

            conn.Open();

            //卡顿
            Console.ReadKey();
        }
    }
}

在这里插入图片描述

在这里插入图片描述

异常处理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

using System;
using System.Data.SqlClient;

namespace db110720211102
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            //先定义
            String connStr = "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
            
            //目标:获得连接对象
            SqlConnection conn = new SqlConnection(connStr);
            Console.WriteLine(conn);
            
            //异常处理演练
            try
            { 
                //可能会出问题的代码
                //打开连接对象
                conn.Open();

                //执行相关操作
                Console.WriteLine("增删改查");
                //关闭连接对象
                conn.Close();

            }
            catch(Exception)
            {
            
                //如果发生异常,就会来到这里
                Console.WriteLine("数据库连接发生异常");
            }
            
            
            //卡顿
            Console.ReadKey();
        }
    }
}

在这里插入图片描述

增删改

ExecuteNonQuery()

可以获得一个数据朗读者,有行有列

ExecuteReader()

获得一个数据表中的首行首列的数据

ExecuteScalar()

Command 主要方法

在这里插入图片描述
在这里插入图片描述

演示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            //获得连接对象
            String connStr = "Data Source=.;Initial Catalog=db;Integrated Security=True";

            //获得对象
            SqlConnection conn = new SqlConnection(connStr);

            //获得sql语句
            String sql = "select count(1) from student";

            //获得执行者(sql语句,连接对象)
            SqlCommand cmd = new SqlCommand(sql,conn);

            //打开连接
            conn.Open();

            //让执行者干活(增删改,获得查询的所有的数据,获得表格中的首行首列的数据)
            object o = cmd.ExecuteScalar();
           
            //通过拆箱还原数据
            int intNum = (int)o;

            //打印获得的结果
            Console.WriteLine(intNum);

            //关闭连接
            conn.Close();

            //卡顿
            Console.ReadKey();
        }
    }
}

命名规范

在这里插入图片描述
在这里插入图片描述

密码登陆

sql用户名密码登陆

String connStr = "Data Source=.;Initial Catalog=GG11071102Practice;Persist Security Info=True;User ID=sa;Password=root123456";
String connStr = "Data Source=.;Initial Catalog=连接的数据库名称;Persist Security Info=True;User ID=用户名;Password=密码";

Win登录

String connStr = "Data Source=.;Initial Catalog=db;Integrated Security=True";
String connStr = "Data Source=.;Initial Catalog=db;Integrated Security=True";

HasRows 可以判断表中是否有数据

SqlDataReader

在这里插入图片描述

Reaber 使用方法

//获得连接字符串
            String connStr =
                "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";

            //获得执行者
            SqlConnection conn = new SqlConnection(connStr);


            //获得sql 语句
            String sql = "Select count(1) from student;";

            SqlCommand cmd = new SqlCommand(sql, conn);
            
            conn.Open();
            
            SqlDataReader reader = cmd.ExecuteReader();

            bool hasZhi = reader.HasRows;
            Console.WriteLine(hasZhi);

查询表格中是否有数据

using System;
using System.Data.SqlClient;

namespace db11071104
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            //获得连接字符串
            String connStr =
                "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";

            //获得执行者
            SqlConnection conn = new SqlConnection(connStr);


            //获得sql 语句
            String sql = "Select count(1) from student;";

            SqlCommand cmd = new SqlCommand(sql, conn);
            
            conn.Open();
            
            SqlDataReader reader = cmd.ExecuteReader();

            bool hasZhi = reader.HasRows;
            Console.WriteLine(hasZhi);

            conn.Close();

            Console.ReadKey();
        }
    }
}
HasRows 查询表格中是否有数据 返回值是布尔类型的
Reader 查询第一行的数据

循环拿到数据库里的姓名

在这里插入图片描述
在这里插入图片描述

using System;
using System.Data.SqlClient;

namespace db11071104
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            //获得连接字符串
            String connStr =
                "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";

            //获得执行者
            SqlConnection conn = new SqlConnection(connStr);


            //获得sql 语句
            String sql = "Select * from student;";

            SqlCommand cmd = new SqlCommand(sql, conn);
            
            conn.Open();

            SqlDataReader reader = cmd.ExecuteReader();

            bool isReader = reader.Read();

            while (isReader)
            {

                String name = (String) reader["name"];
                Console.WriteLine(name);

                //换行
               isReader = reader.Read();
            }
            
            //使用完后放走
            reader.Close();

            conn.Close();

            Console.ReadKey();
        }
    }
}

在这里插入图片描述
在这里插入图片描述

输出整个表的数据

using System;
using System.Data.SqlClient;

namespace db11071104
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            //获得连接字符串
            String connStr =
                "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";

            //获得执行者
            SqlConnection conn = new SqlConnection(connStr);


            //获得sql 语句
            String sql = "Select * from student;";

            SqlCommand cmd = new SqlCommand(sql, conn);
            
            conn.Open();

            SqlDataReader reader = cmd.ExecuteReader();

            //判断光标有没有挪动到下一行
            bool isReader = reader.Read();

            while (isReader)
            {

                int id = (int) reader["id"];
                
                String name = (String) reader["name"];
                
                int intNum = (int)reader["teacherId"];
                
                Console.WriteLine("{0}  {1}  {2}",id,name,intNum);

                //换行
               isReader = reader.Read();
            }
            
            //使用完后放走
            reader.Close();

            conn.Close();

            Console.ReadKey();
        }
    }
}

输出结果

在这里插入图片描述

新知识点StringBuildere

和java里的很想 有 Append(添加的值)末尾添加 和 中部添加 Insert(插入数据的下标,插入的数据); 删除数据 Remove(从那个地方开始删除,删除的长度)

替换数据 Replace(旧数据,新数据)

但没有String 的分割之类的方法

可以用 ToString 的方法改回String

using System;
using System.Data.SqlClient;

namespace db11071104
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            //获得连接字符串
            String connStr =
                "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";

            //获得执行者
            SqlConnection conn = new SqlConnection(connStr);
            
            //获得sql 语句
            String sql = "Select * from student;";

            SqlCommand cmd = new SqlCommand(sql, conn);
            
            conn.Open();

            SqlDataReader reader = cmd.ExecuteReader();
            
            
            
            
            
            

            //判断光标有没有挪动到下一行
            bool isReader = reader.Read();

            while (isReader)
            {

                int id = (int) reader["id"];
                
                String name = (String) reader["name"];
                
                int intNum = (int)reader["teacherId"];
                
                Console.WriteLine("{0}  {1}  {2}",id,name,intNum);

                //换行
               isReader = reader.Read();
            }
            
            //使用完后放走
            reader.Close();

            conn.Close();

            Console.ReadKey();
        }
    }
}

案例

通讯录

首先
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSOA6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值