asp.net 网络信息保存与读取

自定义网页数据接口,连接本地数据库,实现网络数据的自助保存与读取。

http://118.25.40.47/WebInfo.aspx

接口使用说明:


添加信息:http://118.25.40.47/WebInfo.aspx?TAB=测试表&KEY=TAG4&VALUE=添加log信息

修改信息:http://118.25.40.47/WebInfo.aspx?TAB=测试表&KEY=TAG4&VALUE_M=修改log信息

删除信息:http://118.25.40.47/WebInfo.aspx?TAB=测试表&KEY_D=TAG4

查询所有信息:http://118.25.40.47/WebInfo.aspx?TAB=测试表

查询指定信息:http://118.25.40.47/WebInfo.aspx?TAB=测试表&KEY=TAG1

接口实现源码:

WebInfo.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplicationTest
{
    /// <summary>
    /// 在数据库中记录和查询日志信息
    /// 
    /// 添加信息:http://localhost:5517/WebInfo.aspx?TAB=测试表&KEY=TAG4&VALUE=添加log信息
    /// 修改信息:http://localhost:5517/WebInfo.aspx?TAB=测试表&KEY=TAG4&VALUE_M=修改log信息
    /// 删除信息:http://localhost:5517/WebInfo.aspx?TAB=测试表&KEY_D=TAG4
    /// 查询所有信息: http://localhost:5517/WebInfo.aspx?TAB=测试表
    /// 查询指定信息: http://localhost:5517/WebInfo.aspx?TAB=测试表&KEY=TAG1
    /// </summary>
    public partial class WebInfo : System.Web.UI.Page
    {
        String TAB = "default";     // 表名称
        String KEY = "";            // 数据标签
        String KEY_D = "";          // 删除数据标签行
        String VALUE = "";          // 数据信息
        String VALUE_M = "";        // 修改数据信息

        /// <summary>
        /// 获取请求参数信息
        /// </summary>
        private String getParam(String LogName = "")
        {
            String Url = Request.Url.ToString();
            String param = "";
            if (Url.Contains("?"))
            {
                param = Url.Substring(Url.IndexOf("?") + 1);                // 获取参数信息

                if (LogName.Equals("")) LogName = this.GetType().Name;
                LogTool log = new LogTool(LogName);                         // 记录至log中
                log.WriteLine(param);
            }
            return param;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            TAB = Request["TAB"];
            KEY = Request["KEY"];
            KEY_D = Request["KEY_D"];
            VALUE = Request["VALUE"];
            VALUE_M = Request["VALUE_M"];

            getParam();     //获取参数记录log信息

            String data = "";
            if (TAB == null || TAB.Equals(""))          // 无参数时显示说明信息
            {
                data = NoteInfo();
            }
            else
            {
                if (KEY_D != null && !KEY_D.Equals(""))
                {
                    data = Delet(TAB, KEY_D);           // 删除数据
                }
                else if (VALUE == null && VALUE_M == null)
                {
                    data = Get(TAB, KEY);               // 查询数据信息
                }
                else if (VALUE != null)
                {
                    data = Set(TAB, KEY, VALUE);        // 保存为新的数据项
                }
                else if (VALUE_M != null)
                {
                    data = Update(TAB, KEY, VALUE_M);   // 执行数据修改
                }
            }
            Response.Write(data);
        }

        /// <summary>
        /// 接口使用说明信息
        /// </summary>
        private String NoteInfo()
        {
            String url = "http://" + Request.Params.Get("HTTP_HOST") + "/WebInfo.aspx?";

            List<String> list = new List<string>();
            list.Add("接口使用说明:");
            list.Add("");
            list.Add("添加信息:" + url + "TAB=测试表&KEY=TAG4&VALUE=添加log信息");
            list.Add("修改信息:" + url + "TAB=测试表&KEY=TAG4&VALUE_M=修改log信息");
            list.Add("删除信息:" + url + "TAB=测试表&KEY_D=TAG4");
            list.Add("查询所有信息:" + url + "TAB=测试表");
            list.Add("查询指定信息:" + url + "TAB=测试表&KEY=TAG1");

            return NoteInfo("WebInfo保存与查询", list) ;
        }

        /// <summary>
        /// 页面使用说明信息
        /// </summary>
        private String NoteInfo(String tittle, List<String> list)
        {
            StringBuilder Str = new StringBuilder();
            Str.AppendLine("<!DOCTYPE html>");
            Str.AppendLine("<html lang=\"zh-CN\">");
            Str.AppendLine("");
            Str.AppendLine("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
            Str.AppendLine("<title>" + tittle + "</title>");
            Str.AppendLine("</head>"); 
            Str.AppendLine("");
            Str.AppendLine("<body>");
            Str.AppendLine("<div>");
            foreach (String str in list)
            {
                Str.AppendLine("<p>" + str + "</p>");
            }
            Str.AppendLine("</div>");
            Str.AppendLine("</body>");
            Str.AppendLine("");
            Str.AppendLine("</html>");

            return Str.ToString();
        }


        #region 数据表处理逻辑

        /// <summary>
        /// 删除TAB表标签为KEY的所有行
        /// </summary>
        public static String Delet(String TAB, String KEY_D)
        {
            String sql = "delete from " + TAB + " where 标签='" + KEY_D + "'"; ;
            String data = Execute(sql);
            return data;
        }

        /// <summary>
        /// 修改TAB表所有标签为KEY的所有数据
        /// </summary>
        public static String Update(String TAB, String KEY, String VALUE_M)
        {
            String sql = "update " + TAB + " set 信息 = '" + VALUE_M + "'" + " where 标签='" + KEY + "'";
            String data = Execute(sql);
            return data;
        }

        /// <summary>
        /// 查询TAB表标签为KEY的所有数据,KEY为null时返回所有表数据
        /// </summary>
        public static String Get(String TAB, String KEY)
        {
            String sql = "select * from [" + TAB + "]" + (KEY == null ? "" : " where 标签='" + KEY + "'");
            String data = Execute(sql);
            return data;
        }

        /// <summary>
        /// 保存log信息到数据表中
        /// </summary>
        public static String Set(String TAB, String KEY, String VALUE)
        {
            Boolean result = false;
            if (!TabExist(TAB))
            {
                if (CreateTable(TAB)) result = InsetValue(TAB, KEY, VALUE);
            }
            else result = InsetValue(TAB, KEY, VALUE);

            return (result ? "success" : "fail");
        }

        /// <summary>
        /// 判断数据库中是否存在指定名称的表
        /// </summary>
        public static Boolean TabExist(String TAB)
        {
            // 查询表是否存在: select name from sys.tables where name='数据表1'
            String sql = "select name from sys.tables where name='" + TAB + "'";
            String data = Execute(sql);

            return (data.Contains(TAB));
        }

        /// <summary>
        /// 创建指定名称的表
        /// </summary>
        public static Boolean CreateTable(String TAB)
        {
            //CREATE TABLE [dbo].[Log_All]
            //(
            //    [ID] INT NOT NULL, 
            //    [日期] NCHAR(30) NULL, 
            //    [信息] NCHAR(300) NULL, 
            //    CONSTRAINT [PK_Log_All] PRIMARY KEY ([ID]) 
            //)

            // 查询表是否存在: select name from sys.tables where name='数据表1'
            String sql = "CREATE TABLE [dbo].[" + TAB + "] ( [日期] NCHAR(30) NOT NULL,[标签] NCHAR(100) NULL,[信息] NCHAR(300) NULL,CONSTRAINT [PK_" + TAB + "] PRIMARY KEY ([日期]) )";
            String data = Execute(sql);

            return (data.Trim().ToLower().Equals("success"));
        }

        /// <summary>
        /// 向表中插入新的数据
        /// </summary>
        public static Boolean InsetValue(String TAB, String KEY, String VALUE)
        {
            // insert into tb_stu(num, name, sex, age, class) Values('1042163', '', '', '', '',)
            String Date = DateTime.Now.ToString("yyyy-MM-dd_HH:mm:ss_ffffff");
            String sql = "insert into " + TAB + "(日期, 标签, 信息) Values('" + Date + "', '" + KEY + "', '" + VALUE + "')";
            String data = Execute(sql);

            return (data.Trim().ToLower().Equals("success"));
        }

        /// <summary>
        /// 执行sql语句,获取数据库信息
        /// </summary>
        public static String Execute(String sql)
        {
            String data = "";

            //// 从网页接口Sql.aspx获取数据
            //String url = "http://" + Request.Params.Get("HTTP_HOST") + "/Sql.aspx" + "?" + sql;
            //data = getWebData(url);

            // 从代码接口直接获取数据
            data = Sql.Execute(sql);

            return data;
        }

        /// <summary>
        /// 获取指定url的网页数据
        /// </summary>
        public static String getWebData(String url)
        {
            String data = "";

            WebClient client = new WebClient();
            client.Encoding = System.Text.Encoding.UTF8;
            data = client.DownloadString(url);

            return data;
        }

        #endregion

    }
}

WebInfo.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebInfo.aspx.cs" Inherits="WebApplicationTest.WebInfo" %>

Sql.aspx.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplicationTest
{
    /// <summary>
    /// 数据库信息查询示例: http://localhost:5516/Sql.aspx?SELECT * FROM 数据表1
    /// </summary>
    public partial class Sql : System.Web.UI.Page
    {
        /// <summary>
        /// 获取请求参数信息
        /// </summary>
        private String getParam(String LogName = "")
        {
            String Url = Request.Url.ToString();
            String param = "";
            if (Url.Contains("?"))
            {
                param = Url.Substring(Url.IndexOf("?") + 1);                // 获取参数信息

                if (LogName.Equals("")) LogName = this.GetType().Name;
                LogTool log = new LogTool(LogName);                         // 记录至log中
                log.WriteLine(param);
            }
            return param;
        }

        /// <summary>
        /// 页面载入
        /// </summary>
        protected void Page_Load(object sender, EventArgs e)
        {
            String queryString = getParam();                                  // 获取sql查询语句
            if (queryString.Equals("")) Response.Write("NULL");
            else
            {
                String data = Execute(queryString);
                Response.Write(data);
            }
        }

        #region 本地数据库操作逻辑

        /// <summary>
        /// 本地数据库连接串信息
        /// </summary>
        public static string connectionString = @"Data Source=.\JSQL2008;Initial Catalog=DataBase1;User ID=sa;Password=Sa12345789"; // 连接本地数据库DataBase1

        /// <summary>
        /// 连接数据库,执行sql语句
        /// connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NoteBook.mdf;Integrated Security=True;User Instance=True";  // 连接附加数据库
        /// connectionString = @"Data Source=.\JSQL2008;Initial Catalog=DataBase1;User ID=sa;Password=Sa12345789"; // 连接本地数据库DataBase1
        /// queryString = "SELECT * FROM 数据表1";
        /// </summary>
        public static String Execute(string queryString, string connectionString = null)
        {
            try
            {
                if (connectionString == null || connectionString.Equals("")) connectionString = Sql.connectionString;
                //string queryString =  "SELECT * FROM 数据表1";
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();

                    SqlCommand command = new SqlCommand(queryString, connection);
                    SqlDataReader reader = command.ExecuteReader();

                    String jsonData = ToJson(reader);

                    connection.Close();

                    if (jsonData.Trim().Equals("")) jsonData = "success";
                    return jsonData;
                }
            }
            catch (Exception ex)
            {
                return "fail";
            }
        }

        /// <summary>
        /// DataReader转换为Json串
        /// </summary>
        public static string ToJson(SqlDataReader dataReader)
        {
            StringBuilder Builder = new StringBuilder();

            int rows = 0;
            while (dataReader.Read())
            {
                if (rows++ > 0) Builder.Append(",");

                // 行数据转Json
                Builder.Append("{");
                for (int i = 0; i < dataReader.FieldCount; i++)
                {
                    if (i > 0) Builder.Append(",");

                    // 列名称
                    string strKey = dataReader.GetName(i);
                    strKey = "\"" + strKey + "\"";

                    // 列数据
                    Type type = dataReader.GetFieldType(i);
                    string strValue = dataReader[i].ToString();
                    strValue = String.Format(strValue, type).Trim();
                    if (type == typeof(string) || type == typeof(DateTime)) strValue = "\"" + strValue + "\"";

                    Builder.Append(strKey + ":" + strValue);
                }
                Builder.Append("}");
            }
            dataReader.Close();

            if (rows > 1) return "[" + Builder.ToString() + "]";
            else return Builder.ToString();
        }

        #endregion

    }
}
Sql.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Sql.aspx.cs" Inherits="WebApplicationTest.Sql" %>


