new SqlParameter("@content", SqlDbType.VarChar,30) 里的30,有30和没有写30有什么区别

本文探讨了在使用SqlParameter时指定参数长度的重要性。对于VarChar类型,明确指定长度有助于避免字符串截断问题;而对于Int类型,虽然不指定长度通常不会出现问题,但为确保数据准确性,合理设置长度仍被推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

new   SqlParameter( "@title ",   SqlDbType.Int,4),
new   SqlParameter( "@content ",   SqlDbType.VarChar,30),

这里的4,30,写上和没有写有什么区别吗?

 

 

4和30一般对应的数据库的大小,整型大多是4个字节,不写问题也不大

 

 

这个参数指的是参数长度,指定size则当执行cmd命令时,只传递不超过指定size的数据
比如存储过程中定义参数长度为100,commandparameter指定size为5,则执行存储过程时,存储过程接收的参数长度为5。如果不指定size,则size为数据类型的最大长度,执行上面的存储过程时,存储过程接收的参数不超过100

 

 

建议能写上就写上
不写的话,它是以默认的长度,会导致字符串丢失等问题

 

 

VarChar最好写上,我有一次程序就出现过,如果字符串超出它会截去多出的部分
Int   可以不写一般很难超出

 

来自:http://topic.youkuaiyun.com/u/20070527/09/bd116f8b-3600-491c-8656-e3e6e4ca8431.html

现在有.net6开发的api接口 代码如下using Microsoft.AspNetCore.Mvc; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using NHisApi.Models; using System.Data; namespace NHisApi.Controllers { [ApiController] [Route("api/[controller]")] public class NewClinicLabController : ControllerBase { private readonly HisContext _context; public NewClinicLabController(HisContext context) { _context = context; } public class sqd { public string patid { get; set;} public string ysdm { get; set;} public string ghks { get; set;} public string jzhm { get; set;} public string ztbh { get; set;} public string ztmc { get; set;} public string icd { get; set;} public string jbzd { get; set;} public string? jybs { get; set;} public string? jcmd { get; set;} public string? jczysx { get; set;} public string? bblx { get; set;} } [HttpPost("")] public async Task<IActionResult> NewClinicLab([FromBody] List<sqd> request) { try { var outputParam = new SqlParameter { ParameterName = "@output", SqlDbType = SqlDbType.VarChar, Size = 50, Direction = ParameterDirection.Output }; var checkIdParam = new SqlParameter { ParameterName = "@checkid", SqlDbType = SqlDbType.VarChar, Size = 50, Direction = ParameterDirection.Output }; foreach (var sqd in request) { var parameters = new[] { new SqlParameter("@patid",sqd.patid), new SqlParameter("@ysdm",sqd.ysdm), new SqlParameter("@ghks",sqd.ghks), new SqlParameter("@jzxh",sqd.jzhm), new SqlParameter("@ztbh",sqd.ztbh), new SqlParameter("@ztmc",sqd.ztmc), new SqlParameter("@icd",sqd.icd), new SqlParameter("@jbzd",sqd.jbzd), new SqlParameter("@jybs",sqd.jybs), new SqlParameter("@jcmd",sqd.jcmd), new SqlParameter("@jczysx",sqd.jczysx), new SqlParameter("@bblx",sqd.bblx), outputParam, checkIdParam }; await _context.Database.ExecuteSqlRawAsync("exec Clinic_lab_Insert_Nhis @patid,@ysdm,@ghks,@jzxh,@ztbh,@ztmc,@icd,@jbzd,@jybs,@jcmd,@jczysx,@bblx,@output output,@checkid output", parameters); } return Ok(new { resultcode = 200, message = "保存成功" }); } catch (Exception ex) { return StatusCode(500, new { resultcode = 500, message = "失败", error = ex.Message }); } } } } 我需要在执行Clinic_lab_Insert_Nhis这个存储过程后调用api接口 地址为 http://10.0.4.173:5000/api/addlis 入参为{ "jzhm":"", "doccode":"" }
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值