第一节、C#ADO.NET数据库操作

C#ADO.NET

在C#语言中提供了ADO.NET组件来实现连接数据库以及操作数据库中数据的功能;

ADO(Active Data Object)是一个COM组件类库,用于访问数据库。是.Net平台上访问数据库组件。

ADO.NET体系结构

 

 

 1、Connection类(连接)

该类主要用于数据库中建立连接和断开连接操作,能通过类获得当前数据库连接状态。

2、Command类(命令)

向连接数据库发出操作命令。操作(增删改查)

3、DataReader类(读取数据)

该类用于读取从数据库中查询出来的数据;

4、DataAdaper类(桥梁)

该类与DataSet联用,它主要用于将数据库的结果运送到DataSet中保存;

5、DataSet类(数据集)

该类与DataAdaper类似,都用于存放对数据库查询的集合。差异,DataSet数据可反复读取、更改值。

一、Conneciton连接

SqlConection类中提供常用属性和方法如下

属性或方法说明
SqlConnection() 无参构造方法
SqlConnection(string connectionstring) 带参数的构造方法,数据库连接字符串作为参数
Connectionstring 属性,获取或设置数据库的连接串
State 属性,获取当前数据库的状态,由枚举类型 Connectionstate 为其提供值
ConnectionTimeout 属性,获取在尝试连接时终止尝试并生成错误之前所等待的时间
DataSource 属性,获取要连接的 SQL Server 的实例名
Open() 方法,打开一个数据库连接
Close() 方法,关闭数据库连接
BeginTransaction() 方法,开始一个数据库事务

连接方式一:

server=服务器名称/数据库的实例名;uid=登录名;pwd=密码;datatbase=s数据库名称

 连接方式二:

Data Source=服务器名称/数据库的实例名;Initial Catalog=数据库名称;User ID=用户名;Password=密码;

  设置安全性环境:而是使用 SQL Server 验证方式登录数据库,即指定用户名和密码。

 

 

 数据库连接编写

  代码示范:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Connection_but_Click(object sender, EventArgs e)
        {
            //连接数据库对象
            SqlConnection conn = null;

            //连接数据库串
            string connStr = "Data source=.;Initial Catalog=MySchool;User ID=sa;Password=pwd";

            try
            {
                conn = new SqlConnection(connStr);
                conn.Open();
                MessageBox.Show("已连接数据库");
            }
            catch (Exception ex)
            {
                MessageBox.Show("连接数据库失败!" + ex.Message);
            }
            finally
            {
                if(conn!=null)
                {
                    conn.Close();//关闭数据库连接
                }
            }
        }
    }
}
View Code

注意:

  • 数据连接使用后,需要关闭断开数据,以释放资源,关闭连接放在finally语句
  • 也可以使用using方式释放资源 
 private void button1_Click(object sender, EventArgs e)
        {
            string connStr = "Data source=.;Initial Catalog=MySchool;User ID=sa;Password=pwd";
            try
            {
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open(); //打开数据库
                    MessageBox.Show("已连接数据库");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("连接数据库失败!" + ex.Message);
            }
        }

二、Command命令操作

所谓增删改查数据库命令

SqlCommand类中常用的构造方法

构造方法说明
SqlCommand() 无参构造方法
SqlCommand(string commandText,SqlConnection conn) 带参的构造方法,第 1 个参数是要执行的 SQL 语句,第 2 个参数是数据库的连接对象

SqlCommand类提供不同属性和方法

 

属性或方法说明
CommandText 属性,Command 对象中要执行的 SQL 语句
Connection 属性,获取或设置数据库的连接对象
CommandType 属性,获取或设置命令类型
Parameters 属性,设置 Command 对象中 SQL 语句的参数
ExecuteReader() 方法,获取执行查询语句的结果
ExecuteScalar() 方法,返回查询结果中第 1 行第 1 列的值
ExecuteNonQuery() 方法,执行对数据表的增加、删除、修改操作

执行

 示范代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Connection_but_Click(object sender, EventArgs e)
        {
            //连接数据库对象
            SqlConnection conn = null;

            //连接数据库串
            string connStr = "Data source=.;Initial Catalog=MySchool;User ID=sa;Password=123456";

            try
            {
                conn = new SqlConnection(connStr);
                conn.Open(); //打开数据库
                //创建SqlCommand对象
                SqlCommand cmd = new SqlCommand("insert into Student(StudentNo,StudentName,LoginPwd,Gender,GradeId,BornDate) values(1,'小美','123',1,1,'2021-3-17')", conn);
                //ExecuteNonQuery 执行插入
                int insertRow=cmd.ExecuteNonQuery();
                if (insertRow > 0)
                {
                    MessageBox.Show("执行影响返回行数:{" + insertRow + "}");
                }
               
            }
            catch (Exception ex)
            {
                MessageBox.Show("连接数据库失败!" + ex.Message);
            }
            finally
            {
                if(conn!=null)
                {
                    conn.Close();//关闭数据库连接
                }
            }
        }
    }
}
View Code

数据库插入记录

 

posted @ 2021-03-17 23:05  LiuzzBK  阅读(381)  评论(0编辑  收藏  举报