ADO.NET基础学习-----四种模型,防止SQL注入
1.ExcuteNonQuery
执行非查询语句,返回受影响的行数。
// 1.ExcuteNonQuery
string sqlconn = "Data Source=wss;Initial Catalog=TextDB;User ID=sa;Password=w778764;Integrated Security=true";
SqlConnection conn = new SqlConnection(sqlconn);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into TB_USER(userID,password,LastTime,code) values ('fungame','131313',2005-05-23,56)";
int num = cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();
Console.Write("(共有{0}行受影响",num.ToString());
Console.ReadKey();
2.ExcuteScalar
执行查询语句,返回一行一列的数据。
.ExcuteScaler
string sqlconn= "data source = wss;uid = sa;pwd = w778764;Integrated Security = true;Initial Catalog = TextDB;";
string sql = "select * from TB_USER ";
using (SqlConnection conn = new SqlConnection (sqlconn))
{
using (SqlCommand cmd = new SqlCommand(sql,conn))
{
conn.Open();
string str = cmd.ExecuteScalar().ToString();
Console.WriteLine(str);
conn.Close();
}
}
Console.ReadKey();
3.参数化查询(防止SQL注入<1' or '1' = '1>)
//3.防止SQL注入,参数化查询
Console.WriteLine("请输入用户名:");
string uid =Console.ReadLine();
Console.WriteLine("请输入密码");
string pwd = Console.ReadLine(); string sqlconn = "data source = wss;uid = @uid;pwd = @pwd;Integrated Security = true;Initial Catalog = TextDB;";
string sqldtr = "select count(*) from TB_USER;";
SqlParameter spuid = new SqlParameter(@uid, uid);//构建参数化对象
SqlParameter sppwd = new SqlParameter(@pwd, pwd); using (SqlConnection conn = new SqlConnection(sqlconn))
{
using (SqlCommand cmd = new SqlCommand(sqldtr,conn))
{ cmd.Parameters.Add(spuid);//将参数对象添加入执行列表
cmd.Parameters.Add(sppwd);
conn.Open();
int num =(int) cmd.ExecuteScalar();
conn.Close();
Console.Write("n={0}", num);
}
}
4.sqldatareader
执行查询语句,将数据暂存到sqldatareader对象中,可以通过索引将数据逐行取出。
.sqldatareader使用
string sqlstr = "data source = wss;uid =@uid;pwd =@pwd;Initial Catalog = TextDB;Integrated Security = true;";
string sql = "select * from TB_USER;";
string uid = "";
string pwd = "";
SqlParameter suid = new SqlParameter(@uid, uid);
SqlParameter spwd = new SqlParameter(@pwd, pwd);
using (SqlConnection conn = new SqlConnection (sqlstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(suid);
cmd.Parameters.Add(spwd);
conn.Open();
SqlDataReader sqlread = cmd.ExecuteReader();
using (sqlread)
{
while(sqlread.Read())
{
for (int i = ; i < sqlread.FieldCount; i++)
{
string data = sqlread[i].ToString();
Console.Write(data+"\t");
}
Console.WriteLine();
}
}
conn.Close();
}
}
5.SqlDataAdapter
通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable,可以通过索引将单个的datatable数据绑定到数据容器中显示,如:datagridview。
该实例中是建立了winform程序,设计视图中添加一个gridview和按钮控件,在按钮单击事件中添加如下代码。tips:girdview属性中的Anchor(锚;抛锚停泊)可以设定控件的四个方向是否跟随窗口大小改动而改动。
private void button1_Click(object sender, EventArgs e)
{
string sqlstr = "data source = wss;uid =@uid;pwd =@pwd;Initial Catalog = TextDB;Integrated Security = true;";
string sql = "select * from TB_USER;";
DataSet ds = new DataSet();
using (SqlDataAdapter sda = new SqlDataAdapter(sql,sqlstr))
{
sda.Fill(ds);
}
dataGridView1.DataSource = ds.Tables[];
}
如果这些内容帮助到你了,希望您给予支持 o(^▽^)o (支付宝)
(支付宝)
ADO.NET基础学习-----四种模型,防止SQL注入的更多相关文章
- Python基础学习四
Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...
- 四种简单的sql语句(增删改查语句)
四种简单的sql语句(增删改查语句) 一.插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二.删除语句 dele ...
- sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)
(整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...
- web安全之SQL注入---第四章 如何进行SQL注入攻击
第四章 如何进行SQL注入攻击1.数字注入2.字符串注入 '# '--
- 【2017-03-09】SQL Server 数据库基础、四种约束
一.数据库和内存的区别 数据库:一些存储在硬盘上的数据文件 内存:计算机临时存储的一些数据 二.常用数据库 .Net - SQL Server PHP - MySql Java - Oreacl 三. ...
- 四 akka学习 四种多线程的解决方案
http://blog.csdn.net/chenleixing/article/details/44044243 四种多线程的解决方案
- Oracle学习总结(6)—— SQL注入技术
不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一. SQL注入基 ...
- JAVA jdbc(数据库连接池)学习笔记(二) SQL注入
PS:今天偶然间发现了SQL的注入...所以就简单的脑补了一下,都是一些简单的例子...这篇写的不怎么样...由于自己没有进行很深的研究... 学习内容: 1.SQL注入的概念... 所谓SQL注 ...
- Mybatis基础学习(四)—关系映射
一.模型分析 user和orders user---->orders 一个用户可以创建多个订单,一对多. orders--->user 一个订单只由一个用户创建,一对一. orders ...
随机推荐
- Subnet Routing Examples
Routing Table Each row in routing table contains: Destination IP address IP address of next-hop rout ...
- MATLAB PCHIP函数一阶求导分析
MATLAB PCHIP函数一阶求导分析 摘要:本文首先根据三次立方插值的一般表达式,得出分段三次立方插值时,每个小区间上的各次项系数.分析发现,三次项.二次项.一次项系数都与小区间端点处的一阶导数值 ...
- Lua中的数据结构
1 数组:(lua习惯数组从1开始) a={} , do a[i]= end 2 阵和多维数组 : mt={}//新建一个表,表元素为表 ,N do mt[i]={}//新建一个表,里面的表元素为值 ...
- php新闻静态化方法
$view=file_get_contents('./a.tpl'); //新闻详情页模板模式,需要数据位置定义标签如{title},{content} $php_content=str_replac ...
- react系列(三)组件间通信
组件间通信 React的基本组件元素是一个个组件,组件之间可能存在关联.组合等关系.不同的组件之间,经常会发生数据传递或者交换,我们称之为组件间通信. 根据传递的复杂程度,可以分为三种情况: 父子间通 ...
- 一文读懂类加载机制--ClassLoader
一.什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程 ...
- angularjs脏机制
Angular 每一个绑定到UI的数据,就会有一个 $watch 对象. watch = { name:'', //当前的watch 对象 观测的数据名 getNewValue:function($s ...
- h5禁用手机input点击放大
最近项目做的是h5的手机移动端,在用苹果浏览器测试时,弹出框输入信息会自动拉伸屏幕,并且不会像安卓一样回来. 网上查找说设置浏览器自适应头,但是并没有效果, <meta name="v ...
- Flume:source和sink
Flume – 初识flume.source和sink 目录基本概念常用源 Source常用sink 基本概念 什么叫flume? 分布式,可靠的大量日志收集.聚合和移动工具. events ...
- Manjaro Linux KDE个人的一些安装配置
安装manjaro kde linux的个人步骤 1 换源 1.1 自动寻找最快的源 sudo pacman-mirrors -i -c China -m rank 1.2 修改源文件 sudo ge ...