只要程序设计中与数据库有关就免不了要和SQL语句打交道,这些简单的近似自然语言的句子提供了访问世界上任何一种标准数据库的统一接口,只要安装了数据库驱动我们就能通过编写SQL命令访问相应的数据库读取、添加或删除数据,而不管该类数据库的前端软件是否存在(对于本文中的例子就是即使不安装MS Access也可以访问*.mdb的数据库,但为了能更好的控制整体数据和监视程序对数据库的修改,还是建议读者在编写过程中安装一个Access)。要在ASP中使用SQL语句访问数据库首先要做的是建立通向数据库的连接,这部分的内容我要放在1.3节中再讲,下面我们先一起来学习使用SQL语句。
(1)select [数据内容] from [数据表名称] where [数据项1] like [值1] and/or [数据项2] like [值2] ... order by [数据项] asc/desc
select语句用来从数据库中筛选出所需要的数据,它是SQL语句中使用频率最高的语句,[数据内容]部分表示所要选取的表格中的数据项,使用*表示选取全部。[数据表名称]表示要从哪一个表格中选取,如果你没有接触过数据库可能很难了解什么是数据表格,没关系,我将在后面用到它的时候再说明。where表示选取的条件,使用like表示相等,也支持>=这样的判断符号,同时使用多个条件进行选取时中间要使用and进行连接。order by决定数据的排列顺序,asc表示按照[数据项]中的数据顺序排列,desc表示倒序,默认情况为顺序。select语句中除select和from之外其它均为可选项,如果都不填写表示选取该数据表中的全部数据。
(2)insert into [数据表名称] (数据项1,数据项2,...) values (值1,值2,...)
insert into语句用来添加新的数据到数据库中的指定表。通过(数据项1,数据项2,...) values (值1,值2,...)来为新添加的数据赋初值。
(3)update [数据表名称] set 数据项1=值1,数据项2=值2,... where [数据项1] like [值1] and/or [数据项2] like [值2] ...
该语句可以修改数据库中指定数据表内的指定数据,如果不是用where限定条件就表示修改该表内所有的数据条目。
(4)delete from [数据表名称] where [数据项1] like [值1] and/or [数据项2] like [值2] ...
显然,这一句用来删除指定的数据。
主要使用的SQL语句只有以上的4条,但是如果灵活的运用这四条语句可以实现相当多样的效果,当我们完成本文的例子论坛时你将会对此有更深刻的感受。接下来让我们了解一些关于ASP对象的知识。
_ConnectionPtr接口:
_ConnectionPtr智能指针Open方法的原型:
Open(_bstr_t ConnectionString,_bstr_t UserID,_bstr_t Password,long Options)
ConnectionString为连接字串,UserID是用户名,Password是登陆密码
Options是连接选项,可以是如下几个常量:
adModeUnknown 缺省,当前的许可权未设置
adModeRead 只读
adModeWrite 只写
adModeReadWrite 可以读写
adModeShareDenyRead 阻止其它Connection对象以读权限打开连接
adModeShareDenyWrite 阻止其它Connection对象以写权限打开连接
adModeShareExclusive 阻止其它Connection对象打开连接
adModeShareDenyNone 阻止其它程序或对象以任何权限建立连接
例如:
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyMusics.mdb",""
,"",adModeUnknown); //链接数据库
_ConnectionPtr智能指针Execute方法的原型:
_RecordsetPtr Connection15::Execute(_bstr_t CommandText,VARIANT* RecordsAffected,long Options)
其中CommandText是命令字串,通常是SQL命令,
参数RecordsAffected是操作完成后所影响的行数
参数Options表示CommandText中内容的类型,可以取下列值之一:
adCmdText 表明CommandText是文本命令
adCmdTable 表明CommandText是一个表名
adCmdProc 表明CommandText是一个存储过程
adCmdUnknown 未知
Execute执行完后返回一个指向记录集的指针。
例如:
strSql.Format("DELETE FROM MyMusics WHERE 路径='%s'",string);
_variant_t temp;
m_App->m_pConnection->Execute(strSql.AllocSysString(),&temp,adCmdText);