c# - 根据参数将SQL表中的数据拉取到DataTable中

标签 c# sql-server datatable tuples

我正在扩展项目中的一个类,我需要将特定数据从 SQL 表中提取到 DataTable 中。以前,数据是在一个 SQL 过程中计算和修改的,但我已经修改了这个,以便将计算的数据传递到一个新表中。现在,我正在编写一种方法,根据它的 ID 值将这些数据从数据库中提取出来。

很多代码是由另一个开发人员编写的,他对元组很感兴趣,我不太了解,这让我有点困惑。从逻辑上讲,我做过类似的事情,但我只是拉下了整个表格,而不仅仅是特定的一行。

这是我第一次使用该方法:

 public DataTable ReadSqlTableToDataTable( List<Tuple<string, string>> parameterValueMappings, DataTable dt)
    {
        string query = "SELECT *  FROM dbo.Mytable WHERE IdValue= ";

        using (var conn = new SqlConnection(_config.ConnectionString))
        {
            conn.Open();

            SqlCommand cmd = new SqlCommand(query + parameterValueMappings, conn);


            using (var da = new SqlDataAdapter(cmd))
            {
                da.SelectCommand.CommandTimeout = 600;
                da.Fill(dt);
            }
        }                           
        return dt;
    }

然后我像这样使用它:

private readonly IDbRepository _repo;
private readonly DataTable _revisedDatabTable;
private List<Tuple<string, string>> _commandParameters;
private readonly int _batchId;

public FooClass(IDbRepository repository, DataTable revisedDatabTable, int batchId) //pass in structure
    {
        _repo = repository;
        _revisedDatabTable = revisedDatabTable;
        _batchId = batchId;
    }

    public void Execute()
    {

        _commandParameters = new List<Tuple<string, string>>
        {
            new Tuple<string, string>("@IDValue",_idValue.ToString() )
        };


        _repo.ReadSqlTableToDataTable(_commandParameters, _revisedDatabTable);
    }

在最终这样调用类之前:

 new FooClass(_repo, dtRevisedData, idValue).Execute();

idValue 是通过文件读入的,并被放入我的新 SQL 表中。

现在,当我运行它时,我什么也得不到。我的表中有数据,所以我知道这不是问题所在。我觉得问题在于我如何使用元组。我设置正确了吗?如果不是,我做错了什么?

最佳答案

您误用了 SqlCommand。您不应连接字符串,而应将查询指定为字符串并使用 SqlCommand.Parameters 传递所有参数。 查看示例 here .

在你的情况下应该是这样的。没有元组,没有连接。

string query = "SELECT *  FROM dbo.Mytable WHERE IdValue = @IDValue;";

SqlCommand command = new SqlCommand(query , conn);
command.Parameters.Add("@IDValue", SqlDbType.Int);

关于c# - 根据参数将SQL表中的数据拉取到DataTable中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46847498/

相关文章:

c# - .NET - 将通用集合转换为数据表

javascript - 数据表垂直滚动问题

python - python 中的抓取显示 None 值

c# - 枚举标志属性 C#

c# - 是否可以为 MySql 和 Sql Server 提供 EF 上下文?

c# - 使用 HttpServer 测试 ASP.NET WebAPI 中的 ConfigurationManager

SQL从字符串中删除空格、非数字和第二个字符

SQL查询截断到两位小数?

c# - 为什么 Json.NET 试图反序列化我的 get only 属性?

c# - 无法初始化模拟类的成员