【问题标题】:Which datatype and which insertion parameter for large data大数据的数据类型和插入参数
【发布时间】:2012-07-08 00:50:25
【问题描述】:

我的数据记录中的一个字段可以通过 nvarchar 的 8000 个字符的限制,并寻找一个更大的数据类型,例如大约 9000 个字符,有什么想法吗? 起初我使用NvarChar(8000),在找到一些可以通过此边界后我使用NText 看看接下来会发生什么,使用 Entity Framework 似乎可以在不定义任何 Insert statementData Adapter 的情况下完成预期的工作,在编程期间,系统更改为数据适配器,我应该使用 Insert 命令完成这项工作,现在定义的参数是这样的:

cmdIns.Parameters.Add("@story", SqlDbType.NText, 16, "Story")

似乎 16 的限制会在使用 EF 时自动增加,但不使用 Data Adapter(它只是插入 16 个字符的数据 em>), 真的不知道(不记得) EF 的测试是否通过了大于 8000 的项目? 如果是这样,我很好奇原因。

情况是决定在这个大数据字段的插入点上使用正确的数据类型及其等效的工作参数

注意:这里使用的是 SQL Server CE


编辑:

对不起,我当时不得不去, 应该使用的数据类型是NTEXT,这里别无选择 但是定义**insertion Statement and parameter** 有点麻烦, 不幸的是,没有一个建议的方法可以像我给出的那样完成所需的工作。

  • 如果不定义长度就会出错(运行时)!
  • 并且使用 AddWithValue 无法使用 DataAdapter 并进行批量插入。 也许我必须把它放在另一个问题中,但这是这个问题的一部分,这里的工作答案可能是完整的。 有什么想法吗?

【问题讨论】:

  • 你不能避免说明尺寸吗?我认为只接受名称、类型和值是一种重载。
  • 似乎应该是对的,我想以这种方式进行测试,但忘了以这种方式进行测试,但我认为我应该创建一个新的参数实例,并在它的构造函数中传递 2 参数并省略说大小。
  • 这是我的想法,我正在尝试,无论如何如果您确定给出的方法,请发布并给出定义我会标记它。

标签: c# sql-server sql-server-ce dataadapter


【解决方案1】:

如果我正确理解了您的问题,您应该可以做这样的事情,因为没有必要省略尺寸:

cmdIns.Parameters.Add( new SqlParameter( "story", SqlDbType.NText )
{
    Value = yourVariable;
} );

【讨论】:

  • +1,这个问题的第一个参与者,谢谢,似乎其他 2 个答案比这个想法更接近最佳实践,将在最后一个回复之前尝试所有。
  • 运行时会报错
  • 什么样的错误?我刚刚检查过,我一直使用如上所示的代码。 cmdIns 是什么类型(我假设是 SqlCommand)?
  • 据说值不能为空,可能又是SQL CE的另一个问题!
  • 现在你提到了 SQL CE,我记得你必须以不同于 SQL Server 的方式处理空值。如果我没记错的话,你必须明确分配DBNull.Value,以防你的任何参数为空。
【解决方案2】:

只要您想通过指定参数的名称和值来添加参数,请使用 AddWithValue。像这个 command.Parameters.AddWithValue("@story", story);

【讨论】:

  • 这是我在类似情况下很长时间以来首选的方法,但在这里它不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 2015-05-22
  • 1970-01-01
  • 2023-04-07
  • 2020-08-15
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多