ADO.NET入门学习笔记(一)

软件工程专业课ADO.NET的学习笔记。

学习环境: VS2017 + MSSQL2017, 由于目前有台阿里的云服务器,后面会补上服务器下mysql的连接。

ADO.NET是微软对于数据库访问的框架。学校的课程第一课包含一部分内容。首先基于windows下的sql server需要一个命名空间

1 using System.Data.SqlClient;

1,我们首先需要打开数据库。

   首先要知道服务器在哪。。。

  SqlConnection 类

    表示到 SQL Server 数据库的打开连接。 此类不能被继承。

    

1 SqlConnection conn=new SqlConnection(connString); //构造函数中写服务器信息

  关于构造函数(老师只提了前两个)

    知道了连接那个服务器后,发起连接,最好能配个sql语句。

  SqlCommand 类

    表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。 此类不能被继承。

  

1 SqlCommand cmd=new SqlCommand(sqlStr,conn); //sqlstr是一个sql语句,conn就是刚刚我们填服务器信息的类。
conn.Open(); //然后就可以打开服务器了。

 2,打开服务器后,当然是干活了。我们获取数据用一下几个类。我把他归为两类。

  第一类:DataReader是对数据一次性前向只读的数据阅读器, 简单来说类似sql中的游标,读一次就没了。如果要保存用另外的类。

  第二类: dataAdapter, 数据适配器, dataSet 数据集, datatable数据表。

  下面我们先用第一种方式读取一下数据库的信息。

   首先看一眼数据库

 

 

 

 

 

 


 

  

 

 

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             string sqlStr = "select * from Student";
 4             string connString = @"Data Source=DESKTOP-BO0VRVJ;Initial Catalog=StuMS;Integrated Security=True";
 5             SqlConnection conn = new SqlConnection(connString);
 6             SqlCommand cmd = new SqlCommand(sqlStr, conn);
 7             try
 8             {
 9                 conn.Open();
10                 SqlDataReader dr = cmd.ExecuteReader();
11                 if (dr.HasRows)
12                 {
13                     while (dr.Read())
14                     {
15                         String sno = dr.GetString(0).Trim();  //返回每一行的第i个元素,具体get什么根据数据库的数据类型。Trim是为了去掉空格。
16                         String sname = dr.GetString(1).Trim();
17                         String ssex = dr.GetString(2).Trim();
18                         int age = dr.GetInt16(3);
19                         String Sdep = dr.GetString(4).Trim();
20                         String str = String.Format("学号[{0}],姓名[{1}],性别[{2}],年龄[{3}],系别[{4}]", sno, sname, ssex, age, Sdep);
21                         MessageBox.Show(str);
22                     }
23                 }
24 
25             }
26             catch (Exception ex)
27             {
28                 MessageBox.Show(ex.Message);
29             }
30             finally
31             {
32                 conn.Close();
33             }
34         }

一个winform的button点击,连接数据库,我为了简单用MessageBox显示信息。

关于上面的connString不会写没有关系。

VS下菜单工具,连接到数据库,(这个功能我在线安装了800MB左右,安装多久不知道,点个安装去睡觉了)

 ExecuteNonQuery():执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。用于完成insert,delete,update操作。

  sqlCommond的对象调用。

在SQL中添加参数,或者用String.Format代替此功能。

    //将执行的sql

String sql = "INSERT INTO  Car([Title] ,[Speed] ,[Info]) VALUES(@Ttile,@Speed,@Info)";
                 //创建命令对象,指定要执行sql语句与连接对象conn
                SqlCommand cmd = new SqlCommand(sql,conn);
                 //指定参数
                cmd.Parameters.Add(new SqlParameter("@Ttile", txtTitle.Text));
                cmd.Parameters.Add(new SqlParameter("@Speed", txtSpeed.Text));
                cmd.Parameters.Add(new SqlParameter("@Info", txtInfo.Text));
                 //执行,返回影响行数
                int rows=cmd.ExecuteNonQuery();
ExecuteScalar ()从数据库检索单个值,
返回查询结果集的第一行第一列。主要用于聚集函数。可能返回NULL,返回的是Object类型。
ExecuteReader () 查询用这个。用法在上面代码写过了。
  string sqlStr = "select * from Student";
  //执行查询返回结果集
   SqlDataReader sdr = cmd.ExecuteReader();
测试:如果插入成功,返回输出1.
1             string sqlStr = "insert into Student (sno,sname,ssex,sage,Sdept) values ('6216','cwl','男',22,'cs')";
2             string connString = @"Data Source=DESKTOP-BO0VRVJ;Initial Catalog=StuMS;Integrated Security=True";
3             SqlConnection conn = new SqlConnection(connString);
4             SqlCommand cmd = new SqlCommand(sqlStr, conn);
5             conn.Open();
6             int rows = cmd.ExecuteNonQuery();
7             MessageBox.Show(rows.ToString());

测试:测试聚集函数

1             string sqlStr = "select count(*) from Student";
2             string connString = @"Data Source=DESKTOP-BO0VRVJ;Initial Catalog=StuMS;Integrated Security=True";
3             SqlConnection conn = new SqlConnection(connString);
4             SqlCommand cmd = new SqlCommand(sqlStr, conn);
5                 conn.Open();
6                 Object obj = cmd.ExecuteScalar();  //这个函数返回的是Obj,
7                 MessageBox.Show(obj.ToString());

另一种方式

SqlDataAdapter da; //数据适配器
DataSet ds = new DataSet("HotelDS"); //DataSet数据集
DataTable dt = new DataTable(); //数据表

详情见下一篇。。。

原文地址:https://www.cnblogs.com/Q1143316492/p/9027216.html