⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globleutility.cs

📁 本书主要介绍了从基础开始建立Portal的快速应用开发过程(RAD)的方法。通过本书你可以了解到关于Oracle 9iAS Portal产品的主要特性、入口的开发和组织、网络开发和管理、实际的关系型数
💻 CS
📖 第 1 页 / 共 3 页
字号:
			get
			{
				return sLoginUser;
			}

			set
			{
				sLoginUser = value;
			}
		}

		public static int WSID
		{
			get
			{
				return nWSID;
			}

			set
			{
				nWSID = value;
			}
		}

		public static int RightID
		{
			get
			{
				return nRightID;
			}

			set
			{
				nRightID = value;
			}
		}

		private static System.Data.OracleClient.OracleConnection dbConnection;
		private static String sLoginUser;
		private static int nWSID;
		private static int nRightID;
		

		// 功能:计算出密码,并生成正确的数据库连接字符串
		// 参数:sConn        连接字符串除用户名密码的部分
		//       sUserPWD     连接字符串的用户名密码部分
		//       sUserName    连接数据库所用的数据库用户名
		// 返回:返回一个字符串。如果成功生成了连接串则返回值不为空,否则为空
		private String ComputeConnStr(String sConn, String sUserPWD, String sUserName)
		{
			System.Data.OracleClient.OracleCommand dbCommand;
			dbConnection.ConnectionString = sConn + sUserPWD;
			try
			{
				dbConnection.Open();
			}
			catch
			{
				return "";
			}

			dbCommand = new System.Data.OracleClient.OracleCommand("Begin CreatePWDSeed; END;", dbConnection);
			if(dbCommand == null)
				return "";
			try
			{
				dbCommand.ExecuteNonQuery();
				//检查时钟设置,如果与服务器时钟相差超过了一分钟则自动调整时间
				CheckClock();
			}
			catch
			{
				return "";
			}
			
			dbConnection.Close();

            // 为用户sUserName生成密文
            int nSeed = DateTime.Now.Year * 10000 + DateTime.Now.Month * 100 + DateTime.Now.Day;
			if(sUserName.ToUpper() == "PLATF")
				nSeed = nSeed + 1023;
			else if(sUserName.ToUpper() == "CARDM")
				nSeed = nSeed + 1023 * 2;
			else if(sUserName.ToUpper() == "FINAN")
				nSeed = nSeed + 1023 * 3;
			else if(sUserName.ToUpper() == "RECHG")
				nSeed = nSeed + 1023 * 4;
			else if(sUserName.ToUpper() == "CYBER")
				nSeed = nSeed + 1023 * 5;
			else if(sUserName.ToUpper() == "CONSU")
				nSeed = nSeed + 1023 * 6;
			else if(sUserName.ToUpper() == "QUERY")
				nSeed = nSeed + 1023 * 7;
			else if(sUserName.ToUpper() == "MONIT")
				nSeed = nSeed + 1023 * 8;
			else if(sUserName.ToUpper() == "LIBCHECK")
				nSeed = nSeed + 1023 * 9;
			else if(sUserName.ToUpper() == "CHARGE")
				nSeed = nSeed + 1023 * 10;
			
            string sPWDSeed = "";
            int nOdd = 0;
            int nEven = 0;
			int nTemp;
            for(int i = 0; i < 15; i++)
		    {
                nTemp = ((int)Math.Round(Math.Abs(Math.Sin(nSeed + i + 1)) * 100, 0) % 26) + 65;
                sPWDSeed = sPWDSeed + (char)nTemp;
  			    if((i % 2) == 0)
			        nOdd = nOdd + nTemp;
                else
                    nEven = nEven + nTemp * 3;
            }
            nTemp = ((nOdd + nEven) % 26) + 65;
            sPWDSeed = sPWDSeed + (char)nTemp;


			//计算出密码
			string sPWD = "";
			int nFirst, nSecond;
	
			nTemp = sPWDSeed[0] % 8;
			for(int i = 0; i < 8; i++)
			{
				nFirst = sPWDSeed[i];
				nSecond = sPWDSeed[((nTemp + i) % 8) + 8];

				sPWD = sPWD + (char)(((nFirst + nSecond * 3) % 26) + 65);
			}

			sUserPWD = "password=" + sPWD + ";user id=" + sUserName + ";";

			return sConn + sUserPWD; 
		}

		private void CheckClock()
		{
			DateTime dt = DateTime.Now;

			OracleCommand Cmd = new OracleCommand();
			Cmd.Connection = Connection.DBConnection;
			Cmd.CommandType = CommandType.Text;
			Cmd.CommandText = "Select sysdate From Dual";
			OracleDataReader Reader;
			Reader = Cmd.ExecuteReader();
			Reader.Read(); 
			DateTime dt2 = Reader.GetDateTime(0);
			Reader.Close();
			Cmd.Dispose();
			
			TimeSpan ts = dt.Subtract(dt2);
			if(Math.Abs(ts.TotalMinutes) >= 1)
			{
				SystemTime st = new SystemTime();
				dt2.ToLocalTime();
				st.Year = (ushort)dt2.Year;
				st.Month = (ushort)dt2.Month;
				st.Day = (ushort)dt2.Day;
				st.Hour = (ushort)dt2.Hour;
				st.Minute = (ushort)dt2.Minute;
				st.Second = (ushort)dt2.Second;
				st.DayOfWeek = (ushort)dt2.DayOfWeek;
				st.Milliseconds = (ushort)dt2.Millisecond;
				Kernel32.SetLocalTime(st);
				MessageBox.Show("由于您的时钟设置与服务器时间相差\n" +
					"超过了一分钟, 所以改变了您的时钟设置。", "提示", 
					MessageBoxButtons.OK, MessageBoxIcon.Information);
			}
		}
	}

	[ StructLayout( LayoutKind.Sequential )]
	public class SystemTime 
	{
		public ushort Year;
		/*public ushort year
		{
			get
			{
				return Year;
			}
		}*/
		public ushort Month; 
		public ushort DayOfWeek; 
		public ushort Day; 
		public ushort Hour; 
		public ushort Minute; 
		public ushort Second; 
		public ushort Milliseconds; 
	}

	public class Kernel32 
	{
		[ DllImport( "Kernel32.dll" )] public static extern void GetLocalTime([In, Out] SystemTime st);
		[ DllImport( "Kernel32.dll" )] public static extern void SetLocalTime([In] SystemTime st);
		[ DllImport( "Kernel32.dll" )] public static extern bool Beep([In] uint dwFreq, [In] uint dwDuration);
	}

	/// <summary>
	/// Register
	/// 功能:读写注册表,从而设置或取得数据库服务器的机器名
	/// 使用方法:访问或设置属性DBComputer
	/// </summary>
	public class Register
	{
		public Register()
		{
			RegistryKey rk = Registry.LocalMachine;
			rk = rk.CreateSubKey("Software\\BJTU_AILab\\LibCard");
			if(null != rk)
			{
				dbComputer = (string)rk.GetValue("DBMachine", "");
				dbSource   = (string)rk.GetValue("DBSource", "");
			}
		}

		// 取得或设置数据库所在的计算机名
		public String DBComputer
		{
			get
			{
				return dbComputer;
			}

			set
			{
				RegistryKey rk = Registry.LocalMachine;
				rk = rk.CreateSubKey("Software\\BJTU_AILab\\LibCard");
				if(null != rk)
				{
					dbComputer = value;
					rk.SetValue("DBMachine", dbComputer);
				}
			}
		}

		//取得或设置数据库名
		public String DBSource
		{
			get
			{
				return dbSource;
			}

			set
			{
				RegistryKey rk = Registry.LocalMachine;
				rk = rk.CreateSubKey("Software\\BJTU_AILab\\LibCard");
				if(null != rk)
				{
					dbSource = value;
					rk.SetValue("DBSource", dbSource);
				}
			}
		}

		private String dbComputer;    //数据库所在的计算机名
		private String dbSource;      //数据库名
	}

	//全局的帮助函数
	public class GlobleHelper
	{
		/// <summary>
		/// 判断该学生或教工是否有卡,如果有则返回其学号或教工号
		/// </summary>
		/// <param name="UserNumber">学号或教工号</param>
		/// <param name="UserType">=1表示学生,2表示教工</param>
		/// <param name="oc">用于查询的连接</param>
		/// <param name="UserHasCard">返回有卡用户的学号或教工号</param>
		/// <returns ret="int">=0表示在该用户目前有卡,=1表示没卡可以删,=2表示调用该函数参数不对,=3连接大不开,4查询出错</returns>
		public static int  MakeSureIfStillHaveCard(ArrayList UserNumber,int UserType,OracleConnection oc,ref string UserHasCard)
		{
			UserHasCard = "";
			string sTableName = "",mySql = "";
			if(UserType == 1)//学生
			{
				sTableName = "PlatF_SUser_Info";
			}
			else if(UserType == 2)//教工
			{
				sTableName = "PlatF_TUser_Info";
			}
			else if(UserType != 1 || UserType != 2 || UserNumber.Count == 0)
			{
				return 2;
			}


			//判断连接是否可用
			if(oc.State != ConnectionState.Open)
			{
				try
				{
					oc.Open();
				}
				catch
				{
					return 3;
				}
			}
			for( int i = 0;i<UserNumber.Count;i++ )
			{
				mySql = "SELECT USERNumber,Name FROM "+sTableName+" WHERE USERID = '"+UserNumber[i].ToString().Trim()+"' AND USERID in "+
						" (SELECT USERID FROM CARDM_USERCARD)";
				OracleCommand selCommand = new OracleCommand(mySql,oc);
				OracleDataReader gbDataReader = null;
				try
				{
					gbDataReader = selCommand.ExecuteReader();
				}
				catch(Exception ee)
				{
					GC.Collect();
					return 4;
				}
				if(gbDataReader.HasRows)
				{
					try
					{
						while(gbDataReader.Read())
						{
							UserHasCard = UserHasCard + gbDataReader.GetString(0)+"("+gbDataReader.GetString(1)+")" ;
						}
					}
					catch
					{}
					gbDataReader.Close();
					GC.Collect();
					return 0;
				}
				else
				{
					gbDataReader.Close();
					GC.Collect();
					return 1;
				}
			}
			return 4;
		}		
		//过程名称:ExecStoredProc_Consu-----综合消费系统专用
		//功能:执行一个不需要返回数据集的存储过程
		//参数:ProcName    存储过程名字,使用包时要加上包的名字
		//      inParam     存储过程需要的输入参数
		//      outParam    存储过程需要的输出参数,注意,这是引用参数
		//返回值:0表示成功,大于零表示错误号
		public static int ExecStoredProc_Consu(string ProcName, OracleParameter[] inParam, 
			ref OracleParameter[] outParam)
		{
			if(ConnectionConsu.DBConnection.State != ConnectionState.Open)
				ConnectionConsu.DBConnection.Open();

			OracleCommand Cmd = new OracleCommand(ProcName, ConnectionConsu.DBConnection);
			Cmd.CommandType = CommandType.StoredProcedure;

			if(inParam != null)
			{
				for(int i = 0; i < inParam.Length; i++)
					Cmd.Parameters.Add(inParam[i]);
			}

			if(outParam != null)
			{
				for(int i = 0; i < outParam.Length; i++)
					Cmd.Parameters.Add(outParam[i]);
			}

			try
			{
				Cmd.ExecuteNonQuery();
			}
			catch//(Exception E)
			{
				//MessageBox.Show(E.ToString());
				
				return 7;
			}

			return 0;
		}

		//过程名称:ExecStoredProc
		//功能:执行一个不需要返回数据集的存储过程
		//参数:ProcName    存储过程名字,使用包时要加上包的名字
		//      inParam     存储过程需要的输入参数
		//      outParam    存储过程需要的输出参数,注意,这是引用参数
		//返回值:0表示成功,大于零表示错误号
		public static int ExecStoredProc(string ProcName, OracleParameter[] inParam, 
			ref OracleParameter[] outParam)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -