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
后的列表中再向下滚动)