黑马程序员--ADO.Net中的知识点和难点

  ------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

 1、 ADO.Net基础

程序要和数据库交互要通过ADO.Net进行,通过ADO.Net就能在程序中执行SQL了。

直接在项目中内嵌mdf文件的方式使用SQLServer数据库(基于服务的数据库)。mdf文件随着项目走,用起来方便,和在数据库服务器上创建数据没有什么区别,运行的时候会自动附加(Attach)。

双击mdf文件会在“服务器资源管理器”中打开,管理方式和在Mangement Studio没有什么本质区别,要拷贝mdf文件需要关闭所有指向mdf文件的连接。

 正式生产运行时附加到SQLServer上,修改连接字符串即可,除此之外没有什么区别,它在“数据库”节点上点右键“附加”;在数据库节点上找任务下的分离可以得到可以拷来拷去mdf文件。

用的时候要在控制台、WinForm项目中在Main函数最开始的位置加入备注中的代码。ASP.Net不需要。备注中的代码如下:

 string dataDir=AppDomain.CurrentDomain.BaseDirectory;

  if(dataDir.EndsWith(@"\bin\Debug\")||dataDir.EndsWith(@"\bin\Release\"))

  {

      dataDir=System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;

       AppDomain.CurrentDomain.SetData("DataDirectory",dataDir);

   }

2、连接SQLServer

连接字符串:程序通过连接字符串指定要连哪台服务器上的、哪个实例的哪个数据、用什么用户名密码等。

项目内嵌mdf文件形式的连接字符串"Data Source=.\SQLEXERPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User  Instance=True".  ".\SQLEXERPRESS"表示本机上的SQLEXERPRESS实例",如果数据库实例名不是SQLEXERPRESS,则需要修改。“Database1.mdf”为mdf的文件名。

ADO.Net中通过sqlConnection类创建到SQLServer的连接,sqlConnection代表一个数据库连接,ADO.Net中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理执行备注中的代码如果成功了就ok。

3、执行简单的Insert语句

sqlCommand表示向服务器提交的一个命令(SQL语句等)

CommandText属性为要执行的SQL语句,ExecuteNonQuery方法执行一个非查询语句(Update、Insert、Delete等)

 using(SqlCommand  cmd=conn.CreateCommand())

{

   cmd.CommandText="insert  into T_Users(UserName,Password) values('admin','888888');

   cmd.ExecuteNonQuery();

}

ExecuteNonQuery返回值是执行的影响行数

易错点:string username='test';

            .......

            cmd.CommandText="insert into T_Users(UserName,Password) values(username,'888888');

4、执行查询

 执行有多行结果集的用ExeccuteReader

SqlDataReader  reader=cmd.ExecuteReader();

.................

while(reader.Read())

{

   Console.WriteLine(reader.GetString(1));

}

reader的GetString、GetInt32等方法只接受整数参数, 也就是序号,用GetOrdinal方法根据列名动态得到序号。

5、ExecuteScalar

sqlCommand的ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中在第一行的第一列,因为不能确定返回值的类型,所以返回值是object类型。

cmd.CommandText="select count(*) from T_Users";  int i=Convert.ToInt32(cmd.ExecuteScalar());

cmd.CommandText="select getdate()";DateTime dt=Convert.ToDateTime(cmd.ExecuteScalar());

得到自动增长字段的主键值,在values关键词前加上output inserted.id,其中id为主键字段名。执行结果就是插入的主键值,用ExecuteScalar执行最方便。

cmd.CommandText="insert into T_Users(UserName,Password)output inserted.id values('admin','888888');

int i=Convert.ToInt32(cmd.ExecuteScalar());

6、SQL注入漏洞攻击

构造恶意的Password:'or'1'='1

if(reader.Read())

   Console.WriteLine("登录成功");

else

   Console.WriteLine("登录失败");

防范注入漏洞攻击的方法:不使用SQL语句拼接,通过参数赋值

总结:后面的练习题基本就是用的是前面的知识点,重点掌握前面的知识点。

通过今天的视频学习,感觉后面的习题有点小难度,要解决它,多看多练。

  ------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

转载于:https://www.cnblogs.com/junhan/archive/2012/11/22/2782495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode——15.3Sum

#include<stdio.h> #include<stdlib.h>int** threeSum(int* nums, int numsSize, int* returnSize) {if (numsSize<3)return NULL;int comNum numsSize*(numsSize - 1)*(numsSize - 2) / 6;int** ret (int**)malloc(sizeof(int*)*comNum);//先创建“用来存储一…

[New Portal]Windows Azure Virtual Machine (17) Virtual Machine成本分析

《Windows Azure Platform 系列文章目录》 在Windows Azure VM里&#xff0c;计费模式是和以下几个因素有关&#xff1a; 成本1: VM Type and VM Size 具体的计费模式请参考这里 http://www.windowsazure.com/en-us/pricing/details/virtual-machines/#service-windows 我们知道…

Servlet与JSP间的传值问题

Servlet与JSP 之间的传值有两种情况&#xff1a;JSP -> Servlet&#xff0c; Servlet -> JSP。通过对象 request和 session (不考虑 application)完成传值。一、JSP -> servletJSP页面有3种方法向 servlet传值&#xff1a; form表单、URL<!-- JSP page --> ...…

java 访问修饰符

java 访问修饰符 类、方法、成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract&#xff08;抽象的&#xff09; √ √ &#xff0d; &#xff0d; &#xff0d; static &#xff08;静态的&#xff09; &#xff0d; √ …

嵌入式Linux系统的构成和启动总结

以下内容源于网络资源的整理&#xff0c;如有侵权请告知删除。 一、嵌入式Linux系统典型结构 Flash划分成以下4个区&#xff1a; &#xff08;1&#xff09;Bootloader区。存放的是Bootloader&#xff0c;它负责嵌入式系统最初的硬件初始化、驱动和内核加载。 &#xff08;2&…

防止arp***方法

防止arp***&#xff1a;Win7下搞定ip与mac地址绑定对于玩系统的老手都知道&#xff0c;防止arp***实际上不需要这个防火墙那个防火墙&#xff0c;一句命令将ip与mac地址绑定即可。例如&#xff1a;arp -s 192.168.1.1 00-19-e0-c0-6f-0a不过这句话在Windows7显得这么无助&#…

根文件系统的简介

以下内容源于网络资源的整理&#xff0c;如有侵权请告知删除。 一、文件系统 文件系统是对一个存储设备上的数据进行组织的机制。这种机制有利于用户和操作系统的交互。 尽管内核是 Linux 的核心&#xff0c;但文件却是用户与操作系统交互所采用的主要工具。对Linux来说尤其如…

使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法

Student类有集合属性Courses&#xff0c;如何把Student连同集合属性Courses传递给控制器方法&#xff1f; public class Student { public string StudentName { get; set; } public IList<Course> Courses { get; set; } } public class Course…

函数指针的使用

在学习群里看到的一个程序&#xff0c;基本说明了函数指针的用法。就摘录如下&#xff1a;

CreateThread和_beginthread的区别

1.程序&#xff1a;程序构成&#xff1a;(1)源代码(2)可执行的二进制代码程序是指令和数据的有序集合&#xff0c;其本身没有任何运行的含义&#xff0c;是一个静态的概念。由操作系统加载其可执行的二进制代码&#xff0c;分配相应的数据结构&#xff1a;进程控制块PCB(Proces…

重新注册dll

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %i它的作用是用循环语句并且用regsvr32命令对Windows\System32文件夹中的所有DLL文件都进行一次注册&#xff0c;以解决诸如IE无法打开二级链接这样的问题。转载于:https://blog.51cto.com/gzkhrh/1375543

hdu max sum

这题跟求最大连续数列一样的&#xff0c;稍微不同的是只要把值改为标号就可以了。 #include<stdio.h>#include<string.h>#include<stdlib.h>#include<debug.h>#defineX 100001intA[X];intmain( ){intN,M,a,b,c,d,e,f,x,i,y,sum,len0; Debug(); scanf(&…

冒泡排序 Bubble Sort

冒泡排序 冒泡排序的过程很简单&#xff0c;就是不断比较相邻两个元素的大小关系&#xff0c;若逆序则交换之&#xff0c;这样通过一轮的比较&#xff0c;关键字最大的记录就沉底了。 一般地说&#xff0c;第i趟冒泡排序是从第一个元素起到第n-i1个元素依次比较相邻两个记录的关…

mysql query cache

1.概述&#xff1a;MySQL Query Cache 缓存客户端提交给MySQL的SELECT&#xff08;注意只是select&#xff09;语句以及该语句的结果集。注意&#xff1a;query_cache是mysql server端的查询缓存&#xff0c;在存储引擎之上。存储引擎层还有存储引擎的缓存&#xff0c;表也有表…

从源码到可执行程序的步骤

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理&#xff0c;以及网页http://mp.weixin.qq.com/s/_iVrUtA-jgE8XAR-vKYcww的学习整理。如有侵权&#xff0c;请告知删除。 一、总结 从源码到可执行程序的步骤&#xff1a;预编译、编译、汇编、链接。前三个宏观上为编译&…

最近在ST公司的STxp70的dsp平台上开发音频codec模块.

公司最近和ST公司有个DAB的项目, 需要将AACplus,BSAC,MPEG-lay2以及lay3的算法在该dsp平台上 进行优化.这个dsp平台比较的奇怪和TI的以及arm的core不太一样,它有一个基本core以及基本指令集,它的 扩展的一些数学指令集是通过增加一些extension库来实现的.不过优化后的效率还是比…

Eclipse中部分快捷键

这个链接文章介绍的比较全面&#xff1a;http://blog.csdn.net/hevicky/article/details/7239977 我把其中认为对自己有用的几个快捷键整理出来&#xff0c;以便熟悉、使用。 MyEclipse 快捷键1(CTRL) ------------------------------------- Ctrl1 快速修复&#xff08;例如导…

win设置壁纸

默认壁纸图片位置&#xff1a; C:\Windows\Web\Wallpaper\Scenes 你可以自己建文件夹&#xff0c;放自己喜欢的桌面壁纸。 设置壁纸&#xff1a; 桌面右键 -> 个性化 然后点击 “桌面背景” -> 可以点击标题选择其下面的所有图片&#xff0c;也可以按 ctrl 选择你想要的…

Makefile中三个自动变量:$^,$@,$<

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 什么叫自动变量呢&#xff1f;就是这种变量会把模式中所定义的一系列的文件自动地挨个取出&#xff0c;直至所有的符合模式的文件都取完。这种自动化变量只应出现在规则的命令中。 以一个例子说明。 OBJS…

win8 软件字体乱码

安装了Win8企业评估版&#xff0c;安装一些软件中文字体显示出粗。进入控制面板&#xff0c;语言->单击左下角的位置链接->弹出的区域当前位置下拉框选择中文即可&#xff0c;最后重启即可。 winq -> search language setup->add language-> location (left bot…