【发布时间】:2021-08-13 12:44:18
【问题描述】:
我正在使用 SQL 客户端将时间触发的 Azure 函数与 SQL Server 连接,但我没有得到任何数据。
这是我的代码:
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"DefaultConnection": "Data Source=; Initial Catalog=;User ID=;Password=;MultipleActiveResultSets=True;Persist Security Info=True;"
}
}
Function1.cs:
public class Function1
{
[FunctionName("Function1")]
public static async Task Run([TimerTrigger("0 45 14 * * *")]TimerInfo myTimer, ILogger log)
{
var sqlConnection = Environment.GetEnvironmentVariable("DefaultConnection");
using (SqlConnection conn = new SqlConnection(sqlConnection))
{
conn.Open();
var text = "SELECT * from UserMaster where UserId=1234";
//This query has around 50 data in the database but still getting no data in it.
using (SqlCommand cmd = new SqlCommand(text, conn))
{
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
{
while (reader.Read())
{
log.LogInformation($"{reader.GetString(0)}{reader.GetString(1)} rows selected");
Console.WriteLine("{0} {1}", reader.GetString(0), reader.GetString(1));
}
}
}
conn.Close();
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
我不明白它有什么问题。请推荐
【问题讨论】:
-
你有什么异常吗?调试期间会发生什么,尤其是 SqlConnection 和执行 SqlCommand。他们执行正确吗?我假设您在 local.settings.json 中删除了“DataSource”、“UserID”等的值,因为您不想在 stackoverflow 上发布它们,但通常那里有值?
-
嗨@rekcul,我没有得到任何异常,它只表明该表没有记录。如果我使用
ExecuteScalarAsync而不是ExecuteReaderAsync它可以完美运行,但问题是我想要所有记录而不是第一行的单列。我还特意在stackoverflow中删除了“DataSource”、“UserID”等的值。 -
怎么回事?你有休息吗?感谢您提前回复:)
标签: c# .net-core azure-functions sqlclient azure-function-async