ADO.NET知识的运用一(Day 26)
哈哈,又到了总结的时间了,来回顾一下今天主要学了关于ADO.NET的哪些知识吧。(这次学的ADO访问数据库主要以访问SQL数据库为主)
理论:
首先我们要知道为什么要学习ADO.NET?
因为我们之前所学只能在查询分析器里查看数据,操作数据,我们不能让普通用户去学sql,所以我们搭建一个界面(web或winform)让用户方便的操作数据库中的数据
什么是ADO.NET?
ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, System.Data.这组类是用来操作数据库(不光是MSSql Server),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作MSSql Server一致

ADO.NET访问数据库的方式(有两种)
static void Main(string[] args)
{
//创建连接字符串 string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; //打开连接 using (SqlConnection conn = new SqlConnection(connstr)) {
conn.Open(); //执行数据库操作 string sql = "insert into info values('jany',19,'女','123456')"; using (SqlCommand comm = new SqlCommand(sql, conn)) //创建命令对象
{
int i = comm.ExecuteNonQuery(); //执行对数据库的增删改,返回受影响的行数 if (i > )
{
Console.WriteLine("插入成功"); }
else
{
Console.WriteLine("插入失败");
} }
Console.ReadKey();
}
}
结果:


2. 更新数据(删除数据类似于更新数据和插入数据,只是执行的sql语句不一样而已)
static void Main(string[] args)
{
//创建连接字符串 string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; //打开连接 using (SqlConnection conn = new SqlConnection(connstr)) {
conn.Open(); //执行数据库操作 string sql = "update info set name='rose' where id=4"; using (SqlCommand comm = new SqlCommand(sql, conn)) //创建命令对象
{
int i = comm.ExecuteNonQuery(); //执行对数据库的增删改,返回受影响的行数 if (i > )
{
Console.WriteLine("更新成功"); }
else
{
Console.WriteLine("更新失败");
} }
Console.ReadKey();
}
}
结果:


3.读取数据(运用SqlDataReader)
static void Main(string[] args)
{ //创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open(); //打开连接 string sqltext = "select * from 职工"; using (SqlCommand comm = new SqlCommand(sqltext, conn))
{
using (SqlDataReader sda = comm.ExecuteReader()) //创建数据读取器,获取SqlDataReader的对象
{
while (sda.Read()) //一条一条来读取
{
Console.WriteLine("职工ID{0},职工号{1},仓库号{2},姓名{3},性别{4},工资{5}", sda[], sda[], sda[], sda[], sda[], sda[]);
} Console.ReadKey();
}
}
}
结果:

3.DataSet运用(窗体程序)
首先设计窗体界面

主要代码:
private void Form1_Load(object sender, EventArgs e)
{
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; //打开连接
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open(); //执行数据库操作
string sqltext = "Select * from 职工";
using (SqlCommand comm = new SqlCommand(sqltext, conn)) //创建命令对象
{
DataSet sds = new DataSet(); //创建数据集 using (SqlDataAdapter sda= new SqlDataAdapter(comm) ) //创建数据适配器
{ sda.Fill(sds); //填充数据
} this.dataGridView1.DataSource =sds.Tables[]; //绑定数据 } }
}
结果:

4.用户登录(窗体程序)
窗体界面

主要代码:
private void btnok_Click(object sender, EventArgs e)
{
string user = this.txtname.Text;
string pwd = this.txtpwd.Text;
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; //打开连接
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open(); //执行数据库操作。 (向SqlCommand的Parameters中添加参数)
string sqltext = "select * from info where name=@user and pwd=@pwd";
SqlParameter sp = new SqlParameter("@user", user);
SqlParameter sp1 = new SqlParameter("@pwd", pwd); using (SqlCommand cmd = new SqlCommand(sqltext, conn))
{
cmd.Parameters.Add(sp);
cmd.Parameters.Add(sp1); DataTable dt = new DataTable(); //表示一个内存中数据表 using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) //创建数据适配器
{
sda.Fill(dt); //填充数据
}
if (dt.Rows.Count > )
{
MessageBox.Show("登陆成功");
}
else
{
MessageBox.Show("登录失败");
}
} }
} private void btnclo_Click(object sender, EventArgs e)
{
this.txtname.Text= "";
this.txtpwd.Text = ""; }
运行结果:

