You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
308 lines
9.0 KiB
308 lines
9.0 KiB
///<summary>
|
|
///模块名: DbOra
|
|
/// <remarks>
|
|
/// 功能描述:
|
|
/// 1)提供数据连接的接口
|
|
/// </remarks>
|
|
/// <remarks>
|
|
/// 作者: 黄文发
|
|
/// 日期: 2003-09-09
|
|
/// </remarks>
|
|
///</summary>
|
|
using System.Collections;
|
|
using System.Configuration;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace System.Data
|
|
{
|
|
/// <summary>
|
|
/// 数据库连接字符串用Base64加密在
|
|
/// App.Config/Web.Config中的
|
|
/// <appSettings>
|
|
/// <add key="SERVER" value="UHBhbXM=" />
|
|
/// <add key="DATABASE" value="UHBhbXM=" />
|
|
/// <add key="USERNAME" value="UHBhbXMy" />
|
|
/// <add key="PASSWD" value="UHBhbXMy" />
|
|
/// </appSettings>
|
|
/// </summary>
|
|
public class SqlHelper
|
|
{
|
|
private static string constr = null;
|
|
public static string ConnectString
|
|
{
|
|
get
|
|
{
|
|
if (constr == null)
|
|
constr = GetConnectStringFromConfig("SERVER", "DATABASE", "USERNAME", "PASSWD");
|
|
return constr;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 从配置文件中获取数据库连接字符串
|
|
/// </summary>
|
|
/// <param name="cfDataBase"></param>
|
|
/// <param name="cfUserName"></param>
|
|
/// <param name="cfPasswd"></param>
|
|
/// <returns></returns>
|
|
public static string GetConnectStringFromConfig(string cfServer, string cfDataBase, string cfUserName, string cfPasswd)
|
|
{
|
|
string res;
|
|
try
|
|
{
|
|
string server = ConfigurationSettings.AppSettings[cfServer];
|
|
string dataBase = ConfigurationSettings.AppSettings[cfDataBase];
|
|
string userName = ConfigurationSettings.AppSettings[cfUserName];
|
|
string passwd = ConfigurationSettings.AppSettings[cfPasswd];
|
|
|
|
|
|
if (dataBase == null || dataBase == "")
|
|
throw new Exception("未指定数据库!");
|
|
|
|
res = "Password=" + passwd + ";Persist Security Info=True;User ID="
|
|
+ userName + ";Initial Catalog=" + dataBase + ";max pool size=3000;Data Source=" + server;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception("连接字符串错误" + ex.Message);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
public SqlHelper()
|
|
{
|
|
}
|
|
|
|
|
|
public static bool HasRow(DataSet ds)
|
|
{
|
|
if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
#region ExecSql
|
|
public static int ExecSql(string sql)
|
|
{
|
|
int res = 0;
|
|
SqlConnection con = new SqlConnection(ConnectString);
|
|
con.Open();
|
|
SqlCommand cmd = new SqlCommand(sql, con);
|
|
res = cmd.ExecuteNonQuery();
|
|
con.Close();
|
|
con.Dispose();
|
|
return res;
|
|
}
|
|
|
|
public static int ExecSql(ArrayList sqls)
|
|
{
|
|
int res = 0;
|
|
SqlConnection con = null;
|
|
SqlTransaction tran = null;
|
|
try
|
|
{
|
|
con = new SqlConnection(ConnectString);
|
|
con.Open();
|
|
tran = con.BeginTransaction();
|
|
|
|
|
|
foreach (string sql in sqls)
|
|
{
|
|
SqlCommand cmd = new SqlCommand(sql, con);
|
|
cmd.Transaction = tran;
|
|
res += cmd.ExecuteNonQuery();
|
|
}
|
|
tran.Commit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res = -1;
|
|
tran.Rollback();
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
if (con != null)
|
|
{
|
|
con.Close();
|
|
con.Dispose();
|
|
}
|
|
if (tran != null)
|
|
tran.Dispose();
|
|
}
|
|
return res;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Select
|
|
public static SqlDataReader SelectReader(string sql)
|
|
{
|
|
SqlConnection con = new SqlConnection(ConnectString);
|
|
con.Open();
|
|
SqlCommand cmd = con.CreateCommand();
|
|
cmd.CommandText = sql;
|
|
cmd.CommandType = CommandType.Text;
|
|
SqlDataReader reader = cmd.ExecuteReader();
|
|
return reader;
|
|
}
|
|
public static DataSet Select(string sql, int pageSize, int pageIndex, bool countInfo, ref int allCount)
|
|
{
|
|
SqlDataAdapter ad = null;
|
|
DataSet ds = new DataSet();
|
|
allCount = 0;
|
|
try
|
|
{
|
|
ad = new SqlDataAdapter(sql, ConnectString);
|
|
if ((pageSize == -1) && (pageSize == -1))
|
|
ad.Fill(ds, "TableName1");
|
|
else
|
|
{
|
|
int start = pageSize * (pageIndex - 1);
|
|
if (start < 0) start = 0;
|
|
ad.Fill(ds, start, pageSize, "TableName");
|
|
if (countInfo)
|
|
{
|
|
ad = new SqlDataAdapter(GetCountSqlString(sql), ConnectString);
|
|
DataSet dsCount = new DataSet();
|
|
ad.Fill(dsCount, "TableCount");
|
|
if (HasRow(dsCount))
|
|
allCount = Convert.ToInt32(dsCount.Tables[0].Rows[0][0]);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
allCount = 0;
|
|
ds = null;
|
|
throw e;
|
|
}
|
|
finally
|
|
{
|
|
if (ad != null)
|
|
{
|
|
ad.Dispose();
|
|
ad = null;
|
|
}
|
|
}
|
|
return ds;
|
|
}
|
|
|
|
public static DataSet Select(string sql, int pageSize, int pageIndex, ref int allCount)
|
|
{
|
|
return Select(sql, pageSize, pageIndex, true, ref allCount);
|
|
}
|
|
|
|
public static DataSet Select(string sql, int pageSize, int pageIndex)
|
|
{
|
|
int i = 0;
|
|
return Select(sql, pageSize, pageIndex, false, ref i);
|
|
}
|
|
|
|
public static DataSet Select(string sql)
|
|
{
|
|
return Select(sql, -1, -1);
|
|
}
|
|
public static DataSet ExecuteProd(string prodName, ArrayList objParams)
|
|
{
|
|
|
|
SqlConnection con = null;
|
|
try
|
|
{
|
|
con = new SqlConnection(ConnectString);
|
|
SqlCommand oc = new SqlCommand(prodName, con);
|
|
oc.CommandType = CommandType.StoredProcedure;
|
|
foreach (SqlParameter sp in objParams)
|
|
oc.Parameters.Add(sp);
|
|
con.Open();
|
|
SqlDataAdapter adp = new SqlDataAdapter(oc);
|
|
DataSet ds = new DataSet();
|
|
adp.Fill(ds);
|
|
return ds;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
#if DEBUG
|
|
string str = ex.Message;
|
|
#endif
|
|
}
|
|
finally
|
|
{
|
|
if (con != null)
|
|
{
|
|
con.Close();
|
|
con.Dispose();
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
#endregion
|
|
|
|
private static string GetCountSqlString(string sql)
|
|
{
|
|
string res = "";
|
|
try
|
|
{
|
|
string sqlTemp = sql.ToUpper();
|
|
int iFrom = sqlTemp.IndexOf("FROM");
|
|
if (iFrom > 0)
|
|
{
|
|
int iOrder = sqlTemp.IndexOf("ORDER BY");
|
|
if (iOrder == -1)
|
|
iOrder = sql.Length;
|
|
|
|
res = "SELECT COUNT(*) AS NUM FROM " + sql.Substring(iFrom + 4, iOrder - iFrom - 4);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw e;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
public static string String(string str)
|
|
{
|
|
if (str != null)
|
|
return str.Replace("'", "'");
|
|
else
|
|
return "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 1900-1-1
|
|
/// </summary>
|
|
public static DateTime MinDate
|
|
{
|
|
get { return new DateTime(1900, 1, 1); }
|
|
}
|
|
/// <summary>
|
|
/// 将字符串转化成日期,如果输入的字符串不是日期时,则返回1900-1-1
|
|
/// </summary>
|
|
/// <param name="str"></param>
|
|
/// <returns></returns>
|
|
public static DateTime Date(string str)
|
|
{
|
|
if (str == null || str == "")
|
|
return MinDate;
|
|
else
|
|
{
|
|
DateTime dt = MinDate;
|
|
if (DateTime.TryParse(str, out dt) == false)
|
|
return MinDate;
|
|
else
|
|
return dt;
|
|
}
|
|
}
|
|
public static string String(DateTime dt)
|
|
{
|
|
if (dt == (new DateTime(1,1,1)) || dt == MinDate)
|
|
return "";
|
|
else
|
|
return dt.ToShortDateString();
|
|
}
|
|
}
|
|
|
|
}
|