LogTool.aspx.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;

namespace WebApplicationTest
{
    // 示例:
    //LogTool log = new LogTool(this.GetType().Name);
    //log.WriteLine("log输出信息");

    /// <summary>
    /// 日志信息输出类
    /// </summary>
    public class LogTool
    {
        public string logFile = ""; // log文件路径

        /// <summary>
        /// 默认log文件
        /// </summary>
        public LogTool()
        {
            string logFile = AppDomain.CurrentDomain.BaseDirectory + "/log/log.txt";
            Init(logFile);
        }

        /// <summary>
        /// 指定名称,创建文件
        /// </summary>
        public LogTool(string LogName)
        {
            string logFile = AppDomain.CurrentDomain.BaseDirectory + "/log/" + LogName + ".txt";
            Init(logFile);
        }

        /// <summary>
        /// 初始设置,创建路径、文件
        /// </summary>
        private void Init(string logFile)
        {
            this.logFile = logFile;

            // 创建路径
            String dir = System.IO.Path.GetDirectoryName(logFile);
            if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);

            // 创建文件
            if (!File.Exists(logFile))
            {
                FileStream fs = File.Create(logFile);
                fs.Close();
            }
        }

        string FORMAT = "[yyyy-MM-dd_HH:mm:ss_ffffff] ";

        /// <summary>
        /// 追加一条log信息
        /// </summary>
        public void Write(string text)
        {
            using (StreamWriter sw = new StreamWriter(logFile, true, Encoding.UTF8))
            {
                sw.Write(DateTime.Now.ToString(FORMAT) + text);
            }
        }

        /// <summary>
        /// 追加一行log信息
        /// </summary>
        public void WriteLine(string text)
        {
            text += "\r\n";
            using (StreamWriter sw = new StreamWriter(logFile, true, Encoding.UTF8))
            {
                sw.Write(DateTime.Now.ToString(FORMAT) + text);
            }
        }

        /// <summary>
        /// 发送log信息至数据库
        /// </summary>
        public void SendDB()
        {

        }
    }
}




猜你喜欢

转载自blog.csdn.net/scimence/article/details/79307078
今日推荐