ADO.net笔记】的更多相关文章

ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConnection(ConnectionString)) { string cmdText = "select Flag from UserLogin where UserName='@UserName' and UserPwd='@Password'"; cmdText.Replace(&quo…
####ADO.NET ####1 启用sa验证与窗体相关知识     - 启用sa验证     - ShowDialog() ---- ####2 连接字符串     Data Source=服务器;Initial Catalog=数据库名字;`(Integrated Security=True;)`uid=用户名;pwd=密码 --- ####3 ADO.NET 增加(Create).读取(Read).更新(Update)和删除(Delete) - SqlConnection(connect…
相关知识: 连接池的意义: 应用程序往往涉及大量的,并发的数据访问操作 数据库服务器能够同时维系的连接数量非常有限.如果某个数据库访问操作不及时关闭连接,就会减少其他调用对数据库访问的机会.因此,一般需要尽可能晚的打开连接,尽可能早的关闭连接 反复的创建和销毁连接对象,或者反复的打开和关闭实际的连接(从应用程序到数据库服务器,可能跨网络),其开销是比较大的,也是不划算的 采用连接池,在池中缓存若干个链接对象.如果有调用需要使用连接,则从池中取出一个:调用完成后,并不销毁连接,而是将连接放回池中,…
相关知识: 处于同一事务(Transaction)内的一组操作,要么都成功执行,最后完全提交:但如果只要有任何一个操作失败或者出问题,所有值钱执行的操作也都取消并恢复到初始状态(即回滚) SqlTransacttion代表从ADO.NET中发出的事务 代码示例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; us…
相关知识: DataSet中的数据一旦从数据库下载下来,便不再与数据库保持联系.如果修改了DataSet中的数据,需要重新建立连接,并且通过SQL命令将修改更新到数据库去 编写SQL命令往往比较繁琐和机械化,ADO.NET提供了一个SqlCommandBuilder对象,帮助DataAdapter对象从SELECT语句推算出需要的UPDATE,DELETE和INSERT语句:然后DataAdapter便可以利用这些语句,检查DataSet中被修改的数据,然后提交到数据库 SqlCommandBu…
相关知识: 在ADO.NET访问SQL Server时,鼓励使用存储过程取代常规的SQL语句. 存储过程有下列优点: 存储过程中的SQL语句将会经过预先的解析和编译,然后存放在数据库服务器上行.调用的时候不必在此解析语法和编译,因此效率比采用常规SQL语句高 带参数的存储过程在一定程度上可以降低SQL注入攻击的风险 存储过程便于在数据库服务器上统一管理,减少了程序员维护SQL代码的工作量 存储过程有利于重用某些数据库的访问逻辑 代码示例: 在数据库中创建存储过程(沿用SQLInjection案例…
ADO.NET中的主要对象: Connection:连接对象.用于建立从应用程序到数据库服务器指定数据库的连接通道 Command:命令对象.用于执行增删查改等数据库语句命令 DataReader:数据阅读器对象.用于从数据库逐行返回数据 DataAdapter:数据适配器对象.封装了批量返回数据,以及对数据的增删查改等操作 DataSet:数据集对象.用于从数据库返回多行甚至多个表中的数据,可作为内存中的数据库 Parameter:参数对象.在进行带参数的查询,或调用存储过程时候代表参数 数据…
几次装机,Notes已烟消云散,近日因为Node.js死活搞不定,无奈装机,备份好的东东,没想到磁盘扇区出现异常,可能是PE启动盘的病毒,只好将磁盘全部重新分区,恢复数据也懒得恢复了,日积月累关乎将来的开发效率,还好处于懵懂阶段.笔记一大堆,记忆力又不怎么好,所以web+log=blog; SqlHelper类 using System; using System.Collections.Generic; using System.Configuration; using System.Data…
1.DbConnectionConnection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接.所有Connection对象的基类都是DbConnection类.Connection对象有两个重要属性:ConnectionString:表示用于打开 SQL Server 数据库的字符串:State:表示 Connection 的状态,有Closed和Open两种状态.Connection对象有两个重要方法:Open()方法:指示打开数据库:Close()方法:指示关…
相关知识: 前面所有示例,君是访问特定的数据库(SQL Server),因此注入SqlConnection.SqlCommand.SqlDataReader.SqlDataAdapter等类名都添加了“Sql”的前缀,并且隶属于System.Data.SqlClient命名空间.这就给代码的可移植性带来了巨大问题.如果数据库改用Oracle.MySQL或者BD2,代码几乎要全部重写,非常不利于重用. System.Data.Common命名空间提供了一组类和操作,使得程序可以忽略底层数据库的差异…
相关知识 上传二进制大对象(Binary Large Object)(如图片.视频等)的基本编程步骤是: 在数据库中使用varbinary(MAX).varchar(MAX)或者nvarchar(MAX)等数据类型记录BLOB 使用INSERT INTO语句,在表中建立一个新行 使用 UPDATE xxx.WRITE 语句,逐段将BLOB写入大数据字段中 代码示例 数据库:沿用AccountDBforSQLInjection,使用下列的SQL语句建立一个包含varbinary(MAX)字段类型的…
相关知识: 在SQL Server中,一般情况下,每行数据的总长度不能超过8K字节.因此,下列数据类型的长度,也不能超过8K字节:binary,char(),nchar(),varchar(),nvarchar().注意,由于nvarchar是Unicode字符,因此,其最大长度也不能超过nvarchar(4000) 对于超长数据,尤其是二进制数据(例如音频视频数据等),SQL Server提供了下列数据类型(可以超过8K):image,varbinary(max),text,ntext,var…
相关知识: DataSet和DataAdapter的内部结构: DataSet通过DataAdapter从数据库中获取数据 DataSet对象内部包括一个集合(Tables),也就是可以拥有多个表(DataTables):每个表存放着从数据库放回的一个结果集(一般由一条SELECT语句产生一个结果集) DataTable对象包含一个行集合(Rows),集合中的每个元素都是一个DataRow类型的对象.DataRow提供了通过下标或者列名进行访问字段数据的操作 DataTable对象还包含一个列集…
相关知识: 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成“参数” SQLCommand支持带参数的查询,也就是说,可以在查询语句中指定参数: 参数的设定: string strCmd = "SELECT AccountID FROM Account WHERE AccountName=@AccountName AND password=@password"; 对于SQL Server数据库,“@”是参数的前缀.上句中定义了两…
相关知识: 可以通过字符串的拼接来构造一个SQL命令字符串,但是SQL命令字符串的拼接确是造成“SQL注入攻击”的重要原因. 考虑下列例子:从ProductCategory表中检索出Name为“Bikes”的类别信息.(示例数据库采用红皮书的数据库:AdventureWorks_WroxSSRS2012) 如果要凭借字符串,将写成: string name = "Bikes"; string strCmd = "SELECT ProductCategoryID, Name F…
相关知识: ExecuteNonQuery()方法:执行CommandText属性所制定的操作,返回受影响的记录条数.该方法一般用来执行SQL中的UPDATE.INSERT和DELETE等操作 对于UPDATE.INSERT和DELETE语句,执行成功返回值为该命令所影响的行数,如果影响行数为0时返回值为0,如果数据操作回滚则返回值为-1.但是对于其他的操作比如对数据库结构的操作,如果操作成功时返回的确是-1,例如给数据库添加一个数据表CREATE操作,当表创建成功返回-1,如果操作失败,则发生…
相关知识: 有些SQL操作,例如SUM,只会从数据库返回一个数据值,而不是多行数据 尽管也可以使用ExecuteReader()返回一个DataReader对象,代表该数据值,但是使用Command对象的ExecuteScalar方法更加方便 ExecuteScalar()方法:该方法只能执行SELECT语句,通常用于统计,例如返回符合条件的记录个数 代码示例: using System; using System.Collections.Generic; using System.Linq;…
相关知识: 在很多情况下,可能把数据库的访问封装到一个函数中,通过该函数返回一个DataReader对象给调用者.例如定义函数:SqlDataReader returnDR(),然后再Main函数中调用它. 但这里导致了一个问题:在哪里关闭数据库连接? 在returnDR()函数中关闭Connection,那么在Main函数中将无法获取每行数据: 在Main函数中关闭Connection,但是Main函数无法访问returnDR()函数内部定义的SqlConnection对象:(除非把SqlCo…
使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.SqlClient; 使用DataReader访问数据库的步骤 创建SqlConnection对象,指定连接字符串 创建SqlCommand对象,指定与之相关的连接对象,以及数据库操作命令文本(CommandText) 打开连接 调用SqlCommand对象的ExecuteReader()方法,返回S…
数据导出成XML文件 #region 数据导出成XML文件 string sql = "select Id, CallerNumber, TelNum, StartDateTime, EndDateTime from chens.CallRecords"; XDocument xDoc = new XDocument(); //创建根目录 XElement person = new XElement("person"); xDoc.Add(person); usin…
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Data; using Microsoft.Win32; namespace SqlHelp { /// <summary> /// 定义SqlParameter所需的参数对象 /// </summary> public class Parameter { /// &…
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在学习ADP.NET过程中所作的笔记,可作为ADO.NET入门或者复习的教程.   连接字符串: DataSource=localhost; AttchDBFilename=|DataDirectory|\Database1.mdf; InitialCatalog=UserDate; Integrated Se…
ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转]   说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject 添加实体 将实体添加到集合中, 创建实体时,状态为EntityState.Detached 当调用AddObject将实体添加到Context时,状态为EntityState.Added myContext context = new myContext(); myTab r = new myTa…
1. ado.net步骤:     一:倒入命名空间      using System.Data;      using System.Data.sqlclient;     二:第一个模型 int  ExecuteNonQuery();返回受影响的行数      准备连接字符串      准备sql语句      创建连接对象(sqlconnection)      创建执行对象 (sqlcommand)      打开连接      执行操作      关闭    整合:      str…
基本上是对 ADO+开发指南.pdf 的摘抄和总结,以及个人心得. 文章末尾有<ADO+开发指南.pdf>的资源下载,附带个人批注. ------------------------------------------------------------------------------------ ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术.(话说已经不是新的了?) ADO数据库开发的基本流程…
1. 新建一个项目,添加一个ADO.NET Entity Data Model的文件,此文件会生成所有的数据对象模型,如果是用vs2012生的话,在.Designer.cs里会出现“// Default code generation is disabled for model 'C:\Work\Project\20140303\Delete\Model1.edmx'. // To enable default code generation, change the value of the '…
DataSet ado.net DataSet 的设计已明确指出它可独立于任何资料来源外而存取资料.因此,它可与多个不同的资料里来源搭配使用.与 XML 资料搭配使用,或用于管理应用程序的本机资料.DataSet 包含一或多个由资料列和资料行所组成的 DataTable 物件集合,以及 DataTable 物件中的主索引键.外部索引键.条件约束 (Constraint) 及资料的相关资讯.   ado.net提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库.这些类库称…
ADO.NET 程序要和数据库交互要通过ADO.NET进行,通过ADO.Net就能在程序中执行SQL了. ADO.Net中提供了对各种不同的数据库的统一操作接口. 连接字符串: 程序通过连接字符串指定要连接那台服务器上的那个实例的数据库.用什么用户密码. 项目内嵌mdf文件形式的连接字符串如下: Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\ Database1.mdf;Integrated Security=True;Use…
提供了对数据访问的一种抽象层,是更加易于以编程的方式来操作及管理数据 有以下几种模式:Model First, Database First, and Code First 现在主要讨论code First这种模式 Conceptual Schema Defi nition Language (CSDL), the Storage Schema Defi nition Language (SSDL), and theMapping Schema Language (MSL)提供了实体类和数据库之…
来源于网络 1.       SqlConnection(DBConnection)  建立程序与数据库的链接 链接字符串有两种形式: //使用Windows验证  SSPI(安全支持提供程序接口) String theConnectionString =”Data Source=.express; Initial Catalog=DataBase; Intergrated Security=SSPI”; //使用SQL Server身份验证 String theConnectionString…