C#回顾 Ado.Net C#连接数据库进行增、删、改、查

一、简介

1、ado.net是一门数据库访问技术。

他可以通过程序来操作数据库

2、类库

Connection 类

和数据库交互,必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。

与数据库交互的过程意味着必须指明想要执行的操作。这是依靠Command对象执行的。开发人员使用Command对象来发送SQL语句给数据库。Command对象使用Connection对象来指出与哪个数据源进行连接。开发人员能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给DataAdapter,它保存了一组能够操作下面描述的一组数据的命令。

Command对象

成功与数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命令。

DataReader类

许多数据操作要求开发人员只是读取一串数据。DataReader对象允许开发人员获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。

DataSet对象

DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。开发人员甚至能够定义表之间的关系来创建主从关系(parent-child relationships)。DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有Data Providers使用的对象,因此它并不像Data Provider一样需要特别的前缀。

DataAdapter类

某些时候开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdapter通过断开模型来帮助开发人员方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,DataAdapter 填充(fill)DataSet对象。DataAadapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT、INSERT、UPDATE和DELETE操作的Command对象引用。开发人员将为DataSet中的每一个Table都定义DataAadapter,它将为开发人员照顾所有与数据库的连接。所以开发人员将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。

DataTable类

DataTable 是一个数据网格控件。它可以被应用在 VB 和 ASP 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。

DataTable的实例化以及添加列:

DataTable dt = new DataTable();

dt.Columns.Add("ID");

dt.Columns.Add("Name");

DataRow dr = dt.NewRow();

object[] objs = { 1, "Name" };

dr.ItemArray = objs;

dt.Rows.Add(dr);

this.dataGridView1.DataSource = dt;

二、建立与数据库的连接

1、格式

先引用命名空间using System.Data.SqlClient;

//连接字符串。服务器:本地;数据库:Data0216;用户:sa;密码:123
string sql = "server=.;database=Data0216;user=sa;pwd=123;";

//数据库连接类
SqlConnection conn = new SqlConnection(sql);

//数据库操作类
SqlCommand cmd = conn.CreateCommand();

//编写Tsql语句
cmd.CommandText = "insert into Users values(‘tianqi‘,‘1234‘,‘田七‘,‘1‘,‘2003-2-1‘,‘N003‘)";

//打开数据库
conn.Open();

//执行操作
cmd.ExecuteNonQuery();

//关闭数据库
conn.Close();

三、完整的数据查询,打印出来。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication1
{    class Program
   {        
   static void Main(string[] args)
       {            
       //连接字符串。服务器:本地;数据库:Data0216;用户:sa;密码:123
           string sql = "server=.;database=Data0216;user=sa;pwd=123;";            
           //数据库连接类
           SqlConnection conn = new SqlConnection(sql);            
           //数据库操作类
           SqlCommand cmd = conn.CreateCommand();            
           //编写Tsql语句
           cmd.CommandText = "select *from Users";            
           //打开数据库            
           conn.Open();            
           //执行操作用SqlDataReader类dr接收一下
           SqlDataReader dr = cmd.ExecuteReader();            int count = 0;            
           //判断查询结果是否有行(是否有数据)
           if (dr.HasRows)
           {                
           //dr.Read();读取下一行数据,如果有返还true,如果没有返回false。用一个死循环来打印数据,如果读取不到下一行的数据则循环结束。
               while (dr.Read())
               {
                   count++;                    
                   //将读取到该行数据的Ids列提取出来放到字符串ids中
                   
                   string ids = dr["Ids"].ToString();                    
                   string username = dr["UserName"].ToString();                    
                   string password = dr["PassWord"].ToString();                    
                   string nickname = dr["NickName"].ToString();                    
                   string sex = dr["Sex"].ToString();                    
                   string birthday = dr["Birthday"].ToString();                    
                   string nation = dr["Nation"].ToString();
                   Console.WriteLine(ids + "  |  " + username + "  |  " + password + "  |  " + nickname + "  |  " + sex + "  |  " + birthday + "  |  " + nation);
               }
           }
           Console.WriteLine("一共有" + count + "行数据");            //关闭数据库            conn.Close();
           Console.ReadLine();
       }
   }
}

