我正在使用四個輸入參數創建Web API。輸入參數將在Select語句的where子句中使用。Oracle中的字段爲ROOM (Varchar),SUBMIT_DATE(Date)(eg:01-JAN-16)
。 URL應該是`/ api/TGSSampleDatas?Room = 654 & SUBMITDATE = '01 -Jan-16'。因此,在C#中,我創建與獲取動作控制器像獲取輸入參數以查詢Oracle數據庫的Web API
public class TGSSampleDatasController : ApiController
{
[HttpGet]
public HttpResponseMessage Getdetails(string ROOM,DateTime ? SUBMITDATE = null)
{
List<OracleParameter> prms = new List<OracleParameter>();
List<string> selectionStrings = new List<string>();
string connStr = ConfigurationManager.ConnectionStrings["TGSDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var strQuery = "SELECT * from LIMS_SAMPLE_RESULTS_VW where ROOM = " + ROOM +"and SUBMIT_DATE =" +"'"+SUBMITDATE+"'";
var returnObject = new { data = new OracleDataTableJsonResponse(connStr, strQuery, prms.ToArray()) };
var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json"));
ContentDispositionHeaderValue contentDisposition = null;
if (ContentDispositionHeaderValue.TryParse("inline; filename=TGSData.json", out contentDisposition))
{
response.Content.Headers.ContentDisposition = contentDisposition;
}
return response;
提示以下錯誤:在提琴手 {"Message":"The request is invalid.","MessageDetail":"The parameters dictionary contains a null entry for parameter 'SUBMITDATE' of non-nullable type 'System.DateTime' for method 'System.Net.Http.HttpResponseMessage Getdetails(System.String, System.DateTime)' in 'TGSSampleData.Controllers.TGSSampleDatasController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."}
重複的問題,你可以在這裏找到解決方案:http://stackoverflow.com/questions/11862069/optional-parameters-in-asp-net-web-api – Turrican
@Div當我嘗試/ api/TGSSampleDatas?房間= 654&SUBMITDATE = 01-Jan-16錯誤說'在Oracle.ManagedDataAccess.dll中發生類型'Oracle.ManagedDataAccess.Client.OracleException'的異常,但未在用戶代碼中處理' – trx
這不是實際的錯誤,請看你的堆棧跟蹤。 –