SqlDataAdapter操作数据和使用存储过程哪个安全些?

问题描述

用SqlDataAdapter插入,更新,删除数据能防止sql注入吗?

解决方案

解决方案二:
这个要看用户界面输入控制了。
解决方案三:
多用存储过程,或挂参数输入,可以比较有效的防止SQL注入
解决方案四:
引用2楼kent55782的回复:

多用存储过程,或挂参数输入,可以比较有效的防止SQL注入

解决方案五:
Cn.Open();stringstrSql="select*fromNews";DataSetDs=newDataSet();SqlDataAdapterDa=newSqlDataAdapter(strSql,Cn);Da.Fill(Ds,"N");DataRowNewsRow=Ds.Tables["N"].NewRow();NewsRow["Title"]=Title.Text.ToString();NewsRow["Content"]=txtContent.Text.ToString();NewsRow["AddTime"]=DateTime.Now.ToString();Ds.Tables["N"].Rows.Add(NewsRow);SqlCommandBuilderCmdBuilder=newSqlCommandBuilder(Da);Da.InsertCommand=CmdBuilder.GetInsertCommand();Da.Update(Ds,"N");Ds.Clear();

我的代码是这样的。这样的话是不是也能防止注入。请指教。
解决方案六:
用SqlDataSource的时候也能用存储过程的

时间: 2024-11-01 09:17:14

SqlDataAdapter操作数据和使用存储过程哪个安全些?的相关文章

C#执行存储过程代码实例

  C#执行存储过程代码实例,演示如何用C#调用并执行SQLSERVER的存储过程,是一个数据库的高级应用,存储过程相对专业些,但效率更高,而且使SQL的功能发挥的更强大,这仅是一个较简单的存储过程调用例子: 01using System; 02using System.Data; 03using System.Data.SqlClient; 04namespace ExecuteStorageProcess 05{ 06 public class ExecuteStorageProcess 0

【数据蒋堂】第13期:怎样看待存储过程的移植困难

存储过程移植困难是经常被诟病的,在罗列存储过程的缺点时,这一条几乎从来不会被遗漏. 存储过程的移植确实很困难,一般业务逻辑复杂到需要写存储过程的地步,总会不可避免地用到数据库独有的特性和语法,更换数据库时这部分代码就需要重写.如果只是简单地替换函数名和参数规则(如日期转换等),那成本还不高:如果用到了新数据库不支持的某种特性(如窗口函数),那还要重新设计算法来编写计算逻辑:如果还要再兼顾性能因素,有时候就会是个不可能完成的任务了. 不过,还好,存储过程移植的情况并不频繁. 多年前数据库市场还处于

数据蒋堂 | 怎样看待存储过程的移植困难

存储过程移植困难是经常被诟病的,在罗列存储过程的缺点时,这一条几乎从来不会被遗漏. 存储过程的移植确实很困难,一般业务逻辑复杂到需要写存储过程的地步,总会不可避免地用到数据库独有的特性和语法,更换数据库时这部分代码就需要重写.如果只是简单地替换函数名和参数规则(如日期转换等),那成本还不高:如果用到了新数据库不支持的某种特性(如窗口函数),那还要重新设计算法来编写计算逻辑:如果还要再兼顾性能因素,有时候就会是个不可能完成的任务了. 不过,还好,存储过程移植的情况并不频繁. 多年前数据库市场还处于

.NET 数据访问体系结构指南一

访问|数据|体系  ADO.NET 引入的主要变化之一是用 DataTable.DataSet.DataAdapter 和 DataReader 对象的组合取代了 ADO Recordset 对象.DataTable 表示单个表中行的集合,在这一方面类似于 Recordset.DataSet 表示 DataTable 对象的集合,同时包括将各种表绑定在一起的关系和约束.实际上,DataSet 是带有内置 XML 支持的.内存中的关系结构. DataSet 的主要特性之一是它不了解可能用来填充它的

在ASP.NET 2.0中操作数据之六十五:在TableAdapters中创建新的存储过程_自学过程

导言: 本教程的Data Access Layer (DAL)使用的是类型化的数据集(Typed DataSets).就像我们在第一章<创建一个数据访问层>里探讨的一样,该类型化的数据集由强类型的DataTable和TableAdapter构成.DataTable描绘的是系统里的逻辑实体而TableAdapter引用相关数据库执行数据访问,包括对DataTable填充数据.执行返回标量数据(scalar data)的请求.添加,更新,删除数据库里的记录等. TableAdapter执行的SQL

在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程_自学过程

导言: 在前面的文章里我们考察了如何让TableAdapters向导自动的创建存储过程.而在本文,我们将考察如何让TableAdapter使用现有的存储过程.由于Northwind数据库现有的存储过程很少,我们也需要考察如何在Visual Studio环境里手动向数据库添加新的存储过程. 注意:在第61章<在事务里对数据库修改进行封装>里我们向TableAdapter添加了一些方法以支持事务(比如 (BeginTransaction, CommitTransaction等).我们可以在不修改数

在ASP.NET 2.0中操作数据之七十二:调试存储过程_自学过程

导言: Visual Studio有很多的调试功能.我们只需要稍稍点点鼠标,敲敲键盘就可以使用断点(breakpoints)来打断某个程序的执行,并查看其状态.除了调试代码以外,Visual Studio也支持对SQL Server里面的存储过程进行调试.就像可以在ASP.NET页面的后台代码类或Business Logic Layer class类里设置断点一样,我们也可以在存储过程里设置断点. 本文我们将考察如何在Visual Studio的Server Explorer里进入存储过程并设置

在ASP.NET 2.0中操作数据之七十四:用Managed Code创建存储过程和用户自定义函数(下部分)_自学过程

第八步:从表现层调用Managed Stored Procedures 当对数据访问层和业务逻辑层进行扩充以支持调用GetDiscontinuedProducts 和 GetProductsWithPriceLessThan这2种managed stored procedures后,我们可以在一个ASP.NET页面里展示这些存储过程的结果了. 打开AdvancedDAL文件夹里的ManagedFunctionsAndSprocs.aspx页面,从工具箱拖一个GridView控件到设计器,设其ID

在ASP.NET 2.0中操作数据之七十三:用Managed Code创建存储过程和用户自定义函数(上部分)_自学过程

导言: 数据库,比如Microsoft's SQL Server 2005使用Transact-Structured Query Language (T-SQL)来插入.修改.检索数据.绝大多数数据库系统都包含constructs来对一系列的SQL statements进行分组,这些statements可以作为单独的单元来执行.存储过程就是一个例子,另一个例子是用户自定义函数(UDFs), 我们将在第9步进行详细的探讨. SQL是设计来处理一系列数据的. SELECT,UPDATE,和DELET