【发布时间】:2021-05-03 07:47:23
【问题描述】:
当我试图获取机器地址的特定数据值时,我无法获取此值
ALTER PROCEDURE [dbo].[Datade]
@makineadı varchar,
@startdate datetime
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM HMI.[dbo].Tarihmakine
WHERE MakineAdı = @makineadı
AND Tarih = @startdate
END
我在这个 API 控制器中使用了这个存储过程,通常当我试图获取所需的 SQL 数据日期时,我可以提取它,但是当我尝试对机器名的字符串格式进行字符串处理时,我认为我无法获取此数据这是由双引号引起的,但我无法将其转换为单引号 ''
public class RaporController : ApiController
{
public IHttpActionResult Getemprecords(string makineadı, DateTime? startdate)
{
HMIEntities1 sd = new HMIEntities1();
var results = sd.Data(makineadı, startdate).ToList();
return Ok(results);
}
}
我使用此网页获取特定值 https://localhost:44355/api/rapor?makineadı=192.168.0.8&&startdate=2021-01-29
这是我的数据库enter image description here
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
-
sd.Data是做什么的?这是执行存储过程并处理结果的方法。如果编写得当,即如果它使用参数化查询,则根本不需要转换或引用 -
我认为这只是字符串(varchar)格式问题引起的,因为当我尝试根据 DateTime 值获取数据时不会出错。 sd.Data 是我在第一个查询中添加到下面的存储过程的数据表示名称
-
我添加我的数据库图片只是为了尝试获取值。我再次说我只有机器名称(MakineAdı)的问题。
-
Bad habits to kick : declaring VARCHAR without (length) - 您应该始终为您使用的任何
varchar变量和参数提供一个长度。否则,您的参数将具有 1 个字符的默认长度!
标签: c# sql asp.net-mvc