给出文件中存储过程的输入参数
本文关键字:输入 参数 存储过程 文件 | 更新日期: 2023-09-27 18:13:16
我有一个有3个参数的存储过程,我认为我在存储过程的第一个参数上做得不对。
string path = @"D:'test2";
var ngd = Directory.EnumerateFiles(path, "*.txt").Select(file => File.ReadAllLines(file)).FirstOrDefault();
using (SqlConnection connection = new SqlConnection("Data Source=;Initial Catalog=;User ID=;Password="))
{
using (SqlCommand cmd = new SqlCommand("usp_SaveData", connection))
{
try
{
await Task.Delay(1500);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@request_xml", SqlDbType.NVarChar, 999999).Value = ngd;
cmd.Parameters.Add("@ST", SqlDbType.NVarChar, 50).Value = MachineName;
cmd.Parameters.Add("@SN", SqlDbType.NVarChar, 50).Value = listBoxItem;
cmd.ExecuteNonQuery();
MessageBox.Show("Good");
connection.Open();
}
catch
{
MessageBox.Show("Verification failed!");
}
}
}
我在SQL中运行了我的存储过程,一切都很好,我运行了一个不同的过程,只需要@ST
, @SN
,它工作了,但现在在这个过程中,我给request_xml
作为
var ngd = Directory.EnumerateFiles(path, "*.txt").Select(file => File.ReadAllLines(file)).FirstOrDefault();
it's not working…
我的问题是,我是否应该将文件中的数据存储在变量中?是否有一种"正确的方法"将文件存储在可以由输入参数使用的变量中?
问题是您正在使用ReadAllLines
,它返回string
的array
,每个元素都是文件中的一行。
所以在下一行中你实际上传递的是string[]
而不是string
cmd.Parameters.Add("@request_xml", SqlDbType.NVarChar, 999999).Value = ngd;
您应该使用ReadAllText
代替,它返回单个string
var ngd = Directory.GetFiles(path, "*.txt").Select(file => File.ReadAllText(file)).FirstOrDefault();