【问题标题】:How do i pass a text file to as a parameter to a stored procedure from WinForm? [closed]如何将文本文件作为参数从 WinForm 传递给存储过程? [关闭]
【发布时间】:2015-02-04 23:10:51
【问题描述】:
  1. 是否可以将csv 值的文本文件 发送到存储过程 中的参数
    1. 如何将文本文件winforms发送到存储 程序
    2. 如何在存储过程中创建一个参数来接受 那个文本文件

谢谢

【问题讨论】:

  • 1.是的。 2. 取决于存储过程。 3. 取决于你想如何传递一个文本文件。
  • @GrantWinney 该文件包含 3 列和 50 行的 csv 格式。我想要做的是将文件直接传递到存储过程中,就像传递图像一样,所以我不必创建一个单独的字符串来希望从存储过程中提取文本文件的数据
  • @Neolisk 假设我想将文件作为文件而不是字符串发送,我该怎么做?
  • 您不能将文件作为文件发送。一个字节数组 - 也许。看看这个 - Uploading and downloading files to/from a SQL Server database.
  • “作为文件发送”是什么意思?

标签: c# sql-server winforms tsql


【解决方案1】:

您可以将文件的路径作为简单的“nvarchar(260)”参数传递到存储过程中,尽管 Sql Server 进程需要对该文件路径具有读取权限(即,您需要复制它从 WinForms 应用程序到 sql server 本身上的共享,或者它需要位于 Sql Server 帐户有权访问的网络共享上)。

一旦您在存储过程中获得了路径,您就可以使用批量插入过程;请参阅此线程,了解如何在存储过程中使用批量加载: Bulk insert using stored procedure 或此线程将其加载到临时表中以使用:How to BULK INSERT a file into a *temporary* table where the filename is a variable?

话虽如此,更好的方法是在 WinForms 应用程序中将 CSV 文件转换为 Xml,然后将 Xml 作为字符串传递给存储过程。 Sql Server 2005 及更高版本对 Xml 参数有很好的支持,使您能够查询它们。 (我个人会采用后一种方法)。 Xml 类型只是可用的参数类型之一,因此您最终会像传递字符串参数一样传递它。在存储过程中使用 Xml 将比 CSV 更容易(并且得到更好的支持)。

【讨论】:

  • 一个重要的观察是任何通过的路径都将被解释为服务器端。也就是说,它们将与数据库运行所在的框相关,而不是调用应用程序。从远程机器进行调用时,这些路径将完全中断(即使它们似乎在所有东西都安装在一起的开发环境中工作)
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多