自定义网页数据接口,连接本地数据库,实现网络数据的自助保存与读取。
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()
{
}
}
}