using System; using System.Data; using System.Data.SqlClient; using System.Diagnostics;
namespace OA { /// <summary> /// Dataprocess 的摘要说明。 /// 操作数据库的类 /// </summary> public class Dataprocess {
SqlConnection Conn; string ConnString; public Dataprocess() { // // TODO: 在此处添加构造函数逻辑 // ConnString=System.Configuration.ConfigurationSettings.AppSettings["SqlConn"]; Conn=new SqlConnection(ConnString); }
public Dataprocess(string stringConn) { ConnString=stringConn; Conn=new SqlConnection(ConnString); }
public string GetConnString() { return ConnString; }
public SqlConnection GetConn() { return Conn; }
public SqlConnection GetNewConn() { SqlConnection NewConn = new SqlConnection(ConnString); return NewConn; }
#region 获取数据集 public DataSet GetDataSet(string SelectStr) { try { SqlDataAdapter Da = new SqlDataAdapter(SelectStr, Conn); DataSet Ds = new DataSet(); Conn.Open(); Da.Fill(Ds); Conn.Close(); return Ds; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return null; } }
public DataSet GetDataSet(string SelectStr,string TableName) { try { SqlDataAdapter Da = new SqlDataAdapter(SelectStr, Conn); DataSet Ds = new DataSet(); Conn.Open(); Da.Fill(Ds,TableName); Conn.Close(); return Ds; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return null; } }
#endregion
public DataTable GetDataTable(string SelectStr) { try { SqlDataAdapter Da = new SqlDataAdapter(SelectStr, Conn); DataSet Ds = new DataSet(); Conn.Open(); Da.Fill(Ds); Conn.Close(); return Ds.Tables[0]; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return null; } }
public bool ExecuteNonQuery(string SelectStr) {
try { SqlCommand Cm = new SqlCommand(SelectStr, Conn); Conn.Open(); Cm.ExecuteNonQuery(); Conn.Close(); return true; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close();
Debug.WriteLine(ex.ToString()); return false; }
}
public bool ExecuteNonQuery(string SelectStr,ref int IDENTITYValue) {
try { SqlCommand Cm = new SqlCommand(SelectStr, Conn); Conn.Open(); Cm.ExecuteNonQuery(); Cm.CommandText="select @@identity"; IDENTITYValue=int.Parse(Cm.ExecuteScalar().ToString()); Conn.Close(); return true; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close();
Debug.WriteLine(ex.ToString()); return false; }
}
public bool ExecuteNonQuery(string SelectStr,int TimeOut) {
try { SqlCommand Cm = new SqlCommand(SelectStr, Conn); Cm.CommandTimeout=TimeOut; Conn.Open(); Cm.ExecuteNonQuery(); Conn.Close(); return true; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close();
Debug.WriteLine(ex.ToString()); return false; }
}
public bool ExecuteNonQuery(string SelectStr,SqlCommand Cm ) {
try { Cm.Connection= new SqlConnection(Conn.ConnectionString); Cm.CommandText=SelectStr; Cm.Connection.Open(); Cm.ExecuteNonQuery(); Cm.Connection.Close(); return true; } catch(Exception ex) { if (Cm.Connection.State != ConnectionState.Closed) Cm.Connection.Close();
Debug.WriteLine(ex.ToString()); return false; }
}
public bool ExecuteNonQuery(string[] SelectStrs,SqlCommand Cm) { SqlConnection MyConn=new SqlConnection(ConnString); MyConn.Open(); SqlTransaction MyTrans; MyTrans=MyConn.BeginTransaction(); Cm.Connection=MyConn; Cm.Transaction=MyTrans; try { foreach (string SelectStr in SelectStrs) { if(SelectStr!=null&&SelectStr!="") { Cm.CommandText= SelectStr; Cm.ExecuteNonQuery(); } } MyTrans.Commit(); return true; } catch (SqlException ex) { Debug.WriteLine(ex.ToString()); MyTrans.Rollback(); MyConn.Close(); return false; } finally { MyConn.Close(); }
}
public bool ExecuteNonQuery(string[] SelectStrs,SqlCommand Cm,int TimeOut) { SqlConnection MyConn=new SqlConnection(ConnString); MyConn.Open(); SqlTransaction MyTrans; MyTrans=MyConn.BeginTransaction(); Cm.CommandTimeout=TimeOut; Cm.Connection=MyConn; Cm.Transaction=MyTrans; try { foreach (string SelectStr in SelectStrs) { if(SelectStr!=null&&SelectStr!="") { Cm.CommandText= SelectStr; Cm.ExecuteNonQuery(); } } MyTrans.Commit(); return true; } catch (SqlException ex) { Debug.WriteLine(ex.ToString()); MyTrans.Rollback(); MyConn.Close(); return false; } finally { MyConn.Close(); }
}
public bool ExecuteNonQuery(string[] SelectStrs) {
Conn.Open(); SqlCommand Cm=Conn.CreateCommand(); SqlTransaction Trans; Trans=Conn.BeginTransaction(); Cm.Connection=Conn; Cm.Transaction=Trans; try { foreach (string SelectStr in SelectStrs) { if(SelectStr!=null&&SelectStr!="") { Cm.CommandText= SelectStr; Cm.ExecuteNonQuery(); } } Trans.Commit(); return true; } catch (Exception e)
{ try { Trans.Rollback(); } catch (SqlException ex) { if (Trans.Connection != null) { Console.WriteLine(ex.GetType() + "取消保存数据"); } } Console.WriteLine( e.GetType() + " 保存数据出现失败."); Console.WriteLine("数据保存失败."); if(Conn.State!=ConnectionState.Closed) Conn.Close();
return false; } finally { Conn.Close(); }
}
public bool ExecuteNonQuery(string[] SelectStrs,ref int IDENTITYValue,bool First) {
Conn.Open(); SqlCommand Cm=Conn.CreateCommand(); SqlTransaction Trans; Trans=Conn.BeginTransaction(); Cm.Connection=Conn; Cm.Transaction=Trans; try { foreach (string SelectStr in SelectStrs) { if(SelectStr!=null&&SelectStr!="") { Cm.CommandText= SelectStr; Cm.ExecuteNonQuery(); if(First) { Cm.CommandText="Select @@IDENTITY"; string strIDENTITYValue=Cm.ExecuteScalar().ToString(); IDENTITYValue=Convert.IsDBNull(Cm.ExecuteScalar())?0:int.Parse(Cm.ExecuteScalar().ToString()); First=false; for(int j=1;j<SelectStrs.Length;j++) { if(SelectStrs[j]!=null) SelectStrs[j]=SelectStrs[j].Replace("IDENTITYValue",strIDENTITYValue); } } } } Trans.Commit(); return true; } catch (Exception e)
{ try { Trans.Rollback(); } catch (SqlException ex) { if (Trans.Connection != null) { Console.WriteLine(ex.GetType() + "取消保存数据"); } } Console.WriteLine( e.GetType() + " 保存数据出现失败."); Console.WriteLine("数据保存失败."); if(Conn.State!=ConnectionState.Closed) Conn.Close();
return false; } finally { Conn.Close(); }
}
public bool ExecuteProcedure(SqlCommand Cm) { try { Cm.Connection=Conn; Cm.CommandType=CommandType.StoredProcedure; Conn.Open(); Cm.ExecuteNonQuery(); Conn.Close(); return true; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close();
Debug.WriteLine(ex.ToString()); return false; }
}
#region 获取数据流 public SqlDataReader GetSqlDataReader(string SelectStr) { try { SqlDataReader Sdr; SqlCommand Cm = new SqlCommand(SelectStr, Conn); Conn.Open(); Sdr = Cm.ExecuteReader(CommandBehavior.CloseConnection); return Sdr; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return null; } } #endregion
public DataRow GetSqlDataRow(string SelectStr) { try { SqlDataAdapter Da = new SqlDataAdapter(SelectStr, Conn); DataSet Ds = new DataSet(); Conn.Open(); Da.Fill(Ds); Conn.Close(); if (Ds.Tables[0].Rows.Count>0) return Ds.Tables[0].Rows[0]; else return null;
} catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return null; } }
public object[] GetSqlDataReaderData(string SelectStr) { try { SqlCommand Cm = new SqlCommand(SelectStr, Conn); Conn.Open(); SqlDataReader Sdr = Cm.ExecuteReader(CommandBehavior.CloseConnection); Sdr.Read(); object[] Data=new object[Sdr.FieldCount-1]; Sdr.GetValues(Data); Sdr.Close(); return Data; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return null; } }
public void UpdateData(DataSet Ds) { try { string TableName = Ds.Tables[0].TableName; string SqlStr = "Select top 0 * from " + TableName; SqlDataAdapter Da = new SqlDataAdapter(SqlStr, Conn); Conn.Open(); Da.Fill(Ds, TableName); Conn.Close(); SqlCommandBuilder Cmb = new SqlCommandBuilder(Da); Da.Update(Ds, TableName); } catch (Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); }
}
public int GetTableLastID(string TableName) {
try { int ID = 0; SqlCommand Cm = new SqlCommand("Select Ident_Current('" + TableName + "')", Conn); Conn.Open(); ID = Convert.ToInt32(Cm.ExecuteScalar()); Conn.Close(); return ID; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); return 0; }
}
public int GetTableLastID(SqlCommand Cm) { int ID = 0; Cm.CommandText="Select @@IDENTITY"; ID = Convert.ToInt32(Cm.ExecuteScalar()); return ID;
}
public int GetScalar(string SelectStr) { int i=0; try { SqlCommand Cm = new SqlCommand(SelectStr, Conn); Conn.Open(); i = Convert.ToInt32(Cm.ExecuteScalar()); Conn.Close(); } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.WriteLine(ex.ToString()); } return i;
}
#region 获取记录条数 public int GetRowsCount(string SelectStr) { int Num=0; try { SqlDataAdapter Da = new SqlDataAdapter(SelectStr, Conn); DataSet Ds = new DataSet(); Conn.Open(); Da.Fill(Ds); Conn.Close(); Num=Ds.Tables[0].Rows.Count; } catch(Exception ex) { if (Conn.State != ConnectionState.Closed) Conn.Close(); Debug.Write(ex.ToString()); } return Num;
} #endregion
#region 生成新的编号 public string NewNumber(string FieldName,string TableName,int Type) { string Number=""; string SelectStr; SelectStr="select max("+FieldName+") from "+TableName; DataRow Row; Row=GetSqlDataRow(SelectStr); if(Row==null||Row[0] is DBNull) { SelectStr="Select StartNumberCode,NumberLength,NumberDesc from tb_NumberCreate where NumberCreateID="+Type; DataRow CRow=GetSqlDataRow(SelectStr); Number=CRow[0].ToString().PadRight(Convert.ToInt32(CRow[1])-1,'0')+"1";
} else { SelectStr="Select StartNumberCode,NumberLength,NumberDesc from tb_NumberCreate where NumberCreateID="+Type; DataRow CRow=GetSqlDataRow(SelectStr); Number=CRow[0].ToString()+Convert.ToString(Convert.ToInt32(Row[0].ToString().Remove(0,CRow[0].ToString().Length))+1).PadLeft(Convert.ToInt32(CRow[1])-CRow[0].ToString().Length,'0'); } return Number; } #endregion
#region 读出树结构
public string DrawAllTree(int ID,string FieldName,string ParentFieldName,string TableName) { string Result = String.Empty; string cmdSQL = "select "+FieldName+" from "+ TableName+" where "+ParentFieldName +"="+ ID; try { DataSet ds = new DataSet(); SqlDataAdapter cmd1 = new SqlDataAdapter(cmdSQL,Conn); cmd1.Fill(ds,TableName); DataTable dt = ds.Tables[TableName]; for(int i=0; i < dt.Rows.Count; i++) { int mno = Convert.ToInt32(dt.Rows[i][0].ToString()); if("".Equals(Result)) Result += mno; else Result += "," + mno; string sRes = DrawTree(mno,FieldName, ParentFieldName, TableName); if(!"".Equals(sRes)) Result += "," + sRes; } } catch { return Result; } return Result; }
public string DrawTree(int ID,string FieldName,string ParentFieldName,string TableName) { string Result = String.Empty; string cmdSQL = "select "+FieldName+" from "+ TableName+" where "+ParentFieldName +"="+ ID; try { DataTable dt = GetDataTable(cmdSQL); for(int i=0; i < dt.Rows.Count; i++) { int mid = Convert.ToInt32(dt.Rows[i][0].ToString()); if("".Equals(Result)) Result += mid; else Result += "," + mid; Result += DrawTree(mid,FieldName,ParentFieldName,TableName); } } catch { return Result; } return Result;
} #endregion
} }