我正在开发一个连接到SQL Server数据库的C#Win-forms应用程序。我有一种情况,我必须从Excel工作表中解析数据并搜索表的所有列中的每个值。最后显示其值匹配的表行。
现在我正在做的是
请指导我,这是一种有效的方式,还是给我一个有效实现它的建议。
答案 0 :(得分:2)
您可以使用Table Valued
参数,而不是在SQL中,您可以对传递的表使用cursor
或loop
,并搜索SQL表中的每一列。这是一个简单的例子。
在数据库中创建新的Tpye
CREATE TYPE [dbo].[SearchInDB] AS TABLE(
[Id] [int] NOT NULL
)
在SP中,您将从C#代码传递此类型。您的SP会像这样收到它
ALTER PROCEDURE [dbo].[YourSPNameHere]
@DataToSearch dbo.SearchInDB ReadOnly
AS
BEGIN
--Your SP logic here
END
在您的代码中,您将创建一个DataTable
并使用值填充数据表并将其传递给SP,就像这样
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
//Add rows in datatable with values
DataRow dr = dt.NewRow();
dr["Id"] = 10;
dt.Rows.Add(dr);
//Now pass this table to SP as parameter
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@DataToSearch";
parameter.SqlDbType = System.Data.SqlDbType.Structured;
parameter.Value = dt;
注意强>
如果需要,我只添加了一列您必须添加其他列。要从传递给SP的参数中获取值,您必须使用循环或使用游标。 Here是另一个示例的链接
答案 1 :(得分:0)
您可以使用SQL Server SSIS包直接将excel导入数据库表,并可以使用存储过程中的循环或游标搜索表