给出文件中存储过程的输入参数

本文关键字:输入 参数 存储过程 文件 | 更新日期: 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,它返回stringarray,每个元素都是文件中的一行。

所以在下一行中你实际上传递的是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();