///<summary>
///公共的方法
///</summary>
public class PubFun
{
protected DB db = new DB();
///<summary>
///根据某一唯一条件获取另一字段的值
///</summary>
///<param name="strField">要获取的字段名称</param>
///<param name="condition">查讯条件</param>
///<param name="table">表名</param>
///<returns>返回string</returns>
public string GetStrByID(string strField, string condition, string table)
{
db.DBOpen();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = db.strConn;
cmd1.CommandText = "procGetStrByID";
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@field", strField);
cmd1.Parameters.AddWithValue("@condition", condition);
cmd1.Parameters.AddWithValue("@table", table);
string str2show=string.Empty;
if (cmd1.ExecuteScalar() != null)
{
str2show = cmd1.ExecuteScalar().ToString();
}
db.DBClose();
return str2show;
}
///<summary>
///判断是否为数字
///</summary>
///<param name="expression">输入的string值</param>
///<returns>返回布尔值</returns>
public bool IsNumber(string expression)
{
if (expression.Trim().Length == 0)
{
return false;
}
expression = expression.Trim();
bool hasDecimal = false;
int startIdx = 0;
if (expression.StartsWith("-"))
{
startIdx = 1;
}
for (int i = startIdx; i < expression.Length; i++)
{
// Check for decimal
if (expression[i] == '.')
{
if (hasDecimal) // 2nd decimal
return false;
else // 1st decimal
{
// inform loop decimal found and continue
hasDecimal = true;
continue;
}
}
// check if number
if (!char.IsNumber(expression[i]))
return false;
}
return true;
}
///<summary>
///判断是否为整形数字
///</summary>
///<param name="input">输入的Object</param>
///<returns></returns>
public bool IsInt(object input)
{
bool boltmp = false;
try
{
int i = Convert.ToInt32(input);
boltmp = true;
}
catch
{
boltmp = false;
}
return boltmp;
}
///<summary>
///过滤查询字符串
///</summary>
///<param name="args">输入的object对象</param>
///<returns>返回布尔值</returns>
public bool CheckParams(params object[] args)
{
string[] Lawlesses ={ "=", "'" };
if (Lawlesses == null || Lawlesses.Length <= 0) return true;
//构造正则表达式,例:Lawlesses是=号和'号,则正则表达式为 .*[=}'].* (正则表达式相关内容请见MSDN)
//另外,由于我是想做通用而且容易修改的函数,所以多了一步由字符数组到正则表达式,实际使用中,直接写正则表达式亦可;
String str_Regex = ".*[";
for (int i = 0; i < Lawlesses.Length - 1; i++)
str_Regex += Lawlesses[i] + "|";
str_Regex += Lawlesses[Lawlesses.Length - 1] + "].*";
foreach (object arg in args)
{
if (arg is string)//如果是字符串,直接检查
{
if (Regex.Matches(arg.ToString(), str_Regex).Count > 0)
return false;
}
else if (arg is ICollection)
//如果是一个集合,则检查集合内元素是否字符串,是字符串,就进行检查
{
foreach (object obj in (ICollection)arg)
{
if (obj is string)
{
if (Regex.Matches(obj.ToString(), str_Regex).Count > 0)
return false;
}
}
}
}
return true;
}
///<summary>
///截取标题字符串,并在末尾加...
///</summary>
///<param name="strInput">要截断的字符串</param>
///<param name="intLen">截断长度</param>
///<returns>返回新的字符串</returns>
public string CutStr(string strInput, int intLen)
{
strInput = strInput.Trim();
byte[] myByte = System.Text.Encoding.Default.GetBytes(strInput);
if (myByte.Length > intLen)
{
//截取操作
string resultStr = string.Empty;
for (int i = 0; i < strInput.Length; i++)
{
byte[] tempByte = System.Text.Encoding.Default.GetBytes(resultStr);
if (tempByte.Length < intLen - 2)
{
resultStr += strInput.Substring(i, 1);
}
else
{
break;
}
}
return resultStr + "...";
}
else
{
return strInput;
}
}
///<summary>
///根据无参数的存储过程生成Dataset,并可对其中某字段进行截断
///</summary>
///<param name="ProcName">存储过程名称</param>
///<param name="cutField">要截断的字段</param>
///<param name="cutlen">截断长度</param>
///<returns></returns>
public DataSet FillDatasetFromSP(string ProcName, string cutField, int cutlen)
{
db.DBOpen();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = db.strConn;
cmd1.CommandText = ProcName;
cmd1.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda1 = new SqlDataAdapter(cmd1);
DataSet ds1 = new DataSet();
sda1.Fill(ds1);
db.DBClose();
CutStrFromDataSet(ds1, cutField, cutlen);
return ds1;
}
///<summary>
///修改替换DataSet中的列内容,如给标题进行截取
///</summary>
///<param name="ds">dataset名称</param>
///<param name="ColumnName">列名</param>
///<param name="intLen">截断字符数量</param>
public void CutStrFromDataSet(DataSet ds, string ColumnName, int intLen)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ds.Tables[0].Rows[i][ColumnName] = CutStr(ds.Tables[0].Rows[i][ColumnName].ToString(), intLen);
}
}
///<summary>
///检查行是否存在
///</summary>
///<param name="table">要检查的表名</param>
///<param name="field">检查字段</param>
///<param name="sWhere">查讯条件</param>
///<returns>返回布尔值</returns>
public bool RowsCheck(string table, string field, string sWhere)
{
db.DBOpen();
string sSQL = "select " + field + " from " + table + " where " + sWhere;
SqlCommand command = new SqlCommand(sSQL, db.strConn);
SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleRow);
bool booltemp = false;
if (reader.Read())
{
booltemp = true;
}
db.DBClose();
return booltemp;
}
///<summary>
///判断字符串中某一段是否为整数型
///</summary>
///<param name="inputstr">输入的字符串</param>
///<param name="start">开始位置,由0始</param>
///<param name="len">长度</param>
///<returns></returns>
public bool CheckStrIsInt(string inputstr, int start, int len)
{
int tmp;
try
{
tmp = Convert.ToInt32(inputstr.Substring(start, len));
return true;
}
catch
{
return false;
}
}
///<summary>
///获得某一字段的最大值加1
///</summary>
///<param name="field">字段名</param>
///<param name="table">表名</param>
///<param name="condition">查讯条件</param>
///<returns>返回最大值的string</returns>
public string GetMaxValueAdd1(string field, string table, string condition)
{
string strSQL = string.Format("select max({0})+1 from {1} where {2}", field, table, condition);
db.DBOpen();
SqlCommand cmd = new SqlCommand(strSQL, db.strConn);
string tmpstr = cmd.ExecuteScalar().ToString();
db.DBClose();
return tmpstr;
}
public int GetMaxIntValue(string field, string table, string condition)
{
if (condition != null)
{
if (condition.Length != 0)
{
condition = "where " + condition;
}
else
condition = string.Empty;
}
string strSQL = string.Format("select max({0}) from {1} {2}", field, table, condition);
db.DBOpen();
SqlCommand cmd = new SqlCommand(strSQL, db.strConn);
object tmpstr = cmd.ExecuteScalar();
db.DBClose();
return (int)tmpstr;
}
///<summary>
///计算数据表符合某一条件的行的数量
///</summary>
///<param name="TableName">表名称</param>
///<param name="Query">条件</param>
///<returns></returns>
public int GetRowsNum(string TableName, string Query)
{
string selectString = "select count(*) from " + TableName + "";
if (Query != string.Empty && Query != null)
{
selectString += " where " + Query + "";
}
db.DBOpen();
SqlCommand cmd = new SqlCommand(selectString, db.strConn);
int rowsnum = (int)cmd.ExecuteScalar();
cmd.Connection.Close();
db.DBClose();
return rowsnum;
}
///<summary>
///删除表中的某一行数据
///</summary>
///<param name="TableName">表名</param>
///<param name="condition">条件</param>
public void DelRow(string TableName, string condition)
{
db.DBOpen();
string selectString;
selectString = "delete from " + TableName + " where " + condition + "";
db.Execute(selectString);
db.DBClose();
}
///<summary>
///根据整数生成**元/**万元类型的金额字符串
///</summary>
///<param name="InputMoney">金额</param>
///<returns></returns>
public string ToMoneyChar(int InputMoney)
{
string strtmp = string.Empty;
if (InputMoney < 10000)
strtmp = InputMoney.ToString() + "元";
else
strtmp = (Convert.ToDouble(InputMoney) / 10000) + "万元";
return strtmp;
}
///<summary>
///把1.0等转换为布尔值
///</summary>
///<param name="inputchar">要转换的值</param>
///<param name="typecode">转换类型</param>
///<returns></returns>
public bool Char2Bool(object inputchar, System.TypeCode typecode)
{
bool isTmp = false;
if (typecode == System.TypeCode.Byte)
{
if (inputchar.ToString() == "1")
isTmp = true;
else
isTmp = false;
}
return isTmp;
}
///<summary>
///生成一个随机的16位数字字母字符串
///</summary>
///<returns></returns>
public string CreateRandomString()
{
int Ran, Len;
Len = 16;
string pwdchars = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string createpass = "";
Random rnd = new Random();
for (int i = 0; i < Len; i++)
{
Ran = rnd.Next(pwdchars.Length);
createpass += pwdchars[Ran];
}
return createpass;
}
}
///<summary>
///动网论坛相关类
///</summary>
public class DVBBS
{
///<summary>
///用动网的MD5加密方法对密码加密
///</summary>
///<param name="input">要加密的字符串</param>
///<returns>返回加密后md5码中间16位</returns>
public string MD5(string input)
{
StringBuilder sb1 = new StringBuilder();
sb1.Append(FormsAuthentication.HashPasswordForStoringInConfigFile(input, "MD5"));
sb1.Remove(0, 8);
sb1.Remove(16, 8);
string strtmp = sb1.ToString().ToLower();
return strtmp;
}
///<summary>
///根据标准MD5生成动网规则的密码
///</summary>
///<param name="inputmd5">输入标准32位MD5码</param>
///<returns>返回16位动网规则密码</returns>
public string DVmd5(string inputmd5)
{
StringBuilder sb2 = new StringBuilder();
sb2.Append(inputmd5);
sb2.Remove(0, 8);
sb2.Remove(16, 8);
string strtmp = sb2.ToString().ToLower();
return strtmp;
}
}