数据访问

对应命名空间:System.Data.SqlClient;

SqlConnection:连接对象
SqlCommand:命令对象
SqlDataReader:读取器对象

CommandText:命令文本

增删改、查分以下几步:

1.造连接字符串
string connstring = "server=.;database=mydb;user=sa;pwd=123";

          connstring:造的字符串名

          server指服务器一般是IP地址本机可以使用点;
          database指数据库名称要访问的数据库名称
          user数据库的用户名:一般是sa
          pwd数据库的密码:自己设置的

2.造连接对象
SqlConnection conn = new SqlConnection(connstring);

          conn:造的连接对象名

3.创建命令对象
SqlCommand cmd = conn.CreateCommand();

          cmd:造的命令对象名

4.写要执行的SQL语句

  4-1:查询

  cmd.CommandText = "select * from Info";

  //4-2:添加

  cmd.CommandText = "Insert into Info values('p032','毒哥','True','n001','1987-02-02')";

  //4-3:删除

  cmd.CommandText = "delete from Info where Code='p032';

  //4-4:更改

   cmd.CommandText = "update Info set name='情方方' where Code='p032';

【打开连接】
conn.Open();  //可放在执行之前的任意位置

5.执行操作

  5-1:(读取操作,返回读取器对象)

  SqlDataReader dr = cmd.ExecuteReader();

  //5-2.执行操作(增删改操作,返回行数)
  cmd.ExecuteNonQuery();

6.处理数据

  6-1:查询一条数据

  if (dr.HasRows)      //HasRows 判断是否有行数据 bool型,返回true/false
  {
    dr.Read();    //dr.Read() 是数据库数据访问指针,每执行一次都会向下走一行,如果有内容则返回true,同时dr访问为当前行数据集合,

               可以使用索引或是列名来访问相对应的数据

    Console.WriteLine(dr[0]);
    Console.ReadLine();
  }
  else
  {
    Console.WriteLine("读取失败!");
  }

  //6-2.查询多条数据

  if (dr.HasRows)
  {
    while(dr.Read())  //使用while循环读取所有数据  一行数据是一个数组,一行数据里有多少列就有多少个索引
  {
    Console.WriteLine(dr[0]+"----"+dr[1]);
  }

    Console.ReadLine();
  }
  else
  {
    Console.WriteLine("没有读到数据");
    Console.ReadLine();
  }

【关闭连接】

conn.Close();

例:根据用户输入一个条件查询数据

        static void Main1(string[] args)
{
//用户输入内容
Console.WriteLine("请输入要查询的名称:");
string str = Console.ReadLine(); //造连接字符串
string connstring = "server=.;database=mydb;user=sa;pwd=123"; //造连接对象
SqlConnection conn = new SqlConnection(connstring); //造命令对象
SqlCommand cmd = conn.CreateCommand(); //准备一条SQL语句
cmd.CommandText = "select * from Info where Name like '%"+str+"%'"; //打开连接
conn.Open(); //执行SQL语句
SqlDataReader dr = cmd.ExecuteReader(); //读取数据
if (dr.HasRows)
{
while (dr.Read())
{
int n = ;
while ( n <dr.FieldCount ) //.FieldCount获取当前行的列数
{
Console.Write(dr[n]+"\t");
n++;
}
Console.WriteLine();
}
}
else
{
Console.WriteLine("没有查到满足条件的数据");
} //关闭连接
conn.Close(); Console.ReadLine(); }

例:让用户输入要删除的数据主键值(此方法不安全)

 static void Main4(string[] args)
{
//用户输入要删除的数据主键值
Console.WriteLine("请输入要删除的代号:");
string code = Console.ReadLine(); //判断该数据存不存在
SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from Info where Code='"+code+"'";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows)
{
//说明该数据存在
Console.WriteLine("查到该数据,是否要执行删除操作,如果要删除请输入:1");
int sc = Convert.ToInt32(Console.ReadLine()); if (sc == )
{
//删除
dr.Close(); //关闭读取器 cmd.CommandText = "delete from Info where Code='"+code+"'";
cmd.ExecuteNonQuery();
Console.WriteLine("删除成功!"); }
else
{
//不删除
dr.Read(); string sex = Convert.ToBoolean(dr[])?"男":"女";
string nation = MinZu(dr[].ToString()); string str = "代号:"+dr[]+"\t姓名:"+dr[]+"\t性别:"+sex+"\t民族:"+nation+"\t生日:"+dr[]; Console.WriteLine(str); }
}
else
{
//数据不存在
Console.WriteLine("输入的代号错误!");
} conn.Close();
Console.ReadLine();
} static string MinZu(string code)
{
string name="";
SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select Name from Nation where Code = '" + code + "'";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
name = dr[].ToString();
}
conn.Close(); return name;
}

