三种操作数据库的途径

   操作数据库可以分这么三种,第一种,直接写硬SQL代码,不要参数,第二种,直接写硬代码,要参数,第三种,调用存储过程。

  我们以一个登录模块为例,现在页面有两文本框,一按纽,实现验证用户名密码的功能。第一种方法主要代码如下:

  SqlConnection conn =new SqlConnection

  ("server=;database=news2;uid=sa;pwd=");

  conn.Open();

  SqlCommand cmd=new SqlCommand();

  cmd.CommandText="select count(*)from users

  where name='"+this.TextBox1.Text+"'and pwd='"+this.TextBox2.Text+"'";cmd.Connection=conn;int i=(int)cmd.ExecuteScalar();Response.Write(i.ToString());if(i==1){Response.Redirect("add.aspx");}else{Label1.Text="error!"}

  第二种途径

  SqlConnection conn =new SqlConnection("server=;database=news;uid=sa;pwd=");

  conn.Open();//打开数据库

  SqlCommand cmd=new SqlCommand();//建立命令对象

  cmd.CommandText="select count(*)from users where and ";

  cmd.Connection=conn;//设置连接

  SqlParameter p= new SqlParameter("@name",SqlDbType.Char,10);

  //定义参数

  p.Value=this.TextBox1.Text;

  cmd.Parameters.Add(p);//添加参数到集合

  p= new SqlParameter("@pwd",SqlDbType.Char,10);

  p.Value=this.TextBox2.Text;

  cmd.Parameters.Add(p);

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

  if(i==1)

  {

  Response.Redirect("add.aspx");}

  else

  {

  Label1.Text="error!"

  }

  第三种途径

  SqlConnection conn =new SqlConnection("server=;database=news;uid=sa;pwd=");

  conn.Open();//打开数据库

  SqlCommand cmd=new SqlCommand();//建立命令对象

  cmd.CommandText=" checkLogin";//设置命令文本

  cmd.CommandType=CommandType.StoredProcedure;

  //设置文本类型

  cmd.Connection=conn;//设置连接

  SqlParameter p= new SqlParameter("@name",SqlDbType.Char,10);

  //定义参数

  p.Value=this.TextBox1.Text;

  cmd.Parameters.Add(p);//添加参数到集合

  p= new SqlParameter("@pwd",SqlDbType.Char,10);

  p.Value=this.TextBox2.Text;

  cmd.Parameters.Add(p);

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

  if(i==1)

  {

  Response.Redirect("add.aspx");}

  else

  {

  Label1.Text="error!"

  }

  接下来对这三种方法做分析:

  第一方法不能防范SQL注入式方式攻击,比如在第一个文本框输入asd'or's'='s 第二个同样输入asd'or's'='s ,可以发现成功通过验证。

  第二种直接写硬SQL代码,事实上不是每个人都能写出优良的SQL代码来,可以由数据库管理员或工程师来写,这样,一方面减轻程序员的工作,另一方面也可以使数据库与应用程序保持独立,这样有利于系统的移植与维护。

  当然第三种是推荐使用的,好处呢!就是前面所写的。

时间: 2024-08-03 06:56:45

三种操作数据库的途径的相关文章

java中三种主流数据库数据库(sqlserver,db2,oracle)的jdbc连接总结

原文http://www.cnblogs.com/PatrickChen/archive/2008/12/08/1350395.html 其实java开发中连接数据库的主要问题不是如何写代码,而是找驱动包.因为jdbc的驱动包太多,并且名目繁多,有的还需要安装客户端才能运行. 项目实践中,总结出三种主流数据库中,Java的驱动和连接字符串,均无需安装客户端: 一.             Sqlserver: 驱动包:sqljdbc.jar 实例: String _driverName = "c

牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作_jquery

只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作.这就需要我们知道如何将jQuery对象和DOM的相互转换的方法. 1.jQuery对象就是通过jQuery包装DOM对象后产生的对象. 2.jQuery对象和DOM对象的相互转换. 良好的书写风格: 复制代码 代码如下: var $input=$("input") jQuery获取的对象在变量前面加上$. &l

锋利的jQuery--jQuery与DOM对象的互相转换,DOM的三种操作(读书笔记一)

1.jQuery对象就是通过jQuery包装DOM对象后产生的对象.   2.jQuery对象和DOM对象的相互转换.   良好的书写风格: var $input=$("input") jQuery获取的对象在变量前面加上$.   <1>jQUery对象转成DOM对象,两种方法:[index]和get(index) a:var $cr=$("#cr")    //jQuery对象     var cr=$cr[0]    //DOM对象 b:var $c

.net MVC 连接数据本地数据库三种方法总结_实用技巧

.net MVC 连接数据本地数据库三种方法 <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" />

C#数据库操作的三种经典用法

由于最近和数据库打交道,需要用C#和SQL Server 2005进行操作,就把近段时间内的最常用的操作做个总结.本人也是第一次用C#操作数据库,所以这三种典型用法对初学者还是挺有帮助的. 以下是我在visual studio 2005上写的一个类(连的是SQL Server 2005),已经过测试通过.里面有3个方法比较典型,源码如下: using System; using System.Collections.Generic; using System.Text; using System

三种部署SSD的主要途径

本文介绍了三种部署SSD的主要途径:在阵列内部,在服务器内以及使用SSD设备.各种方式各有优劣,这其中还包括延迟问题和性能水平问题. 很少有一种新技术可以同时在提升性能的同时降低成本.不过,SSD这种很有意思的技术却达到了这种目标.主要的存储供应商中的大部分都开始提供全系列的SSD产品. 固态存储驱动器可以以这样三种形式进行部署:基于阵列的SSD一般考虑部署在存储区域网络中:基于服务器的SSD一般部署在存储区域网络的主机前端:而SSD设备可以部署在两者中任意位置.选择最佳部署方案的同时也决定了这

对注册表进行编辑的三种途径_注册表

了解了关于注册表的基本内容之后,我们就可以正式进入我们所要讨论的话题了:对注册表进行编辑修改!一般来说,要想对注册表进行增.删.改,可以有以下三种途径: 第一种途径:直接修改(最不安全,但最直接最有效) 就是通过注册表编辑器直接的来修改注册表的键值数据项,这样做会避免在注册表中留下垃圾(虽然都很小,但越来越多会拖慢系统速度),但是要求用户有一定的注册表知识,熟悉注册表内部结构而且一定要小心谨慎. 注册表编辑器是一个可以让你改变系统注册设定的高级工具WIN98注册表编辑器的常用操作注册表编辑器是一

三种东西永远不要放到数据库里

改进你的系统的最好的方法是先避免做"蠢事". 我并不是说你或你开发的东西"蠢",只是有些决定很容易被人们忽略掉其暗含的牵连, 认识不到这样做对系统维护尤其是系统升级带来多大的麻烦. 作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好的结果的. 图片,文件,二进制数据 既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的! 别的先不提,在很多数据库语言里,处理大字段都不是很容易. 把文件存放在数据库里

用ORACLE8i修复数据库坏块的三种方法

oracle|数据|数据库 在进行SUN CLUSTER双机切换.意外断电或其它情况下,有时会发生共享盘MOUNT不上的情况,需要使用FSCK对共享盘进行修复.修复完成后,在数据库启动过程中,却又出现"数据块损坏,无法启动数据库"的现象,此时,可以根据不同的数据块损坏类型,检测并修复错误.在此介绍三种使用Oracle8i修复损坏数据块的方法. 一.数据块损坏,错误代码为ORA-01578 ORA-1115 I/O ERROR READING BLOCK 通常后跟ORA-737X错误与操