asp.net Web页执行SQL程序代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ManageSQL.aspx.cs" Inherits="manage_ManageSQL" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Web页执行SQL</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
body{
font-size:12px;
color:#333;
}
.navPath
{
 background:#A4B6D7;
 padding:4px;
}
</style>
</head>
<body>
<form id="form" runat="server">
<div class="navPath">您的当前位置:系统管理&raquo;&raquo;执行SQL</div>
<div style="vertical-align:top; margin-top:10px; margin-left:10px;">
    <asp:TextBox ID="txtSQL" runat="server" TextMode="MultiLine" Height="80px" Width="90%" BorderStyle="Inset" OnTextChanged="txtSQL_TextChanged"></asp:TextBox>
    <br />
    <asp:Button ID="btnExeSql" runat="server" CssClass="button" Text="执行SQL" OnClick="btnExeSql_Click" />
    <asp:Label ID="lblExeNum" runat="server"></asp:Label>
<a href="javascript:void(0)" onclick="Open(document.getElementById('table').innerHTML)">查看表结构</a>
    <div id="table" style="display:none;">
    <asp:GridView ID="grdTable" runat="server" Font-Size="12px" Width="100%">
        <RowStyle HorizontalAlign="Center" CssClass="tItem" />
        <PagerStyle CssClass="tPage" />
        <HeaderStyle CssClass="tHeader" />
        <AlternatingRowStyle CssClass="tAlter" />
        <SelectedRowStyle BackColor="#F1F5FB" />
    </asp:GridView>
    </div>
    <div class="tipInfo" style="width:90%; display:none;" id="tip">此功能建议仅供系统管理员在十分熟悉SQL语句的情况下操作,否则可能造成数据库数据丢失。</div>
    <hr style="border-collapse:collapse; width:90%; text-align:left;" />
</div>
    <asp:GridView ID="grdSQL" runat="server" Width="100%" Visible="False">
        <RowStyle HorizontalAlign="Center" CssClass="tItem" />
        <PagerStyle CssClass="tPage" />
        <HeaderStyle CssClass="tHeader" />
        <AlternatingRowStyle CssClass="tAlter" />
        <SelectedRowStyle BackColor="#F1F5FB" />
    </asp:GridView>
<script type="text/javascript">
var Osel=document.form;
Osel.onsubmit=function()
{
    if(Osel.<%=txtSQL.ClientID %>.value=="")
    {
        alert("输入不可为空");
        Osel.<%=txtSQL.ClientID %>.focus();
        return false;
    }
    else if(Osel.<%=txtSQL.ClientID %>.value.indexOf("update")!=-1 || Osel.<%=txtSQL.ClientID %>.value.indexOf("delete")!=-1 || Osel.<%=txtSQL.ClientID %>.value.indexOf("truncate")!=-1)
    {
        if(confirm("即将执行的操作带有一定的风险,是否继续?"))
            return true;
        else
            return false;
    }
}

function Open(value)
{
  var TestWin=open('','','toolbar=no, scrollbars=yes, menubar=no, location=no, resizable=no');
  TestWin.document.title="数据库表结构";
  TestWin.document.write(value);
}

function clear()
{
    document.getElementById("tip").style.display="none"
}
window.setInterval("clear()",3000);

</script>
</form>
</body>
</html>

网页执行SQL语句程序manageSql.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