例:让用户输入要添加的内容

        static void Main3(string[] args)
{
//让用户输入要添加的内容
Console.WriteLine("请输入要添加的代号:");
string code = Console.ReadLine(); Console.WriteLine("请输入姓名:");
string name = Console.ReadLine(); Console.WriteLine("请输入性别:");
bool sex = Console.ReadLine()=="男"?true:false; Console.WriteLine("请输入民族:");
string nation = Console.ReadLine(); Console.WriteLine("请输入生日:");
string birthday = Console.ReadLine(); string nationcode = "n001"; //将民族名称转为名族代号
SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select Code from Nation where Name = '"+nation+"'";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
nationcode = dr[].ToString();
}
conn.Close(); //往Info表添加数据
cmd.CommandText = "insert into Info values('"+code+"','"+name+"','"+sex+"','"+nationcode+"','"+birthday+"')";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Console.WriteLine("添加成功!"); Console.ReadLine();
}

ADO.NET 增删改、查的更多相关文章

  1. Ado.net[增删改查,GET传值]

    1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.c ...

  2. ADO.NET 增删改查的基本用法

    ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...

  3. LinQ和ADO.Net增删改查 备忘

    是否些倦了 SqlConnection conn=new SqlConnection();一系列繁冗的代码? 来试试Linq吧 查: using System.Data.SqlClient; name ...

  4. ADO.net 增删改查

    ADO.net 一.定义:编程开发语言与数据库连接的一门语言技术 二.链接: 在vs中操作数据库需在开头进行链接 链接内容:using System.Data.SqlClient 三.引用数据库: 四 ...

  5. ado.net增删改查练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  6. ado.net增删改查操作

    ado.net是数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层最基础的数据库访问技术 使用ado.net对数据 ...

  7. ADO.net 增删改查封装DBhelper

    using System; using System.Collections.Generic; using System.Data.SqlClient;//引用数据库客户端 using System. ...

  8. Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]

    [虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...

  9. ado.net C#如何实现数据库增删改查

    ado.net数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术也就是说是最麻烦但是是最不可缺少的 ...

  10. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

随机推荐

  1. javascript第一篇----使用简介

    使用技巧 Javascript加入网页有两种方法:直接方式和引用方式. 直接方式 直接调用分为两种形式:代码块和代码行 代码行引用: <a href="javascript:alert ...

  2. Android开发:组播(多播)与广播

    近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播) 背景知识:组播使用UDP对一定范 ...

  3. 毕业论文评审意见、导师意见范文、模板_Smile~风_百度空间

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  4. Android之ListView的快速滑动模式:fastScrollEnabled以及滑块的自定义

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0917/1690.html http://blog.csdn.net/xyang ...

  5. CentOS 6.4 利用 Awstats 7.2 分析 Nginx 日志

    一.配置Nginx 日志分割 (略) 二.配置FCGI 1.安装CPAN wget http://search.cpan.org/CPAN/authors/id/A/AN/ANDK/CPAN-2.00 ...

  6. strlen sizeof strcat strcpy区别

      strlen(p): 能计算出p指向字符串的长度(以当前p的位置开始),不包含终止字符'\0': p可以声明为char* p或者char p[],这两种形式strlen均能正确计算. sizeof ...

  7. 控制流之while

    while语句只要在一个条件为真的情况下,while语句允许你重复执行一块语句.while语句是所谓 循环 语句的一个例子.while语句有一个可选的else从句.使用while语句~~~~~~~~~ ...

  8. 用HTML 格式导出Excel

    只需按照如下格式写就可,在<head> 里面嵌套table,必须修改html的命名空间,加上一些描述.保存为xls文件 <html xmlns:x="urn:schemas ...

  9. 文本去重-----awk或者uniq

    对于awk '!a[$3]++',需要了解3个知识点 1.awk数组知识,不说了 2.awk的基本命令格式 awk 'pattern{action}'     省略action时,默认action是{ ...

  10. UIResponder学习

    http://blog.csdn.net/jimzhai/article/details/23283515 UIResponder 介绍 UIResponder 这个类定义了很多用来处理响应和时间处理 ...