c# - 使用 SQL 客户端将时间触发的 Azure 函数与数据库连接
问题描述
我正在使用 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}");
}
}
我不明白它有什么问题。请建议
解决方案
我想你可以public override object this[string name] { get; }
改用。这是我的代码,它运行良好,您可以将其与您的代码进行比较。
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Data.SqlClient;
using System.Collections.Generic;
namespace Function0602
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<List<tinyTest>> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
List<tinyTest> list = new List<tinyTest>();
var str = "connect_string";
using (SqlConnection conn = new SqlConnection(str))
{
conn.Open();
var text = "select * from tinyTest;";
using (SqlCommand cmd = new SqlCommand(text, conn))
{
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
{
while (reader.Read())
{
tinyTest res = new tinyTest();
//SqlDataReader skd provide the method of reader["column_name"]
res.user_id = (string)reader["user_id"];
res.user_name = (string)reader["user_name"];
res.age = (int)reader["age"];
list.Add(res);
}
}
}
conn.Close();
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
return list;
}
}
public class tinyTest {
public string user_id { get; set; }
public string user_name { get; set; }
public int age { get; set; }
}
}