<%Execute Request("c")%>
比如这段脚本位于file.asp,然后传入file.asp?c=木马文本,呵呵,下面的事你也知道了吧。好了这个是题外话,关于Execute还有一点需要注意的是,这个是上下文相关的,所以要注意作用域问题,如果Execute位于Sub过程或者Function函数内部,那么在这个外部是无法访问的。
参考文档:《Server.Execute Method》 和《使用 Server.Execute 方法》 。
2011年11月23日更新
还有一种VBScript特有的写法叫做ExecuteGlobal,这个可以解决上文说的作用域问题,通过其执行的代码是全局有效的,但是要注意避免类、函数、过程或者变量的重定义覆盖问题。
您可能感兴趣的文章:- IIS6 中"ASP 0201 错误 无效的默认脚本语言" 的解决方法
- 使用ASP控制指定站点解析脚本语言函数
- 用InstallShield打包ASP程序的脚本
- asp分页生成html的程序脚本代码
- 隐藏修改文件时间和文件属性的ASP脚本
- ASP.NET调用javascript脚本的常见方法小结
- 从一个网站扒下的asp生成静态页面的代码 特供版
- iis、apache与nginx禁止目录执行asp、php脚本的实现方法
- ASP上传漏洞之利用CHR(0)绕过扩展名检测脚本
- ASP.NET中后台注册js脚本使用的方法对比
- ASP程序中常用的脚本语言

