Ich schreibe eine Methode in .NET 8 mit C#, um Abfrage auszuführen und eine Liste von Datatables asynchron zu laden. Hier ist der Code, den ich verwende: < /p>
static async Task Main(string[] args)
{
var sql = @"
SET NOCOUNT ON;
SELECT 'A' AS Col1Tbl1;
SELECT 'B' AS Col1Tbl2;
";
var connectionString = "Data Source=.;Initial Catalog=DummyDb;User ID=sa;Password=123abc;MultipleActiveResultSets=True;TrustServerCertificate=true";
var tables = await ExecSQLAsync(sql, connectionString);
Console.WriteLine($"Total Tables Returned: {tables.Count}");
for (int i = 0; i < tables.Count; i++)
{
Console.WriteLine($"\nTable {i + 1} (Rows: {tables.Rows.Count}):");
foreach (DataColumn col in tables.Columns)
{
Console.Write(col.ColumnName + "\t");
}
Console.WriteLine();
}
Console.ReadLine();
}
static async Task ExecSQLAsync(string sql, string connString)
{
var resultTables = new List();
//var connectionString = _connectionString;
try
{
using (var connection = new SqlConnection(connString))
using (var command = new SqlCommand(sql, connection))
{
command.CommandTimeout = 0;
await connection.OpenAsync();
using (var reader = await command.ExecuteReaderAsync())
{
do
{
var table = new DataTable();
table.Load(reader);
resultTables.Add(table);
}
while (await reader.NextResultAsync());
}
}
}
catch (Exception ex)
{
//_logger.LogError(ex, "Error executing SQL command.");
}
return resultTables;
}
< /code>
Gibt jedoch nur Daten aus dem ersten DataTable zurück:
Ergebnis < /p>
So senden Sie Daten aus allen DataTables zurück, während Sie den Code async behalten. < /p>
Ich schreibe eine Methode in .NET 8 mit C#, um Abfrage auszuführen und eine Liste von Datatables asynchron zu laden. Hier ist der Code, den ich verwende: < /p> static async Task Main(string[] args) { var sql = @" SET NOCOUNT ON; SELECT 'A' AS Col1Tbl1; SELECT 'B' AS Col1Tbl2; ";
var connectionString = "Data Source=.;Initial Catalog=DummyDb;User ID=sa;Password=123abc;MultipleActiveResultSets=True;TrustServerCertificate=true";
var tables = await ExecSQLAsync(sql, connectionString);
Console.WriteLine($"Total Tables Returned: {tables.Count}"); for (int i = 0; i < tables.Count; i++) { Console.WriteLine($"\nTable {i + 1} (Rows: {tables[i].Rows.Count}):"); foreach (DataColumn col in tables[i].Columns) { Console.Write(col.ColumnName + "\t"); } Console.WriteLine(); } Console.ReadLine(); }
static async Task ExecSQLAsync(string sql, string connString) { var resultTables = new List(); //var connectionString = _connectionString;
try { using (var connection = new SqlConnection(connString)) using (var command = new SqlCommand(sql, connection)) { command.CommandTimeout = 0; await connection.OpenAsync();
using (var reader = await command.ExecuteReaderAsync()) { do { var table = new DataTable(); table.Load(reader); resultTables.Add(table); } while (await reader.NextResultAsync()); } } } catch (Exception ex) { //_logger.LogError(ex, "Error executing SQL command."); }
return resultTables; } < /code> Gibt jedoch nur Daten aus dem ersten DataTable zurück: Ergebnis < /p> So senden Sie Daten aus allen DataTables zurück, während Sie den Code async behalten. < /p>
Dies hängt in gewisser Weise mit meinem tatsächlichen Code zusammen. Die in Pytest Fixture verwendete Async-Kontextmanagerklasse gibt ein Async-Generatorobjekt anstelle der erwarteten...
Ich arbeite an einem Projekt, bei dem ich alle Informationen zu den Alben und Tracks eines Künstlers mit der Spotify -API extrahieren muss. Das Ziel ist es, alle Details, einschließlich des ISRC der...
.NET 4.8 Projekt mit C# und versuchen, diese Funktion aufzuräumen:
public class AuthorizationServiceProvider : OAuthAuthorizationServerProvider
{
public override async Task...