四、完整的数据删除,将数据删除成功与否返回给用户

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication2
{    
class Program
   {        
   static void Main(string[] args)
       {            
       string sql = "server=.;database=Data0216;user=sa;pwd=123;";

SqlConnection conn = new SqlConnection(sql);

SqlCommand cmd = conn.CreateCommand();

cmd.CommandText = "delete from Users where UserName=‘zhangsan‘;";

conn.Open();            
           //执行操作,将受影响行数返回一个int类型接受一下
           int a = cmd.ExecuteNonQuery();            
           //如果受影响行数大于0,则删除成功,否则删除失败
           if (a > 0) Console.WriteLine("删除成功,本次共删除" + a + "行");            
           else Console.WriteLine("删除失败,本次未删除任何数据!");

conn.Close();
           Console.ReadLine();

}
   }
}

五、完整的数据修改,先查询数据库中有没有用户要修改的数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication3
{    
class Program
   {        
   static void Main(string[] args)
       {            bool has = false;            
       string sql = "server=.;database=Data0216;user=sa;pwd=123;";

SqlConnection conn = new SqlConnection(sql);

SqlCommand cmd = conn.CreateCommand();

Console.Write("请输入要修改的用户名:");            string name = Console.ReadLine();            
           //先查询一下数据库中是否有用户要修改的这条数据
           cmd.CommandText = "select * from users where username=‘"+name+"‘";

conn.Open();

SqlDataReader dr = cmd.ExecuteReader();            //如果数据库中有用户要修改的这条数据,给has一个true值
           if (dr.HasRows)
           {
               has = true;
           }

conn.Close();            //如果数据库中有用户要删除的这条数据,再提示用户要修改的内容
           if (has == true)
           {
               Console.WriteLine("已查到此用户");
               Console.Write("请输入修改后的密码:");                string password = Console.ReadLine();
               Console.Write("请输入修改后的昵称:");                string nickname = Console.ReadLine();
               Console.Write("请输入修改后的性别:");                string sex = Console.ReadLine();
               Console.Write("请输入修改后的生日:");                string birthday = Console.ReadLine();
               Console.Write("请输入修改后的民族:");                string nation = Console.ReadLine();                
               //修改数据的sql语句
               cmd.CommandText = "update Users set PassWord=‘"+password+"‘,NickName=‘"+nickname+"‘,Sex=‘"+sex+"‘,Birthday=‘"+birthday+"‘,Nation=‘"+nation+"‘ where UserName=‘"+name+"‘";                
               //再次打开数据库                
               conn.Open();                
               //用aaa记一下受影响行数
               int aaa= cmd.ExecuteNonQuery();                
               //关闭数据库                
               conn.Close();                
               if (aaa > 0) Console.WriteLine("修改成功");                
               else Console.WriteLine("修改失败");
           }                
           //如果查询不到用户要修改的数据,提示用户无法修改。
           else
               
               Console.WriteLine("未查到此用户,无法修改");

Console.ReadLine();
       }
   }
}

