CommonHelper.cs -- 数据库查询 及 HTTP 请求类
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace GetAddressService
{
public class CommonHelper
{
public static string Con { get; set; }
public static DataTable FillTable(string SQLString, string conStr=null)
{
if (string.IsNullOrEmpty(conStr))
conStr = Con;
using (OracleConnection connection = new OracleConnection(conStr))
{
DataTable dt = new DataTable();
try
{
connection.Open();
OracleDataAdapter command = new OracleDataAdapter(SQLString, connection);
command.Fill(dt);
}
catch (System.Data.OracleClient.OracleException ex)
{
throw new Exception(ex.Message);
}
return dt;
}
}
public static int ExecuteSql(string SQLString, string conStr=null)
{
if (string.IsNullOrEmpty(conStr))
conStr = Con;
using (OracleConnection connection = new OracleConnection(conStr))
{
using (OracleCommand cmd = new OracleCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.OracleClient.OracleException E)
{
throw new Exception(E.Message);
}
}
}
}
public static string Http(Uri uri, byte[] data = null)
{
string rtnVal = "";
int tryTimes = 0;
again:
tryTimes++;
try
{
HttpWebRequest webRequest = (HttpWebRequest)System.Net.WebRequest.Create(uri);
webRequest.Method = "GET";
webRequest.ContentType = "application/x-www-form-urlencoded";
if (data != null)
{
webRequest.Method = "POST";
webRequest.ContentLength = data.Length;
Stream inputStream = webRequest.GetRequestStream();
inputStream.Write(data, 0, data.Length);
inputStream.Close();
inputStream.Dispose();
inputStream = null;
}
HttpWebResponse webResp = (HttpWebResponse)webRequest.GetResponse();
using (Stream receiveStream = webResp.GetResponseStream())
{
using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
rtnVal = readStream.ReadToEnd();
}
}
}
catch (Exception)
{
if (tryTimes < 1) goto again;
}
return rtnVal;
}
}
}
//即获取到的数据库连接字符串在 app.Config 配置如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="constr" value="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(service_name =acid)));Persist Security Info=True;User ID=wq; Password=123;"/>
<add key="ConnectionString" value="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(service_name =ney)));Persist Security Info=True;User ID=sa;Password=123;"/>
</appSettings>
</configuration>
取constr连接字符串如下
CommonHelper.Con = System.Configuration.ConfigurationManager.AppSettings["constr"];
注:这里需要引用程序集
存一个打日志的公用类(注:这个是从DOS.ORM中独立出来的)
LogHelper.cs
using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Text; namespace Dos.Common { /// <summary> /// 日志帮助类。AppSettings节点可以配置Dos.LogHelper.Debug=0或Dos.LogHelper.Error=0来关闭日志记录。 /// 如果不传入path参数,默认是在~/Log/下生成日志文件,也可以在AppSettings节点配置Dos.LogHelper.Path来设置默认日志文件路径,格式:D:\\File\\Log\\。 /// </summary> public class LogHelper { private static readonly object Olock = new object(); private enum LogHelperType { debug, error } /// <summary> /// 记录调试日志 /// </summary> /// <Param name="content">内容。如需换行可使用:\r\n</Param> /// <Param name="filePrefixName"></Param> /// <Param name="path">格式:D:\\File\\Logs\\</Param> public static void Debug(string content, string filePrefixName = null, string path = null) { Write(LogHelperType.debug, content, filePrefixName, path); } /// <summary> /// 记录错误日志 /// </summary> /// <Param name="content">内容。如需换行可使用:\r\n</Param> /// <Param name="filePrefixName"></Param> /// <Param name="path">格式:D:\\File\\Logs\\</Param> public static void Error(string content, string filePrefixName = null, string path = null) { Write(LogHelperType.error, content, filePrefixName, path); } /// <summary> /// filePrefixName是文件名前缀,最好用中文,方便在程序Logs文件下查看。 /// </summary> /// <Param name="content">内容。如需换行可使用:\r\n</Param> /// <Param name="filePrefixName"></Param> /// <Param name="path"></Param> /// <Param name="logtype"></Param> private static void Write(LogHelperType logtype, string content, string filePrefixName = null, string path = null) { lock (Olock) { try { if (logtype == LogHelperType.debug) { var dosDebug = ConfigurationManager.AppSettings["Dos.LogHelper.Debug"]; if (dosDebug != null && dosDebug != "1") { return; } } else { var dosError = ConfigurationManager.AppSettings["Dos.LogHelper.Error"]; if (dosError != null && dosError != "1") { return; } } #region 日志文件 var fileName = filePrefixName + DateTime.Now.ToString("yyyyMMdd") + logtype.ToString() + ".txt"; if (string.IsNullOrWhiteSpace(path)) { var dosPath = ConfigurationManager.AppSettings["Dos.LogHelper.Path"]; if (string.IsNullOrWhiteSpace(dosPath)) { path = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + fileName; } else { path = dosPath + fileName; } } else { path += fileName; } var di = new DirectoryInfo(path.Replace(fileName, "")); if (!di.Exists) { di.Create(); } //判断文件大小,需要新开文件 using (var fs = new FileStream(path, FileMode.Append, FileAccess.Write)) { var sw = new StreamWriter(fs); sw.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); sw.WriteLine(); sw.Write(content); sw.WriteLine(); sw.Write("-----------------------------------------------------------------------------"); sw.WriteLine(); sw.Flush(); sw.Close(); } #endregion } catch { } } } } }
例如需要打印异常日志
try{ //处理一些事情 } catch (Exception ex) { Dos.Common.LogHelper.Debug(ex.Message); }
如果不传入path参数,默认是在~/Log/下生成日志文件