📄 sqlplusscript.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 + -