我们创建了用于查询Oracle数据库的WebAPI.查询返回巨大的结果,因此有时会抛出OutOfMemoryException.
建议是使用Paging概念.我不明白客户端应用程序将如何知道必须调用API多少次才能获得整个结果集.我还需要为分页创建一个单独的类,还是可以在我的API控制器中操作它.
任何人都可以帮我这个,因为这是我的第一个Web API.我们无法为此创建存储过程,因为我们只对数据库具有读访问权限
public HttpResponseMessage Getdetails([FromUri] string[] id)
{
string connStr = ConfigurationManager.ConnectionStrings["ProDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
var inconditions = id.Distinct().ToArray();
var srtcon = string.Join(",", inconditions);
DataSet userDataset = new DataSet();
var strQuery = @"SELECT * from STCD_PRIO_CATEGORY where STPR_STUDY.STD_REF IN(" + srtcon + ")";
using (OracleCommand selectCommand = new OracleCommand(strQuery, dbconn))
{
using (OracleDataAdapter adapter = new OracleDataAdapter(selectCommand))
{
DataTable selectResults = new DataTable();
adapter.Fill(selectResults);
var returnObject = new { data …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中为JSON响应创建一个C#对象.我有如下的JSON
{
"@odata.context": "https://example.com/odata/$metadata#REQ",
"value": [
{
"Id": 17,
"Name": "Req"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何创建C#对象 @odata.context
public class RootObject
{
public string @odata.context { get; set; }
public List<Value> value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它会在@ odata.context中抛出错误
我正在尝试使用 aspnet_regiis 加密 web.config 文件中给出的连接字符串。所以我试图打开 aspnet_regiis.exe
aspnet_regiis -pe "connectionStrings" -app "/NewTestAPI" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)
或者
aspnet_regiis -pe "connectionStrings" -app "/E:/Dropbox/NewTestAPI" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误,指出“无法为请求的配置对象创建配置文件。失败!” 我什至尝试共享文件夹
aspnet_regiis -pe "connectionStrings" -app "/\\ABC\NewTestAPI" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)
即使这会引发相同的错误,无法为请求的配置对象创建配置文件。失败!”
下面是我拥有的 connectionStrings
<connectionStrings>
<add name="ProConnection" connectionString="Data Source=J;User Id=T;Password=C;pooling=true;min pool size=5;Max Pool Size=60" providerName="Oracle.DataAccess.Client"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我还尝试提供站点的物理路径以及站点 ID,如图所示,但错误相同
aspnet_regiis -pe "connectionStrings" -app "/E:\Dropbox\ABC\TestAPI" -site "3" -prov "RsaProtectedConfigurationProvider"
我们正在构建一个Web API,它接收字符串数组作为输入参数,该参数查询oracle数据库并将结果作为JSON文件返回.
所以代码就像
namespace PDataController.Controllers
{
public class ProvantisDataController : ApiController
{
public HttpResponseMessage Getdetails([FromUri] string[] id)
{
List<OracleParameter> prms = new List<OracleParameter>();
string connStr = ConfigurationManager.ConnectionStrings["PDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
var inconditions = id.Distinct().ToArray();
var srtcon = string.Join(",", inconditions);
DataSet userDataset = new DataSet();
var strQuery = @"SELECT
STCD_PRIO_CATEGORY_DESCR.DESCR AS CATEGORY,
STCD_PRIO_CATEGORY_DESCR.SESSION_NUM AS SESSION_NUMBER,
Trunc(STCD_PRIO_CATEGORY_DESCR.START_DATE) AS SESSION_START_DATE,
STCD_PRIO_CATEGORY_DESCR.START_DATE AS SESSION_START_TIME ,
Trunc(STCD_PRIO_CATEGORY_DESCR.END_DATE) AS SESSION_END_DATE,
FROM
STCD_PRIO_CATEGORY_DESCR,
WHERE
STCD_PRIO_CATEGORY_DESCR.STD_REF IN(";
StringBuilder sb = new StringBuilder(strQuery);
for(int x …Run Code Online (Sandbox Code Playgroud) 我在biztalk map中使用下面的脚本functoid将字符串转换为dateTime
public DateTime? ConvertOpenDate(string openDate)
{
DateTime oDate;
if (!DateTime.TryParseExact(openDate, "yyyy-MM-DD HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out oDate))
{
return null;
}
else
{
return oDate;
}
}
Run Code Online (Sandbox Code Playgroud)
但这是错误的说法
扩展函数不能返回空值.
怎么处理这个.我将日期时间插入到MS SQL DB中
我使用以下代码
public HttpResponseMessage Getdetails([FromUri] string[] Column)
{
List<string> selectionStrings;
var colDict = new Dictionary<string, string>()
{
{"CATEGORY", "STCD_PRIO_CATEGORY_DESCR.DESCR"},
{"SESSION_NUMBER", "STRS_SESSION3.SESSION_NUM"},
{"SESSION_START_DATE","Trunc(STRS_SESSION3.START_DATE)"}
};
foreach (string col in Column)
{
string selector = colDict[col];
selectionStrings.add(string.Format("{0} AS {1}", selector, col));
}
var strQuery = string.Format(@"SELECT {0}
from STCD_PRIO_CATEGORY");
}
Run Code Online (Sandbox Code Playgroud)
但是得到了错误
selectionStrings.add(string.Format("{0} AS {1}", selector, col));
Run Code Online (Sandbox Code Playgroud)
话
'System.Collections.Generic.List'不包含'add'的定义,也没有扩展方法'add'接受类型'System.Collections.Generic.List'的第一个参数(你是否缺少using指令或装配参考?)
我尝试添加,using System.Collections.Generic.List但它不起作用
c# ×6
asp.net ×3
asp.net-mvc ×3
json ×2
biztalk ×1
biztalk-2013 ×1
datetime ×1
encryption ×1
oracle ×1
paging ×1
sql-server ×1