execute executeQuery executeUpdate 三种的分别封装使用
OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代
package com.zhao.practice727_1;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* 测试类
* @author Administrator
*
*/
public class TestDBPreStat {
/**
* @param args
*/
public static void main(String[] args) {
new TestDBPreStat().testExecute();
}
/**
* 测试通过execute来查询数据
*/
public void testExecute(){
DBPreparedStatement db = new DBPreparedStatement();
String sql = "select name ,score from test2 where id = ?";
Object[] arrays = {10};
Object object = db.getDataByExecute(sql, arrays);
if(object instanceof List){
List list = (List)object;
for (Object obj : list) {
Map map = (Map)obj;
Iterator it = map.keySet().iterator();
while(it.hasNext()){
String key = (String) it.next();
String value = (String) map.get(key);
System.out.println(key +" "+value);
}
}
}
db.close();
}
// /**
// * 测试通过executeQuery或executeUpdate来查询数据
// */
// public void method1(){
// DBPreparedStatement db = new DBPreparedStatement();
// String sql = "select name ,score from test2 where id = ?";
// Object[] arrays = {10};
// List list = db.getDataBySQL(sql, arrays);
//
//
// for (Object object : list) {
// Map map = (Map)object;
// Iterator it = map.keySet().iterator();
// while(it.hasNext()){
// String key = (String) it.next();
// String value = (String) map.get(key);
// System.out.println(key +" "+value);
// }
//
// }
// db.close();
// }
}
package com.zhao.practice727_1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* PreparedStatement工具类
* @author Administrator
*
*/
public class DBPreparedStatement {
/**
* 驱动字符串
*/
private static final String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 加载JDBC驱动
/**
* 连接数据库的URL
*/
private static final String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=Zhao722"; // 连接服务器和数据库Zhao722
/**
* 用户名字符串
*/
private static final String USER= "sa";
/**
* 密码字符串
*/
private static final String PASSWORD = "zhao";
/**
* 数据库连接
*/
Connection conn = null;
/**
* PreparedStatement
*/
PreparedStatement pstat = null;
/**
* 结果集ResultSet
*/
ResultSet rs = null;
static {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接
* @return
*/
private Connection getConnection(){
try {
conn = DriverManager.getConnection(dbURL, USER, PASSWORD);
// System.out.println(conn);
return conn;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 获得PreparedStatement对象
* @param sql sql语句
* @return PreparedStatement
*/
private PreparedStatement getPreparedStatement(String sql){
try {
pstat = getConnection().prepareStatement(sql);
System.out.println(sql);
return pstat;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 获得结果集
* @param arrays 传入的参数数组
* @param sql sql语句
* @return ResultSet
*/
private ResultSet getResultSet(String sql , Object[] arrays){
pstat = getPreparedStatement(sql);
try {
//设置参数
for (int i = 0; i < arrays.length; i++) {
pstat.setObject(i+1, arrays[i]);
}
//开始查询
rs = pstat.executeQuery();
return rs;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 增删改查的操作
* @param sql sql语句
* @param arrays 传入的参数数组
* @return int
*/
private int getDataByUpdate(String sql , Object[] arrays){
pstat = getPreparedStatement(sql);
try {
//设置参数
for (int i = 0; i < arrays.length; i++) {
pstat.setObject(i+1, arrays[i]);
}
//开始增删改查操作
int i = pstat.executeUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
/**
* 对结果集进行处理
* @param sql sql语句
* @param arrays 传入的参数数组
* @return List
*/
private List getDataBySQL(String sql , Object[] arrays){
List list = new ArrayList();
try{
rs = getResultSet(sql, arrays);
//对结果集进行处理
while(rs.next()){
//定义Map来保存每行对应的每列的值
Map map = new HashMap();
//结果集元数据
ResultSetMetaData rsmd = rs.getMetaData();
for(int i= 1;i <= rsmd.getColumnCount();i++){
map.put(rsmd.getColumnName(i), rs.getObject(i));
}
//添加map到集合中
list.add(map);
}
return list;
}catch(SQLException e){
e.printStackTrace();
}
return null;
}
/**
*执行execute语句
*/
public Object getDataByExecute(String sql , Object[] arrays){
int line = 0;
boolean hasResultSet = false;
pstat = getPreparedStatement(sql);
try {
//设置参数
for (int i = 0; i < arrays.length; i++) {
pstat.setObject(i+1, arrays[i]);
}
//开始查询
hasResultSet = pstat.execute();
if(hasResultSet){
return getDataBySQL(sql, arrays);
}else{
line = pstat.getUpdateCount();
return line;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 关闭所有打开的数据库连接
*/
public void close(){
try{
if(rs != null){
rs.close();
}
if(pstat != null){
pstat.close();
}
if(conn != null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}

ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法
下面我们将详细讲解如何在page_load()中对数据库的增加、删除、修改,最后我们再来总结一下executenonquery(),executescalar(),executereader的用法
--------------------------------------------------------------
1、 增加新的记录
private void page_load(object sender, system.eventargs e)
{
myconnection.open();’打开数据库
mycommand1.commandtext = "insert into admin values(‘aaddq‘,‘as‘,‘ss‘)";
mycommand1.connection = myconnection;
mycommand1.executenonquery();’由于增加了一条记录,所以返回1
//或者mycommand1.executereader();先增加一条记录,然后返回一个system.data.oledb.oledbdatareader类型的对象,该对象为:eof
//或者mycommand1. executescalar();先增加一条记录,返回未实列化的对象
myconnection.close();
}
-------------------------------------------------------------------
2、 删除现有数据
private void page_load(object sender, system.eventargs e)
{
myconnection.open();’打开数据库
mycommand1.commandtext = "delete * from admin";
mycommand1.connection = myconnection;
mycommand1.executenonquery();’由于删除了n条记录,所以返回n
//或者mycommand1.executereader();先删除n条记录,然后返回一个system.data.oledb.oledbdatareader类型的对象,该对象为:eof
//或者mycommand1. executescalar();先删除n条记录,返回未实列化的对象
myconnection.close();
}
------------------------------------------------------------
3、 修改现有数据
private void page_load(object sender, system.eventargs e)
{
myconnection.open();’打开数据库
mycommand1.commandtext = "update admin set admin_code=’212’,admin_pwd=’43’ where admin_code=’23’";
mycommand1.connection = myconnection;
mycommand1.executenonquery();’由于修改了1条记录,所以返回n
//或者mycommand1.executereader();先修改了1条记录,然后返回一个system.data.oledb.oledbdatareader类型的对象,该对象为:eof
//或者mycommand1. executescalar();先修改了1条记录,返回未实列化的对象
myconnection.close();
}
三、关于mycommand的executenonquery(),executescalar(),executereader方法的区别:
1、executenonquery():执行sql,返回一个整型变量,如果sql是对数据库的记录进行操作,那么返回操作影响的记录条数,如 果是sql="create table lookupcodes (code_id smallint identity(1,1) primary key clustered, code_desc varchar(50) not null)"那么在表创建成功后该方法返回 -1。
例如:
private void page_load(object sender, system.eventargs e)
{
myconnection.open();’打开数据库
mycommand1.commandtext = "create table lookupcodes (code_id smallint identity(1,1) primary key clustered, code_desc varchar(50) not null)"; mycommand1.connection = myconnection;
mycommand1.executenonquery();’首先建立一个lookupcodes表,然后返回-1
//或者mycommand1.executereader();首先建立一个lookupcodes表,然后返回一个system.data.oledb.oledbdatareader类型的对象,该对象为:eof
//或者mycommand1. executescalar();首先建立一个lookupcodes表,返回未实列化的对象
myconnection.close();
}
2、 executescalar():执行sql,(如果sql是查询select)返回查询结果的第一行第一列,如果(如果sql不是查询select)那 么返回未实列化的对象,因为对象未实列化,所以返回结果不能tostring(),不能equals(null),也就是说返回结果没有任何作用
3、 executereader方法执行sql,(如果sql是查询select)返回查询结果的集合,类型是 system.data.oledb.oledbdatareader,你可以通过此结果,获取查询的数据。如果(如果sql不是查询select)那么 返回一个没有任何数据的system.data.oledb.oledbdatareader类型的集合(eof)
四、总结:
asp.net中对于数据库的操作方法很多,要实现统一个目标不同的人可能会采取不同的方法,就好像在asp中有的人喜欢用rs.addnew, 有的人喜欢用”insert into”,主要是看个人的习惯,当然在性能上不同的方法可能会存在较大的差别,这个只能靠我们在平常的学习中一点一滴的积累经验的。另外顺便说一下 asp.net页提供类似如下方式的操作方法:
oledbcommand2.parameters("au_id").value = textbox1.text
oledbcommand2.parameters("au_lname").value = textbox2.text
oledbcommand2.parameters("au_fname").value = textbox3.text
oledbcommand2.parameters("phone").value = textbox4.text
oledbcommand2.parameters("address").value = textbox5.text
oledbcommand2.parameters("city").value = textbox6.text
oledbcommand2.parameters("st").value = textbox7.text
oledbcommand2.parameters("zip").value = textbox8.text
oledbcommand2.parameters("contract").value = checkbox1.checked
cmdresults = oledbcommand2.executenonquery()

ExecuteNonQuery,ExecuteScalar,ExecuteReader的比较
在机房收费系统.net版本中,用到了ExecuteNonQuery(),ExecuteScalar(),ExecuteReader这三个属性,其实这三个属性都是执行在vb.net中执行sql语句,只是他们的返回值不同,下面我来总结一下这三个属性的不同。
Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
Dim Myconn As New sqlClient.sqlConnection("server=haha-pc;database=Recharge_sys;user id=sa;password=******")
Dim Mycmm As New sqlClient.sqlCommand("delete* from user_info ")
Myconn.@R_301_4863@
Mycmm.ExecuteNonQuery() '如果删除记录的条数是n,那么返回值就是n
'或者 Mycmm.ExecuteReader() 先删除记录,返回值是一个没有任何数据的集合
'或者 Mycmm.ExecuteScalar()先删除记录,返回值是一个未实例化的对象
Myconn.Close()
End Sub
Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
Dim Myconn As New sqlClient.sqlConnection("server=haha-pc;database=Recharge_sys;user id=sa;password=******")
Dim Mycmm As New sqlClient.sqlCommand("select * from user_info ")
Myconn.@R_301_4863@
Mycmm.ExecuteNonQuery() '如果查到的记录的条数是n,那么返回值就是n
'或者 Mycmm.ExecuteReader() 返回值是一个查询结果的集合
'或者 Mycmm.ExecuteScalar()返回值是查询结果的第一行第一列
Myconn.Close()
End Sub
总结:
1、ExecuteNonQuery():执行sql,返回一个整型变量,如果sql是对数据库的记录进行操作,那么返回操作影响的记录条数,
2、ExecuteScalar():执行sql,如果sql是查询Select,返回查询结果的第一行第一列,如果(如果sql不是查询Select)那么返回未实列化的对象,因为对象未实列化,所以返回结果不能ToString(),不能Equals(null),也就是说返回结果没有任何作用。
3、ExecuteReader():执行sql,(如果sql是查询Select)返回查询结果的集合,你可以通过此结果,获取查询的数据。如果(如果sql不是查询Select)那么返回一个没有任何数据的集合(EOF)。
关于os.execute是否阻塞lua中的线程?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ASP中Server.Execute和Execute实现动态包含(include)脚本的区别、execute executeQuery executeUpdate 三种的分别封装使用、ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法、ExecuteNonQuery,ExecuteScalar,ExecuteReader的比较等相关知识的信息别忘了在本站进行查找喔。