![](/img/trans.png)
[英]How to call stored procedure with parameters asp.net on web api?
[英]Call MySql stored procedure which take 2 parameters from asp.net core 2.2 web API controller
什么是调用具有 2 个参数的存储过程并返回包含 10 列和 403 条记录的结果的正确方法。
下面是我写的代码。
try
{
string startDate = procedureResource.StartDate.ToString("yyyy-MM-dd") + " 00:00:00";
string endDate = procedureResource.EndDate.ToString("yyyy-MM-dd") + " 23:59:59";
var FromDate = new MySqlParameter("@FromDate", startDate);
var ToDate = new MySqlParameter("@ToDate", endDate);
var financial = context.Query<FinancialResource>().FromSql("EXECUTE GetChargesFromToDate @FromDate,@ToDate", FromDate, ToDate).ToList();
return financial;
}
catch(Exception ex) { Console.Write(ex);throw ex; }
这是例外
{“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 ''2019-09-28 00:00:00','2019-10-04 23: 附近使用的正确语法59:59'' 在第 1 行"}
尝试将 startDate 和 endDate 变量声明为 DateTime 而不是字符串。 您可能会发送 SQL 提供商不接受的日期/时间格式。
您可以尝试这样的事情(我假设 procedureResource.StartDate/EndDate 属于 DateTime 类型):
DatetTime startDate = procedureResource.StartDate.Date;
DateTime endDate = procedureResource.EndDate.Date.Add (new TimeSpan (23, 59, 59));
在查询中将 EXECUTE 更改为 CALL
`try
{
var fromDate = resource.StartDate.ToString("yyyy-MM-dd") + " 00:00:00";
var toDate = resource.EndDate.ToString("yyyy-MM-dd") + " 23:59:59";
string connectionstring = "Server=dbwithriderinstance.crefat3b9j9c.ap-southeast-1.rds.amazonaws.com;Database=dborderstage;User=stagging_su_production_s;Password=85s2!892Stfe7";
using (MySqlConnection con = new MySqlConnection(connectionstring))
{
using (MySqlCommand cmd = new MySqlCommand("GetChargesFromToDateV2", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FromDate", fromDate);
cmd.Parameters.AddWithValue("@ToDate", toDate);
using (MySqlDataAdapter dbr = new MySqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
dbr.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex) { Console.Write(ex); throw ex; }
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.