ADO.NET 增删改、查
数据访问
对应命名空间: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 增删改、查的更多相关文章
- Ado.net[增删改查,GET传值]
1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.c ...
- ADO.NET 增删改查的基本用法
ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...
- LinQ和ADO.Net增删改查 备忘
是否些倦了 SqlConnection conn=new SqlConnection();一系列繁冗的代码? 来试试Linq吧 查: using System.Data.SqlClient; name ...
- ADO.net 增删改查
ADO.net 一.定义:编程开发语言与数据库连接的一门语言技术 二.链接: 在vs中操作数据库需在开头进行链接 链接内容:using System.Data.SqlClient 三.引用数据库: 四 ...
- ado.net增删改查练习
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- ado.net增删改查操作
ado.net是数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层最基础的数据库访问技术 使用ado.net对数据 ...
- ADO.net 增删改查封装DBhelper
using System; using System.Collections.Generic; using System.Data.SqlClient;//引用数据库客户端 using System. ...
- Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]
[虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...
- ado.net C#如何实现数据库增删改查
ado.net数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术也就是说是最麻烦但是是最不可缺少的 ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
随机推荐
- 第一次在手机上跑动ane
记录一下: 打包的时候先出现 error 100: descriptor cannot be parsed, 原因是命名空间少了个引号,自己粗心所致 第二次打包出现了invalid namespace ...
- S3C2440触摸屏驱动详解
2440的触摸屏转换接口搭载在ADC接口之上,使用上比ADC接口多了一些花样,首先,触摸屏接口有几种转换模式 1. 普通转换模式 单转换模式是最合适的通用ADC转换.此模式可以通过设置ADCCON(A ...
- WCF中传递对象的成员变量行不通?
今早通过WCF服务添加对象到数据库,有一个变量始终没有传过来 定义: public bool isLogin; 修改成 private bool _isLogin; public bool isLog ...
- 创建和使用MySQL计划事件
查看事件调度程序线程的状态: SHOW PROCESSLIST; 要启用和启动事件调度程序线程命令: SET GLOBAL event_scheduler = ON; 禁用和停止事件调度程序线程: S ...
- Python中下划线---完全解读
Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...
- poj2528 Mayor's posters(线段树区间覆盖)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 50888 Accepted: 14737 ...
- svn无法提交
svn无法提交, 错误信息:Commit failed. svn: E200007: CHECKOUT can only be performed on a version resource... 解 ...
- MAC中使用Vim和GCC编译C程序
1.打开终端 2.输入以下命令进入vim编辑器: vim a.c 3.进入编辑器后按i进入insert模式,然后键入以下代码: #include<stdio.h> int main(){ ...
- IOS开发中使用CNContact\CNMutableContact 对通讯录增删改查
IOS开发中使用CNContact\CNMutableContact 对通讯录增删改查 首先当然是把CNcontact包含在工程中: @import Contacts; 1.下面是增加联系人的程序段: ...
- IOS开发之按钮控件Button详解
reference:http://mxcvns.lofter.com/post/1d23b1a3_685d59d 首先是继承问题,UIButton继承于UIControl,而UIControl继承于U ...