六、完整的数据添加

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication4
{    
class Program
   {        
   static void Main(string[] args)
       {            
       string name = "";            
       string password = "";            
       string nickname = "";          
        string sex = "";            
        string birthday = "";            
        string nationcode = "";            
        string sql = "server=.;database=Data0216;user=sa;pwd=123;";
           SqlConnection conn = new SqlConnection(sql);
           SqlCommand cmd = conn.CreateCommand();            //判断用户名是否被占用且不能为空,如果未被占用且不为空将用户输入的用户名放在name中,跳出循环
           while (true)
           {
               Console.Write("请输入用户名:");
               name = Console.ReadLine();

cmd.CommandText = "select *from Users where UserName=‘" + name + "‘";
               conn.Open();
               SqlDataReader dr = cmd.ExecuteReader();                if (!dr.Read() && name.Length != 0)
               {
                   conn.Close();                  
                    break;
               }
           }            
           //判断密码是否大于6位
           while (true)
           {
               Console.Write("请输入密码:");
               password = Console.ReadLine();                if (password.Length >= 6)
               {                    
               break;
               }
           }            
           //判断昵称是否为空
           while (true)
           {
               Console.Write("请输入昵称:");
               nickname = Console.ReadLine();                if (nickname.Length > 0)
               {                    
               break;
               }
           }            
           //判断性别输入,输入男将1记录到数据库中,输入女将0记录到数据库中
           while (true)
           {
               Console.Write("请输入性别(男/女):");
               sex = Console.ReadLine();                
               if (sex == "男" || sex == "女")
               {                    
               if (sex == "男")
                       
                       sex = "1";                    
                       else sex = "0";                    break;
               }                
               else
                   
                   Console.WriteLine("输入的格式不正确,请重新输入");
           }            
           //判断输入的生日格式是否正确
           while (true)
           {
               Console.Write("请输入生日:");
               birthday = Console.ReadLine();                try
               {
                   Convert.ToDateTime(birthday);                    break;
               }                catch
               {
                   Console.WriteLine("输入的格式不正确,请重新输入");
               }
           }            
           //判断输入的民族在该数据库中是否有此记录
           while (true)
           {
               Console.Write("请输入民族:");                string nation = Console.ReadLine();                
               //从民族表中查询用户输入的民族对应的民族编号
               cmd.CommandText = "select NationCode from UserNation where NationName=‘" + nation + "‘";
               conn.Open();
               SqlDataReader dr = cmd.ExecuteReader();                
               //如果查询到该记录,则把民族编号提取出来,关闭数据库并跳出循环
               if (dr.Read())
               {
                   nationcode = dr["NationCode"].ToString();
                   conn.Close();                  
                    break;
               }                
               //如果查询不到该记录,提示一下用户,关闭数据库,继续循环。
               else
               {
                   conn.Close();
                   Console.WriteLine("记录暂无此民族,请输入其他民族");
               }
           }            
           //添加数据的sql语句
           cmd.CommandText = "insert into Users values(‘" + name + "‘,‘" + password + "‘,‘" + nickname + "‘,‘" + sex + "‘,‘" + birthday + "‘,‘" + nationcode + "‘)";
           conn.Open();            
           int a = cmd.ExecuteNonQuery();            
           if (a == 1) Console.WriteLine("数据已经添加进去");            
           else Console.WriteLine("该条数据未添加进去!");
           conn.Close();

Console.ReadLine();
       }
   }
}

时间: 2024-10-11 23:01:20

C#回顾 Ado.Net C#连接数据库进行增、删、改、查的相关文章

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

数据库: Android使用JDBC连接数据库实现增 删 该 查 操作(5.0版本)

前言 上一节的代码没有测试通过,暂时没有找到问题,这节咱用5.0的jar包 配置数据库,导入jar包参考上一节(导入这节的jar包) 准备好测试的数据库 IP: 47.92.31.46 用户名: yang 密码:    11223344. 数据库名字 :  databasetest 表格:  userinfo 这是我云端电脑安装的数据库,大家都可以连接测试 我设置了权限,只可以增删改查数据 加载mysql驱动 Class.forName("com.mysql.jdbc.Driver")

数据库: C#使用MySql.Data.6.9.12连接数据库实现增 删 该 查 操作

准备好测试的数据库 IP: 47.92.31.46 用户名: yang 密码:    11223344. 数据库名字 :  databasetest 表格:  userinfo 这是我云端电脑安装的数据库,大家都可以连接测试 我设置了权限,只可以增删改查数据 新建工程,安装支持的包 工程右键 注意: 咱新建项目的时候选择的是4.0 这里的版本大于咱的版本了,咱选择旧版安装 在页面上放一个文本框用于打印连接的信息 API使用 https://dev.mysql.com/doc/ 连接数据库 try

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

php基础:数据库的含义和基本操作 增 删 改 查

//数据库是帮我们管理数据的一个软件,我们将数据给他,放进数据库里.他能很稳妥的帮我们管理起来,且效率很高.//php的大部分工作就是  php->连接数据库->写入数据->查出数据->格式化数据->显示出来,//数据库管理数据是以表的形式组成的,多行多列,表头声明好了,一个表创建好了,剩下的就是往里面添加数据 多张表放在一个文件夹里面就形成了库  mysql服务器帮我们管理多个库C:\wamp\bin\mysql\mysql5.6.12\data   数据库中的数据放在这个

Android 增,删,改,查 通讯录中的联系人

一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>

js数组的管理[增,删,改,查]

今天在设计表单的时候遇到对数组的一些处理的问题,比如说怎么创建一个数组,然后牵扯到数组的增删改查的方法.请看API FF: Firefox, N: Netscape, IE: Internet Explorer 方法 描述 FF N IE concat() 连接两个或更多的数组,并返回结果. 1 4 4 join() 把数组的所有元素放入一个字符串.元素通过指定的分隔符进行分隔. 1 3 4 pop() 删除并返回数组的最后一个元素 1 4 5.5 push() 向数组的末尾添加一个或更多元素,