【发布时间】:2015-02-27 13:26:54
【问题描述】:
我有一个包含以下代码的 .sql 脚本
-- Drop stored procedure if it already exists
USE Temp
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE SPECIFIC_SCHEMA = N'Custom'
AND SPECIFIC_NAME = N'RestoreVersion'
)
DROP PROCEDURE Custom.RestoreVersion
GO
CREATE PROCEDURE Custom.RestoreVersion
@ID INT
AS
SELECT * FROM [App].[Version] WHERE ID = @ID
DROP PROCEDURE Custom.RestoreVersion
GO
EXECUTE Custom.RestoreVersion @ID = [ID from c# program]
GO
我想获取这个文件并在 c# 中设置@ID 参数,然后运行 sql 脚本。
我希望这个脚本存在于我的应用程序的一个文件夹中,但我无法让它工作。
我试过这个。
Console.Write(Server_Name + Environment.NewLine);
connectSqlServer(Server_Name);
SqlDataReader rdr = null;
Console.WriteLine("\nGet Version\n");
try
{
SqlCommand cmd = new SqlCommand("Custom.RestoreVersion", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@ID", ID));
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(Values);
}
}
finally
{
if (conn != null)
{
conn.Close();
}
if (rdr != null)
{
rdr.Close();
}
}
但是我无法从资源文件夹中读取文件并将参数输入数据库。
【问题讨论】:
-
程序自行删除?你得到了什么错误
-
代码中没有可以从文件中读取的内容,因此它不会读取也就不足为奇了。为什么你认为它会?
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
另外脚本只创建存储过程,它不运行它,因此不需要参数有值。我不明白这两个方面是如何匹配的
-
是的,proc 会自行删除,因为我们不想在最后将程序留在服务器上,这显然是完整 proc 的一小部分。我已经编辑了问题,结果是副本和过去无法正常工作,所以错过了。我在最后运行它。 @Guffa对不起,我的问题是如何让它从文件中读取,因为每当我尝试从文件中读取时,我只能读取到字符串,或者你会读取到字符串然后在字符串中进行替换?感谢应有的注意。
标签: c# sql-server parameter-passing