Tolong adakah yang bisa mengarahkan saya ke arah yang benar. Saya ingin memeriksa apakah kolomnya ada, jika demikian lakukan ini pilih yang lain lakukan pilih yang lain

    select case 
   when exists (
      SELECT *
      FROM Sys.columns c 
      WHERE c.[object_id] = OBJECT_ID('dbo.Municipality') 
         AND c.name = 'AmountTypeLabel'
   )  
   then 1
   else 0
 end

Ini Memeriksa apakah kolom ada dan kemudian mengembalikan 0 atau 1 tetapi tidak ada nama kolom jadi saya tidak bisa memeriksanya di C #

Inilah yang saya coba di C # tetapi seperti yang saya katakan sebelumnya tidak ada nama kolom

DataTable DT;
        string SQL = "";
        try
        {

            SQL = "select case " +
                  " when exists( " +
                  "  SELECT 1 " +
                  "  FROM Sys.columns c " +
                  " WHERE c.[object_id] = OBJECT_ID('dbo.Municipality')" +
                  "  AND c.name = 'AmountTypeLabel'" +
                  ")" +
                  " then 1 " +
                  " else 0 " +
                  " end ";
            DT = Conn.ExecuteDT(SQL);
        }
        catch (Exception ex)
        {
            throw new Exception("Unable to get Tables", ex);
        }
        return DT;
    }
0
Dev 2 Juni 2020, 10:54

1 menjawab

Jawaban Terbaik

Dengan kode yang ada, Anda dapat mengambil nilainya dengan menggunakan yang di bawah ini dan menggunakannya di fungsi lain:

if(DT.Rows[0][0].ToString() == "1")
 //Do Something

ATAU Anda dapat menggunakan SQL Alias dalam query SQL Anda seperti di bawah ini :

" end AS ColumnExists";

Dan kemudian Anda dapat merujuk ini di fungsi Anda yang lain. Contoh cuplikan di bawah -

 if(DT.Rows[0]["ColumnExists"].ToString() == "1")
    //Do Something

On a side note jika persyaratannya adalah hanya mengambil 1 or 0 dari server SQL, gunakan ExecuteScalar seperti yang disebutkan oleh Matteo1010 dalam komentar.

 var columnExists = cmd.ExecuteScalar();
 if(columnExists.ToString() == "1")
  //Do Something
0
MBB 2 Juni 2020, 14:50