ฉันแน่ใจว่าคำถามนี้ได้รับคำตอบแล้ว แต่ฉันไม่สามารถหาคำตอบได้โดยใช้เครื่องมือค้นหา
ใช้ c # ฉันต้องการเรียกใช้ไฟล์. sql ไฟล์ sql มีหลายคำสั่ง sql ซึ่งบางส่วนจะถูกแบ่งเป็นหลายบรรทัด ฉันลองอ่านไฟล์และลองใช้งานไฟล์โดยใช้ ODP.NET ... แต่ฉันไม่คิดว่า ExecuteNonQuery ได้รับการออกแบบมาให้ทำเช่นนี้จริงๆ
ดังนั้นฉันจึงลองใช้ sqlplus ผ่านกระบวนการวางไข่ ... อย่างไรก็ตามถ้าฉันวางไข่กระบวนการด้วย UseShellExecute ที่ตั้งค่าเป็น sqlplus จริงจะหยุดและไม่เคยออก นี่คือรหัสที่ไม่ทำงาน
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;
bool started = p.Start();
p.WaitForExit();
WaitForExit ไม่มีวันส่งคืนยกเว้นว่าฉันตั้ง UseShellExecute เป็นจริง ผลข้างเคียงของ UseShellExecute คือคุณไม่สามารถดักจับเอาต์พุตที่เปลี่ยนทิศทางได้