首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteScalar和ExecuteNonQuery冲突

ExecuteScalar和ExecuteNonQuery冲突
EN

Stack Overflow用户
提问于 2019-04-05 22:00:27
回答 2查看 51关注 0票数 2

我遇到了ExecuteScalar的问题,它不允许我使用ExecuteNonQuery,但我必须执行两个查询来获取另一个表中所选项目的日期范围之间的最小日期(dateStart9 )和最大日期(DateEnd)。

代码语言:javascript
复制
sqliteCon.Open();
  if (sqliteCon.State == System.Data.ConnectionState.Open)
  {
    //query date non va a causa dell'execute scalar
    SqlCommand cmdDS = new SqlCommand("SELECT MIN(DateStartSE) AS DATESE FROM tabStoreExec JOIN tabList ON tabStoreExec.idSE=tabList.idL WHERE tabList.selection=1", sqliteCon);
    SqlCommand cmdDE = new SqlCommand("SELECT MAX(DateEndSE) AS DATEED FROM tabStoreExec JOIN tabList ON tabStoreExec.idSE=tabList.idL WHERE tabList.selection=1", sqliteCon);
    cmdDS.Parameters.AddWithValue("@DATESE", " DATESE");
    cmdDE.Parameters.AddWithValue("@DATEED", "DATEED");
    cmdDS.ExecuteNonQuery();
    cmdDE.ExecuteNonQuery();


  SqlCommand cmd1 = new SqlCommand("INSERT INTO tabStoricoDetail(NomeItem,ResItemDet,DateStartDet,DateEndDet) OUTPUT inserted.Id VALUES ('Prova','RProva',@DATESE,@DATEED)", sqliteCon);
  int generatedId = Convert.ToInt32(cmd1.ExecuteScalar());
  cmd1.Parameters.Clear();
  SqlCommand cmd2 = new SqlCommand("UPDATE tabStoreExec SET FK_TSD_id = @tsdId FROM tabList JOIN tabStoreExec ON tabList.idL = tabStoreExec.idSE WHERE tabList.selection=1 ", sqliteCon);
  cmd2.Parameters.AddWithValue("@tsdId", generatedId);
  cmd2.ExecuteNonQuery();

    MessageBox.Show("Dato Aggiunto");

  }
  sqliteCon.Close();

我已经接近解决方案了,但错误是声明标量变量“@DATESE”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-05 22:08:21

似乎应该将参数添加到cmdDScmdDEcmd1 instad中。不过,您应该调用ExecuteScalar()从这些命令中获取一个值:

代码语言:javascript
复制
SqlCommand cmdDS = new SqlCommand("SELECT MIN(DateStartSE) AS DATESE FROM tabStoreExec JOIN tabList ON tabStoreExec.idSE=tabList.idL WHERE tabList.selection=1", sqliteCon);
SqlCommand cmdDE = new SqlCommand("SELECT MAX(DateEndSE) AS DATEED FROM tabStoreExec JOIN tabList ON tabStoreExec.idSE=tabList.idL WHERE tabList.selection=1", sqliteCon);
var DATESE = cmdDS.ExecuteScalar();
var DATEED = cmdDE.ExecuteScalar();


SqlCommand cmd1 = new SqlCommand("INSERT INTO tabStoricoDetail(NomeItem,ResItemDet,DateStartDet,DateEndDet) OUTPUT inserted.Id VALUES ('Prova','RProva',@DATESE,@DATEED)", sqliteCon);
cmd1.Parameters.AddWithValue("@DATESE", DATESE);
cmd1.Parameters.AddWithValue("@DATEED", DATEED);
票数 2
EN

Stack Overflow用户

发布于 2019-04-05 22:03:33

在执行之前,需要将参数@DATESE,@DATEED添加到cmd1中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55537095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档