Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:nVarChar的SqlCeParameter DbType?_C#_.net_Sql Server Ce - Fatal编程技术网

C#:nVarChar的SqlCeParameter DbType?

C#:nVarChar的SqlCeParameter DbType?,c#,.net,sql-server-ce,C#,.net,Sql Server Ce,首先,我喜欢指定数据类型,我鄙视AddWithValue函数 我正在.NET4.0下构建一个SqlCeServer 3.5本地数据库应用程序,该应用程序将在用户PC上运行 创建表时,我使用NVarChar(50)指定字符串字段 这似乎工作得很好,我可以打开表来验证在MicrosoftSQLServerManagementStudio 2008中一切正常 当我向表中插入数据时,我使用 public static SqlCeParameter ParameterString(string Colum

首先,我喜欢指定数据类型,我鄙视
AddWithValue
函数

我正在.NET4.0下构建一个SqlCeServer 3.5本地数据库应用程序,该应用程序将在用户PC上运行

创建表时,我使用
NVarChar(50)
指定字符串字段

这似乎工作得很好,我可以打开表来验证在MicrosoftSQLServerManagementStudio 2008中一切正常

当我向表中插入数据时,我使用

public static SqlCeParameter ParameterString(string ColumnName, string value) {
  SqlCeParameter p = new SqlCeParameter();
  p.ParameterName = string.Format("@{0}", ColumnName);
  p.DataType = DbType.String;
  p.Size = 50;
  p.Value = value;
  return p;
}
插入此数据时,没有错误,但未插入数据。其他数据类型(
int
DateTime
float
等)插入时没有问题

Q:是否需要指定其他
DbType
插入为
NVarChar

SqlDbType.NVarChar
我希望这有帮助是的

SqlDbType.NVarChar

我希望这会有所帮助,
DbType
enum对于所有数据库都是通用的,因此它不包含特定于SQL Server的所有数据类型。使用
SqlDbType

SqlCeParameter p = new SqlCeParameter(ColumnName, SqlDbType.NVarChar, 50);
p.Value = value;

DbType
enum对于所有数据库都是通用的,因此它不包含特定于SQL Server的所有数据类型。使用
SqlDbType

SqlCeParameter p = new SqlCeParameter(ColumnName, SqlDbType.NVarChar, 50);
p.Value = value;

出于某种原因,有两个属性可用于设置类型,和。根据MSDN:

SqlDbType和DbType是链接的。因此,设置DbType会将SqlDbType更改为支持的SqlDbType

因此,
SqlDbType
是主要类型,只需设置
DbType
即可将其更改为接近的类型


您可能还想了解他们在指定长度大于255时遇到问题的地方。

出于某种原因,您可以使用两个属性来设置类型,以及。根据MSDN:

SqlDbType和DbType是链接的。因此,设置DbType会将SqlDbType更改为支持的SqlDbType

因此,
SqlDbType
是主要类型,只需设置
DbType
即可将其更改为接近的类型


当指定
长度
s大于255时,您可能还想了解他们在哪里遇到问题。

你们太快了!那么,对于我的
SqlCeParameter
,我是否应该将
SqlDbType.NVarChar
转换回
DbType
?现在,VS2010告诉我,“不能隐式地将类型'System.Data.SqlDbType'转换为'System.Data.DbType'。存在一个合法的转换(您是否误用了强制转换?)“如果我正在强制转换,该强制转换在
DbType
枚举中不可用吗?查看每个类型的元数据,我看到
SqlDbType.NVarChar
的值是12,
DbType
的元数据下的值12是
Int64
。{啊!}当然不是我想的那样@jp2code:根据这一点,构造函数应该采用
SqlDbType
,而不是
DbType
:+1谢谢Guffa。我只是没有一直向下滚动Intellisense在我输入“.”之后显示的属性列表(
SqlDbType
DbType
之后的列表中再向下滚动),你们太快了!那么,对于我的
SqlCeParameter
,我是否应该将
SqlDbType.NVarChar
转换回
DbType
?现在,VS2010告诉我,“不能隐式地将类型'System.Data.SqlDbType'转换为'System.Data.DbType'。存在一个合法的转换(您是否误用了强制转换?)“如果我正在强制转换,该强制转换在
DbType
枚举中不可用吗?查看每个类型的元数据,我看到
SqlDbType.NVarChar
的值是12,
DbType
的元数据下的值12是
Int64
。{啊!}当然不是我想的那样@jp2code:根据这一点,构造函数应该采用
SqlDbType
,而不是
DbType
:+1谢谢Guffa。我只是没有一直向下滚动Intellisense在键入“.”后显示的属性列表(
SqlDbType
DbType
后的列表中再向下滚动)