使用 C# 在 Oracle 数据库上执行 SQL 文件
Execute SQL file on Oracle database using C#
我在 script.sql
文件中编写了 SQL 脚本来创建程序。此 script.sql
文件位于应用程序路径中。
现在我已经用 C# 编写了一个创建数据库连接的工具。我想通过此连接 运行 带有代码的脚本文件。这可能吗?
private OracleConnection oraCon = new OracleConnection();
...
// ORACLE VERBINDUNG
try
{
if (oraCon.State != ConnectionState.Open)
{
oraCon.ConnectionString = "Data Source=" + tboServername.Text + "/" +
tboDatenbank.Text + ";User Id=" + tboLogin.Text + ";Password=" + tboPasswort.Text;
oraCon.Open();
}
}
catch (Exception ex)
{
Errorlog(ex.ToString());
}
我可以将 script.sql
直接传输到 OraCon 连接吗?或者也许还有其他方法?
您可以,但可能不直接 - 请记住,不同语句之间的分隔符(例如 ; 或 /)在 oraclecommand 中是不允许的,因此如果您的脚本有多个语句由某些东西分隔,那么脚本应该拆分那件事和 运行 中的每个语句分开。如果您的脚本创建存储过程并因此在其中添加分号,因为它们是存储过程的一部分,您可以将整个脚本包装在 '
中并立即执行它
基本上如果你有一些像
这样的脚本文件
CREATE PROCEDURE BLAH .. semicolons blah..
/
CREATE PROCEDURE BLAH2 .. semicolons blah..
您正在寻找这样的东西:
var statements = File.ReadAllText(path).Split("\n/");
foreach(var statement in statements)
new OracleCommand($"EXECUTE IMMEDIATE '{statement}'", connection).ExecuteNonQuery();
您也许还可以选择让 sqlplus 命令行工具运行您的脚本
我在 script.sql
文件中编写了 SQL 脚本来创建程序。此 script.sql
文件位于应用程序路径中。
现在我已经用 C# 编写了一个创建数据库连接的工具。我想通过此连接 运行 带有代码的脚本文件。这可能吗?
private OracleConnection oraCon = new OracleConnection();
...
// ORACLE VERBINDUNG
try
{
if (oraCon.State != ConnectionState.Open)
{
oraCon.ConnectionString = "Data Source=" + tboServername.Text + "/" +
tboDatenbank.Text + ";User Id=" + tboLogin.Text + ";Password=" + tboPasswort.Text;
oraCon.Open();
}
}
catch (Exception ex)
{
Errorlog(ex.ToString());
}
我可以将 script.sql
直接传输到 OraCon 连接吗?或者也许还有其他方法?
您可以,但可能不直接 - 请记住,不同语句之间的分隔符(例如 ; 或 /)在 oraclecommand 中是不允许的,因此如果您的脚本有多个语句由某些东西分隔,那么脚本应该拆分那件事和 运行 中的每个语句分开。如果您的脚本创建存储过程并因此在其中添加分号,因为它们是存储过程的一部分,您可以将整个脚本包装在 '
中并立即执行它
基本上如果你有一些像
这样的脚本文件CREATE PROCEDURE BLAH .. semicolons blah..
/
CREATE PROCEDURE BLAH2 .. semicolons blah..
您正在寻找这样的东西:
var statements = File.ReadAllText(path).Split("\n/");
foreach(var statement in statements)
new OracleCommand($"EXECUTE IMMEDIATE '{statement}'", connection).ExecuteNonQuery();
您也许还可以选择让 sqlplus 命令行工具运行您的脚本