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

📄 sqlplusscript.cs

📁 自己编写的基本Orcale的通用的数据库初始化工具。
💻 CS
字号:
using System;
using System.IO;
using System.Collections;
using System.Threading;
using System.Diagnostics;
using System.Windows.Forms;
using DS.EMIS.StartPrepare.Common;


namespace DS.EMIS.StartPrepare
{
	/// <summary>
	/// SQLPlusScript 的摘要说明。
	/// </summary>
	public class SQLPlusScript
	{
		public SQLPlusScript()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}

        #region ### 进度条事件 ###
        public delegate void ProcessEventHandler(int guage);
        public event ProcessEventHandler ProcessEvent;
        #endregion
        
        /// <summary>
        /// 用sqlplus执行脚本
        /// </summary>
        public string Execute(string sqlFileName)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                string batFileName = Path.Combine(Application.StartupPath,"tempSql.bat");
                CreateBatFile(batFileName,sqlFileName);

                Process p = new Process();
                p.StartInfo.FileName = batFileName;
                p.StartInfo.UseShellExecute = false; 
                p.StartInfo.RedirectStandardInput = true; 
                p.StartInfo.RedirectStandardOutput = true; 
                p.StartInfo.RedirectStandardError = true; 
//                p.StartInfo.CreateNoWindow = false; 
				p.StartInfo.CreateNoWindow = true; 
                p.Start();
                if(ProcessEvent != null )this.ProcessEvent(30);

                p.StandardInput.WriteLine("quit");
                string str = string.Empty;
                //string str = p.StandardOutput.ReadToEnd();
                while(p.StandardOutput.Peek()>=0)
                {
                    str += p.StandardOutput.ReadToEnd();
                }
                p.StandardInput.WriteLine("exit");
                if(ProcessEvent != null )this.ProcessEvent(50);
                //p.WaitForExit(); 
                while(p.StandardOutput.Peek()>=0)
                {
                    str += p.StandardOutput.ReadToEnd();
                }
                if(ProcessEvent != null )this.ProcessEvent(100);
                                
                p.Close();
                return str;
            }
            catch(Exception ex)
            {
                throw ex;                
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }


        private void CreateBatFile(string batFileName,string sqlFileName)
        {
            using(StreamWriter writer = new StreamWriter(batFileName,false,System.Text.Encoding.Default))
            {                
                //string str = string.Format("sqlplus {0}/{1}@{2} @{3} exit",GlobalObject.Instance.LocalSession.UserName,GlobalObject.Instance.LocalSession.Password,GlobalObject.Instance.LocalSession.ServiceName,sqlFileName);
                string str = string.Format
					(
					"sqlplus {0}/{1}@{2} @{3} exit",
					DBAccess.UserID,
					DBAccess.UserPD,
					DBAccess.ServiceName,
					sqlFileName
					);
				writer.WriteLine(str);
                writer.Close();
            }
        }
	}
}

⌨️ 快捷键说明

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