/// <summary>
/// Author:walkingp
/// Web Site:http://www.51obj.cn/
/// E-mail:walkingp@126.com
/// </summary>
public partial class manage_ManageSQL : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GetTableName();
        }
    }

    #region SqlConnection
    /// <summary>
    /// 初始化SqlConnection
    /// </summary>
    private static SqlConnection connection;
    public static SqlConnection Connection
    {
        get
        {
            string connectionString = "server=.;DataBase=model;uid=sa;pwd=;";
            if (connection == null)
            {
                connection = new SqlConnection(connectionString);
                connection.Open();
            }
            else if (connection.State == System.Data.ConnectionState.Closed)
            {
                connection.Open();
            }
            else if (connection.State == System.Data.ConnectionState.Broken)
            {
                connection.Close();
                connection.Open();
            }
            return connection;
        }
    }

    /// <summary>
    /// 执行Sql
    /// </summary>
    /// <param name="sql">Sql</param>
    /// <returns>影响记录条数</returns>
    public static int ExecuteCommand(string safeSql)
    {
        SqlCommand cmd = new SqlCommand(safeSql, Connection);
        int result = cmd.ExecuteNonQuery();
        return result;
    }
    /// <summary>
    /// 执行Sql(overload)
    /// </summary>
    /// <param name="sql">Sql</param>
    /// <param name="values">SqlParameter</param>
    /// <returns>影响记录条数</returns>
    public static int ExecuteCommand(string sql, params SqlParameter[] values)
    {
        SqlCommand cmd = new SqlCommand(sql, Connection);
        cmd.Parameters.AddRange(values);
        return cmd.ExecuteNonQuery();
    }

    /// <summary>
    /// 获取DataTable
    /// </summary>
    /// <param name="safeSql">Sql</param>
    /// <returns>DataTable</returns>
    public static DataTable GetDataSet(string safeSql)
    {
        DataSet ds = new DataSet();
        SqlCommand cmd = new SqlCommand(safeSql, Connection);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
        return ds.Tables[0];
    }
    #endregion

    /// <summary>
    /// 获取数据表结构
    /// </summary>
    protected void GetTableName()
    {
        DataTable dt = Connection.GetSchema("Tables", null);
        Connection.Close();
        grdTable.DataSource = dt;
        grdTable.DataBind();
    }

    /// <summary>
    /// 执行操作
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnExeSql_Click(object sender, EventArgs e)
    {
        string sql = txtSQL.Text.Trim().ToLower();
        int intExeNum;

        try
        {
            if (sql.Substring(0, 6).IndexOf("select") != -1)
            {
                DataTable dt = GetDataSet(sql);
                grdSQL.DataSource = dt;
                grdSQL.DataBind();
                lblExeNum.Text = "返回记录条数:<strong>" + dt.Rows.Count + "</strong>";
                grdSQL.Visible = true;
            }
            else if (sql.Substring(0, 6).IndexOf("delete") != -1 || sql.Substring(0, 6).IndexOf("update") != -1 || sql.Substring(0, 8).IndexOf("truncate") != -1)
            {
                intExeNum = ExecuteCommand(sql);
                lblExeNum.Text = "影响行数:<strong>" + intExeNum + "</strong>";
                grdSQL.Visible = false;
            }
        }
        catch (Exception ex)
        {
            ClientScript.RegisterStartupScript(typeof(string), "", "document.write("<h4 style='font-size:14px;color:#c00;padding-left:20px;'>抱歉,系统发生了错误……错误信息:" + ex.Message.Replace(""", "'") + "</h4>")", true);
        }
    }

    /// <summary>
    /// 执行按钮可用
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void txtSQL_TextChanged(object sender, EventArgs e)
    {
        btnExeSql.Enabled = true;
    }
}

 

时间: 2024-10-26 14:58:35

asp.net Web页执行SQL程序代码的相关文章

让ASP实现可以在线执行SQL语句

sql|语句|在线|执行 基本上的CMS都具备在线执行SQL语句的功能,能让熟悉SQL语言的管理更加自由.下面这段代码可以让ASP实现可以在线执行SQL语句功能.结合你的ASP程序可以达到很好效果,不过如果没有好使用对数据库来说可是一场灾难.程序代码: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><%Option Explicit%><%'// DatebaseDim ConnStr,conn Conn

json-关于asp josn 接到参数 执行 sql语句 报错问题

问题描述 关于asp josn 接到参数 执行 sql语句 报错问题 <%Dim memberSet member = jsObject() dim dbconnectionuplistDBPathSQLSortLboundUboundDim id=request(""jsoncallback"")set dbconnection=Server.CreateObject(""ADODB.Connection"") DBP

Windows编程:启动可执行(exe)程序 代码(C++)

通过输入程序位置启动可执行(exe)程序, 使用windows的CreateProcess()函数, 即可. 示例是调用预先生产的可执行(exe)程序. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <windows.h> using namespace std; bool startProcess (const std

jsp执行sql语句代码

jsp执行sql语句代码  function executesql($operation,$sql)  {         global $db;   if($operation == 'file')   {          require_once PHPCMS_ROOT.'include/upload.class.php';    $savepath = 'data/bakup/';    $upload = new upload('uploadfile',$savepath,'','sq

ASP.NET Web页生命周期和执行的方法介绍_实用技巧

以上所列的阶段中有些在页面级是不可见的,并且仅对服务器控件的编写者和要创建从 Page 导出的类的开发人员有意义.Init.Load.PreRender.Unload,再加上由嵌入式控件定义的所有回发事件,就构成了向外发送页面的各个阶段标记. 执行的各个阶段 页面生命周期中的第一个阶段是初始化.这个阶段的标志是 Init 事件.在成功创建页面的控件树后,将对应用程序触发此事件.换句话说,当 Init 事件发生时,.aspx 源文件中静态声明的所有控件都已实例化并采用各自的默认值.控件可以截取 I

Windows编程:终止可执行(exe)程序 代码(C++)

终止可执行(exe)程序, 首先遍历进程, 找到进程名称对于的进程ID号, 然后根据进程ID, 终止进程. 示例代码: 包括遍历进程代码, 和关闭代码. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <string> #include <map> #include <windows.h> #inc

在ASP.NET中用存储过程执行SQL语句

  存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程.by google 存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 create procedure procNewsSelectNewNews as begi

实现ASP.NET多文件上传程序代码_实用技巧

upload.aspx 复制代码 代码如下: <%@ Page language="c#" Codebehind="UpLoad.aspx.cs" AutoEventWireup="false" Inherits="WebPortal.Upload" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

在ASP.NET中用存储过程执行SQL语句_实用技巧

存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 复制代码 代码如下: create procedure procNewsSelectNewNews as begin select top 10 n.id,n.title,n.createTime,c.name from news n inner join category c on n.caId=c.id order by n.createT