试图在查询中查询,但它不起作用

时间:2014-12-02 08:01:49

标签: c# sql foreach parameter-passing

我正在尝试用SQL中的数据填充表,我必须在查询中查询才能获得预期的结果。

以下是我要做的事情:

// Queries
var transakcionet = db.Query("SELECT * FROM Ditari WHERE IDUrdheresa = @0", ID);

// IDKlientit has unique value so the below query will always return one row
var klienti = "SELECT cEmertimi_i_klientit FROM Klienti WHERE (IDKlientit = @0)";


<tbody>

@foreach(var transakcioni in transakcionet){
   <tr>
      // This works
      @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
         <td>@kontoja.cNumri_i_kontos</td>
      }
      // This is what is causing the error (i guess)
      @foreach(var klja in db.Query(klienti, transakcioni.IDKlientit)){
         <td>@klja.cEmertimi_i_klientit</td>
      }
   </tr>
</tbody>

我不知道我错过了什么。

以下是错误消息:

  

没有给出一个或多个必需参数的值。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Data.OleDb.OleDbException:没有为一个或多个必需参数指定值。

2 个答案:

答案 0 :(得分:1)

@ webber2k6是对的。 Query有一些空值。

首先,确保它不会崩溃(您的文件可能需要@using System.Linq):

@foreach(var transakcioni in transakcionet.Where(t => t.IDKontos != null && t.IDKlientit != null){
<tr>
    // This works
    @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
        <td>@kontoja.cNumri_i_kontos</td>
    }
    // This is what is causing the error (i guess)
    @foreach(var klja in db.Query(klienti, transakcioni.IDKlientit)){
        <td>@klja.cEmertimi_i_klientit</td>
    }
</tr>

但这并不能解释为什么价值首先是null。显然,只有当那些ID*属性可以为空时才有意义,我猜,这是关于你得到的错误信息的情况。

答案 1 :(得分:0)

您的代码修复无效,但您的建议已经完成!

我处理“当它为空时”,现在它按照我想要的方式工作

这就是我所做的:

@foreach(var transakcioni in transakcionet){
  <tr>
     @foreach(var kontoja in db.Query(kontoTrans, transakcioni.IDKontos)){
             <td>@kontoja.cNumri_i_kontos</td>
         }
    @if(transakcioni.IDKlientit == null){
        <td>No name</td>
    }else {
            foreach(var kli in db.Query(klienti, transakcioni.IDKlientit)){
            <td>@kli.cEmertimi_i_klientit</td>
        }}