gpt4 book ai didi

c# - 如何通过 C# 代码在 MySql 中创建存储过程

转载 作者:行者123 更新时间:2023-11-30 23:03:56 25 4
gpt4 key购买 nike

我正在用 c# 构建一个程序,它从 MYSQL 的 sql 文件中执行代码。该 sql 文件创建一个存储过程,如:

DELIMITER **
USE MyDB**

DROP PROCEDURE IF EXISTS sp_msstudy_Update**


Create Procedure XXXXXXXXXXXXXXXXX
(
_cad varchar(250)
)

Begin
SET @dSQL = CONCAT('ALTER TABLE ', 'mytable',' ADD createdon DATETIME DEFAULT now() NOT NULL');
PREPARE stmt FROM @dSQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
End
**

DELIMITER ;

我有一个读取行的函数。 obiously 在循环中我设置了一些代码,比如

line += readedline + "\n";

最后我执行代码:ExecuteNonQuery of MysqlCommand。连接和一切正常但是当我执行 sql 来创建存储过程时给我一个语法错误:

 C:\PROYECTOS\DB\MySQL\97 xxxx .sql: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP PROCEDURE IF EXISTS sp_msstudy_Update 
Create Procedure XXXXXXXXXXXXXXXX' at line 2

我在读取 sql 后调用字符串的 C# 代码是:

MySqlConnection conn = null;
MySqlCommand cmd = null;

var connectionstring = "Server=localhost;Port=3306;Database=test;Uid=root;Pwd=root;";
try
{

using (conn = new MySqlConnection(connectionstring))
{
conn.Open();

using (cmd = new MySqlCommand(mysqlsql, conn))
{
cmd.ExecuteNonQuery();

}

conn.Close();

}

}
catch (Exception ex)
{
throw ex;
}
finally
{

cmd.Dispose();
conn.Close();
conn.Dispose();
}

读取我使用的sql文件:

private string LeerFichero(string sqlfile, bool sp)
{
string res = "";
string line;
try
{
System.IO.StreamReader file = new System.IO.StreamReader(sqlfile);

while ((line = file.ReadLine()) != null)
{
res += line + "\n";
}
file.Close();
}
catch (Exception ex)
{
throw ex;
}

return res;
}

你能帮帮我吗?

我更改了程序,出现新错误。我必须跳过 DROP 错误,但现在给了我:

C:\PROYECTOS\DB\MySQL\99.sysauditoria.SP.sql: Parameter '@dSQL' must be defined.

最佳答案

我找到了我正在寻找的解决方案:

MySqlScript script = new MySqlScript(conn, query);
script.Delimiter = "$$";
script.Execute();

where query 我会将我的 sql 文件设置为字符串。使用此系统创建的存储过程。

关于c# - 如何通过 C# 代码在 MySql 中创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com