簡體   English   中英

在 C # .NET 中運行 SQL 查詢時出現問題,即使該查詢在 microsoft ZAC5C74B64B4AFFB583AZ52EF2F18 中有效

[英]Problem running SQL query in C # .NET even though the query works in microsoft sql server management studio

我收到此錯誤:

System.Data.SqlClient.SqlException: 'Incorrect syntax near the keyword 'BETWEEN'.'

這是我的查詢:

  string alertsTableCOM = "  SELECT distinct A.PM_CASE_NUMBER ,A.PM_PATIENT_NUMBER "
        +" from [VW_ER_PatientCurrentInER] A"
         +"WITH(ROWLOCK)"
         +"INNER JOIN  [NDOC] B on A.PM_CASE_NUMBER = B.FALNR"
          +"INNER JOIN [N2PMDETEXT] C"
         +"WITH(ROWLOCK)"
          +"ON C.DOKNR = B.DOKNR AND C.DOKVR = B.DOKVR"
         +"LEFT JOIN [Diagnosis_ER] E"
         +"WITH(ROWLOCK)"
         +"ON E.DOKNR = B.DOKAR and E.DOKVR = B.DOKVR"
         +"AND(SUBSTRING(E.TA_DKEY1, 1, 3) "
         +"BETWEEN @min AND @max" 
         +"OR SUBSTRING(E.TA_DKEY1, 1, 3) IN ('991', '993.4', '994.0', '994.8'))"
         +"AND ISNUMERIC(E.TA_DKEY1)= 1"
         +"AND PATINDEX('%.%',E.TA_DKEY1) = 4"
         +"WHERE CONTENT LIKE '%נפל%' OR CONTENT LIKE '%חבלה%' AND E.TA_FALNR is null; 
           ";

這是連接並執行查詢

    connection.Open();
    adap = new SqlDataAdapter(alertsTableCOM, connection);
    adap.SelectCommand.Parameters.AddWithValue("@min", 800);
    adap.SelectCommand.Parameters.AddWithValue("@max", 959);
    ds = new DataSet();
    records = ds.Tables["alertsTable"];
    adap.Fill(ds, "alertsTable");
    records = ds.Tables["alertsTable"];

我嘗試了另一個查詢並且它有效..問題是我怎么知道錯誤是什么? 謝謝

如果查詢在 MSSQL 中運行良好,您可以嘗試使用 Add() 方法而不是 AddWithValue 來指定傳遞變量的類型。

adap = new SqlDataAdapter("YOUR SELECT STATEMENT", connection);
adap.SelectCommand.Parameters.Add(new SqlParameter
{
    ParameterName = "@min",
    Value = 800,
    SqlDbType = SqlDbType.Int
});
adap.SelectCommand.Parameters.Add(new SqlParameter
{
    ParameterName = "@max",
    Value = 959,
    SqlDbType = SqlDbType.Int
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM