问题一:在不指定varchar长度的情况下,默认是多少size?
sql code:
declare @payload varchar, @bin_payload varbinary(max);
set @payload='郑州网建camnpr';
set @bin_payload = convert(varbinary(max),@payload);
select @bin_payload;
select CONVERT(varchar(max),@bin_payload);
这段代码输出什么?有什么问题吗?
问题原因是:
如果未在数据定义或变量声明语句中指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30。 (在联机丛书上可以查到 -- http://technet.microsoft.com/zh-cn/sqlserver/bb428874.aspx)
由此我想得知,在c#中的SqlParameter定义的varchar 如果没有指定长度,那么默认的是多少size呢?
代码形式:
SqlParameter[] myparams = new SqlParameter[]{
new SqlParameter("@Camnpr",SqlDbType.VarChar),
new SqlParameter("@State",SqlDbType.TinyInt)
};
myparams[0].Value = "郑州网建camnpr"; //此处的值能否添加到数据库里吗? 测试表示可以。(已最终数据库里字段定义长度为准, 那么SqlParameter里没有检验长度对比吗?)
myparams[1].Value = 1;
问题二:varchar(max) 在 C# 的SqlParameter怎么表示
varchar(int size) 默认最大值 8000,英文字符占一个字节,中文字符占两个字节
nvarchar(int size) 默认最大值 4000,前面加 n 表示所有字符都占有两个字节
用 DbType.varchar, -1