zoukankan      html  css  js  c++  java
  • 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(); //数据表

    详情见下一篇。。。

  • 相关阅读:
    hdu 2444 交叉染色判断二分图+二分最大匹配
    uva 交叉染色法10004
    poj 3177&&3352 求边双联通分量,先求桥,然后求分量( 临界表代码)
    poj 3177&&poj 3352加边构双联通(有重边)用tarjan 模板求的
    poj 3006水题打素数表
    POJ 3352 无向图边双连通分量,缩点,无重边
    hdu 1430 魔板 康托展开 + 很好的映射
    D. Artsem and Saunders 数学题
    vijos P1412多人背包 DP的前k优解
    1475 建设国家 DP
  • 原文地址:https://www.cnblogs.com/Q1143316492/p/9027216.html
Copyright © 2011-2022 走看看