• 简单了解Ado.net(上)


    Ado.net通过封装一些对象来实现c#与数据库的连接,其实就是一个桥梁。

    下面先通过SQL Server来看ado.net是怎么样具体连接数据库的。

    首先看一下在vs中创建数据库(vs内置一个数据库服务器)

    在视图上打开服务器资源管理器,在vs左边会看到

     

    右键数据库连接,创建数据库

     

    其中的“.”代表本地服务器,新创建的数据名字PersonDB,创建一个人Persons表,三个字段ID整形自动增长为主键,一个PersonName,nvarchar(15),存储人的姓名,PersonAge整形存储人的年纪。好了表创建好了,接下来就看看怎样把它同程序进行连接,来实现数据库的增删改查。

    创建一个windowForm程序,界面如下:

     

    我们先来实现添加操作,首先引用命名空间:using System.Data.SqlClient;

    首先先来连接数据库,通过SqlConnection创建连接对象。

    SqlConnection con = new SqlConnection();//创建连接对象

    要想连接数据库,首先要知道你是要连接哪一个服务器,数据库名称等等。

    con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";//分别表示服务器名称、数据库名称、登录用户名及密码

    接下来创建sql命令对象:

    SqlCommand cmd = con.CreateCommand();//sql命令对象,表示要对sql数据库执行一个sql语句

    cmd.CommandText = "insert into persons(personname,personage) values(@name,@age)";//sql语句@name,@age表示两个参数

    cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = textBox1.Text;//给参数赋值,并指定类型

    cmd.Parameters.Add("@age", SqlDbType.Int).Value = textBox2.Text;

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

    cmd.ExecuteNonQuery();//执行不是查询的sql语句

    MessageBox.Show("插入成功!");

    打开数据库连接一定要记得关闭连接:

        catch (Exception ex)//由于sql语句对半全角很敏感,捕捉异常

                {

                    MessageBox.Show(ex.Message);

                }

                finally

                {

                    con.Close();//不管打开成功还是失败,都能关闭连接

                }

    好了,到这一步插入操作做完了,接下来看一下能不能往表中插入数据。

     

    点击添加,我们去Persons表中看一下有没有成功插入数据

    我们看到“张三”被成功添加进去了,我们再来多添加几条数据。

    接下来看一下查询操作怎么做,其实和插入操作没多大区别,只是多了一个SqlDataReader读者对象:下面来看一下源代码:

    try

         {

          con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";//分别表示服务器名称、数据库名称、登录用户名及密码

         SqlCommand cmd = con.CreateCommand();

         cmd.CommandText = "select id,personname,personage from persons";//查询所有

         con.Open();

         SqlDataReader dr = cmd.ExecuteReader();//提供一种从 SQL Server 数据库读取行的只进流的方式

         listBox1.Items.Clear();//清除listbox数据

         comboBox1.Items.Clear();//清除combox数据

         while (dr.Read())//一行一行读取数据,返回值是bool类型

         {

             listBox1.Items.Add("姓名:"+dr.GetValue(1).ToString() + "  年龄:"+dr.GetValue(2).ToString());

             comboBox1.Items.Add(dr.GetValue(0));//把ID放到combox中,方便删除及修改

         }

         dr.Close();//关闭读取流操作

         }

         catch (Exception ex)

         {

            MessageBox.Show(ex.Message);

         }

         finally

         {

            con.Close();

         }

    来看一下查询结果:

     

    接下来在来实现删除操作,和插入几乎一样,先从数据库中查询出所有数据,获得它们的ID(都放到combox里面了)

    下面看一下具体实现:

    try

    {

            con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

            SqlCommand cmd = con.CreateCommand();

            con.Open();

            cmd.CommandText = "delete persons where id=@id";//删除语句,已ID为条件删除

            cmd.Parameters.Add("@id", SqlDbType.Int).Value =comboBox1.Text;

            cmd.ExecuteNonQuery();

     }

    catch (Exception ex)

    {

              MessageBox.Show(ex.Message);

    }

    finally

     {

            con.Close();

     }

    先查询,

    选择删除ID,

    点击删除,再来查询一下

     

    我们看到朱重八被删除了。

    最后来做修改,这个比较麻烦,首先要修获得要修改的数据,先获得所有数据,在通过ID来实现查询当个数据,然后在确定修改

    看修改查询代码:

    try

    {

         con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

         SqlCommand cmd = con.CreateCommand();

         cmd.CommandText = "select personname,personage from persons where id=@id";

         cmd.Parameters.Add("@id",SqlDbType.Int).Value = comboBox1.Text;

         con.Open();

         SqlDataReader dr = cmd.ExecuteReader();

         dr.Read();//因为只读一条数据,就不用while循环

         textBox1.Text = dr.GetValue(0).ToString();

         textBox2.Text = dr.GetValue(1).ToString();

         dr.Close();

       }

        catch (Exception ex)

        {

           MessageBox.Show(ex.Message);

        }

        finally

        {

           con.Close();

         }

    再来看一下确定修改代码:

    try

    {

         con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

         SqlCommand cmd = con.CreateCommand();

         con.Open();

         cmd.CommandText = "update persons set personname=@name,personage=@age where id=@id";

         cmd.Parameters.Add("@id", SqlDbType.Int).Value = comboBox1.Text;

         cmd.Parameters.Add("@name",SqlDbType.NVarChar).Value=textBox1.Text;

         cmd.Parameters.Add("@age", SqlDbType.NVarChar).Value = textBox2.Text;

         cmd.ExecuteNonQuery();

     }

      catch (Exception ex)

      {

           MessageBox.Show(ex.Message);

       }

       finally

       {

            con.Close();

        }

    好了,我们先查询全部信息,在通过ID获得修改信息

     

    把名字改成,七匹马,确定修改,再来查询一下是否修改成功

     

    现在可以看到修改成功了。

    到这里,基础性的东西都讲完了,还有SqlDataAdapter,DataTable类,下次在讲。

    感兴趣的朋友可以和我交流。。。

    __喜欢的朋友别忘了推荐下,这里先谢了。。 ——我打远古走来,抖一身秦风汉雨,过一程唐关明月。累了,卧一卧高山大川。醒了,嗅一嗅明月星空。
  • 相关阅读:
    蓝桥杯_基础_杨辉三角
    蓝桥杯_基础_数组特征
    蓝桥杯_基础_美丽的图形
    脉象
    词根汇总
    蓝桥杯 入门训练 Fibonacci数列 解析
    制作tomcat重启.bat文件
    day23(023-递归练习)
    day27(027-反射&JDK新特性)
    day25(025-多线程(下)&GUI)
  • 原文地址:https://www.cnblogs.com/yunfeiyang/p/2065684.html
Copyright © 2020-2023  润新知