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 ...
随机推荐
- HDU 2079 选课时间(普通型 数量有限 母函数)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2079 选课时间(题目已修改,注意读题) Time Limit:1000MS Memory Li ...
- 使用 Solr 构建企业级搜索服务器
最近因项目需要一个全文搜索引擎服务, 在考察了Lucene及Solr后,我们选择了Solr. 本文简要记录了基于Solr搭建一个企业搜索服务器的过程.网上的资料太多千篇一律,也可能版本不同,总之在参照 ...
- java中匿名内部类总结
在java的世界里,提供了匿名内部类语法糖,用于帮助大家简化代码,本文简要从接口,抽象类以及常规类以代码的形式描述其常用模式. 1. 接口模式 public interface IWriter { v ...
- MyBatis-Plus工具快速入门使用
MyBatis-plus有什么特色 1.代码生成 2.条件构造器 对我而言,主要的目的是使用它强大的条件构建器. 快速使用步骤: 1.添加pom文件依赖 <dependency> < ...
- html 让table表格中的td单元格内容过长显示为固定长度,多余部分用省略号代替?
<th class="wrap">商品名</th> .wrap{ width: 150px; //设置需要固定的宽度 white-space: nowrap ...
- centos7.3上编译安装percona5.7.18
一,删除操作系统自带mariadb yum remove mariadb 二,下载需要的安装包 percona-toolkit-3.0.3-1.el7.x86_64.rpm boost_1_59_0. ...
- 一、Vue项目构建
Attention:以下内容为Mac机上运行,windows可能有所偏差- Step1 打开终端,键入npm install -g vue-cli,使用vue-cli脚手架搭建vue项目能省很多事儿- ...
- bootstrap-paginator分页插件的简单使用实例
Document 21:36:40 简述:bootstrap-paginator是一款基于bootstrap的jQuery分页插件. githup项目地址:https://github.com/lyo ...
- Python提高篇
Python提高篇 1.模块 1)模块定义 模块就是py文件,可以是你自己写的,也可以是python当中自带的工具,当你在某个py文件下想要引用其他模块的功能,就需要你把你把该py文件导入. 2)导入 ...
- checked和unchecked转换
static unsafe void Main(string[] args) { unchecked //checked 运行时候引发异常 { int n = int.MaxValue; n++; C ...