补充:
SQL注入漏洞攻击
参数在SQLServer内部不是简单的字符串替换,SQLServer直接用添加的值进行数据比较,因此不会有注入漏洞攻击。(带参数的sql语句内部是调用了存储过程)
呵呵,今天就先写到这里吧。其他的一些知识等用到的时候在记录下来吧。加油!
ADO.NET知识的运用一(Day 26)的更多相关文章
- ADO.Net知识总结
		
(一)基础知识 ADO.NET: .NET中用来向数据库提交执行SQL语句的一堆类 本机访问直接"Windows验证",但是一般项目中都是单独的数据库服务器,程序在另外一台电脑上连 ...
 - ADO.NET知识学习总结
		
1. 概述 使用的命名空间: System.Data.SqlClient 连接字符串 服务器/数据库实例+数据库名称+安全信息+用户名+密码 可参考http://www.connectio ...
 - ado.net知识整理
		
对ado.net总是半知半解,五大对象也总是混淆,近期自己做小项目练手,整理了一些知识点 ado.net的无要素(摘自其他博文) Connection 物件 Connection 对象主要是开启 ...
 - ADO.NET知识汇总
		
这又是一篇记录平常工作笔记的博客,无论是在排版还是解说上都不会有太多要求.同时这也是一篇不上博客园首页的博客,Just记录一些工作笔记. vSelect返回单个值 string connSQL = @ ...
 - SQL数据库知识二(Day 25)
		
又到了总结知识的时候了,今天主要把SQL数据库给简单的学完了,明天开始就要开始学ADO.NET的知识了.好了,话不多说,还是看一下今天都学了哪些内容. 1 字符串类型的知识点 --类型的使用 --截 ...
 - SQL[连载3]sql的一些高级用法
		
SQL[连载3]sql的一些高级用法 SQL 高级教程 SQL SELECT TOP SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目. SELECT TOP ...
 - backbone学习笔记(一)
		
因为工作的需要,从今天起对backbone的学习过程做下记录. 学习计划: 1.1周看基本知识(2014/1/18-2014/1/25) 2.基本知识总结(2014/1/26) 3.半周按教程写hel ...
 - (Alpha)Let's-NABC
		
效果图 NABC Need 在日常生活中我们也许经常有这样的疑问:在空闲时间内经常感到无处可去:抑或是有个心血来潮的想法却无人响应:或者困扰于自己狭小的交际圈,希望能有更多的朋友.(打个羽毛球没人一起 ...
 - PSP总结
		
一.回顾1 (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 以前的回答:当初之所以选择计算机专业,是因为我比较喜欢数学,觉得计 ...
 
随机推荐
- 一次性关闭所有的Activity
			
原文:一次性关闭所有的Activity 一次性关闭所有的Activity ActivityManager am = (ActivityManager)getSystemService (Context ...
 - 每天学点Linux:七
			
Shell编程 shell变量类型: 只有字符串型,变量可以被赋值,被修改,被引用. shell变量命名方法:第一个字符为字母,其余字符可以是字母,数字或下划线. 变量引用:在变量名前加$号,代表变量 ...
 - perl  分析binlog 定位错误sql 思路
			
1. 获取需要的binlog 日志: [root@zjzc01 binlog]# mysqlbinlog --start-datetime='2016-08-01 00:00:00' --stop-d ...
 - HDU 5727 Necklace(二分图匹配)
			
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5727 [题目大意] 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环,已知有些阴珠子和阳 ...
 - POJ 2799 IP Networks
			
network address是前(32-n)随意 后n位全零 network mask是前(32-n)全一 后n位全零 本题主要利用位移操作,1ULL表示无符号长整型的常数1,这样写可防止不必要的溢 ...
 - php各类hash算法长度及性能
			
Hash结果如下 <?php $data = "hello world"; foreach (hash_algos() as $v) { $r = hash($v, $dat ...
 - Android 4.2启动代码分析(一)
			
Android系统启动过程分析 Android系统的框架架构图如下(来自网上): Linux内核启动之后----->就到Android的Init进程 ----->进而启动Android ...
 - The "Run One Program Only" Phenomenon
			
As previously discussed,embedded devices normally embody the functionality they implement.In other w ...
 - commons-lang 包常用方法
			
package com.java.utils; import java.util.Iterator; import java.util.Map; import org.apache.commo ...
 - sql server group by    having   之复习篇
			
where 与 having 之间的差别在于where 是分组前的过滤,而having是分组后的过滤 Group By中Select指定的字段限制 示例3 select 类别, sum(数量) as ...