with and without parameters works
This commit is contained in:
44
DbService.cs
44
DbService.cs
@ -1,3 +1,5 @@
|
||||
#pragma warning disable 1591
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
@ -7,39 +9,47 @@ using de.hottis.genericdatabaseapiservice.Models;
|
||||
|
||||
namespace de.hottis.genericdatabaseapiservice.Services {
|
||||
public interface IDbService {
|
||||
Task<List<T>> JustDoSomething<T>(string msg);
|
||||
|
||||
Task<List<TOUT>> ReadBySelect<TIN, TOUT>(string selectStatement, TIN input);
|
||||
}
|
||||
|
||||
public class DbService : IDbService {
|
||||
async public Task<List<T>> JustDoSomething<T>(string msg) {
|
||||
Console.WriteLine(msg);
|
||||
|
||||
var itemList = new List<T>();
|
||||
|
||||
async public Task<List<TOUT>> ReadBySelect<TIN, TOUT>(string selectStatement, TIN input) {
|
||||
var itemList = new List<TOUT>();
|
||||
|
||||
using (var conn = new MySqlConnection("Server=172.16.10.18;User ID=apiservicetestdb;Password=geheim123;Database=apiservicetestdb")) {
|
||||
await conn.OpenAsync();
|
||||
|
||||
using (var cmd = conn.CreateCommand()) {
|
||||
// cmd.CommandText = "INSERT INTO test1 (txt, nr) VALUES (@txt, @nr)";
|
||||
// cmd.Parameters.AddWithValue("txt", "txt1");
|
||||
// cmd.Parameters.AddWithValue("nr", 12);
|
||||
// await cmd.ExecuteNonQueryAsync();
|
||||
cmd.CommandText = "SELECT id, txt, nr FROM test1";
|
||||
cmd.CommandText = selectStatement;
|
||||
if (input != null){
|
||||
foreach (var propertyInfo in typeof(TIN).GetProperties()) {
|
||||
Console.WriteLine("Input Property name: {0} {1} ", propertyInfo.Name, propertyInfo.PropertyType);
|
||||
var attributes = propertyInfo.GetCustomAttributes(typeof(DataMemberAttribute), true);
|
||||
var dma = (DataMemberAttribute)attributes[0];
|
||||
Console.WriteLine("Input DataMember name: {0} {1} ", dma.Name, dma.TypeId);
|
||||
var value = propertyInfo.GetValue(input);
|
||||
Console.WriteLine("Input Value: {0}", value);
|
||||
cmd.Parameters.AddWithValue(dma.Name, propertyInfo.GetValue(input));
|
||||
}
|
||||
} else {
|
||||
Console.WriteLine("no input data");
|
||||
}
|
||||
using (var reader = await cmd.ExecuteReaderAsync()) {
|
||||
while (await reader.ReadAsync()) {
|
||||
var item = Activator.CreateInstance<T>();
|
||||
foreach (var propertyInfo in typeof(T).GetProperties()) {
|
||||
Console.WriteLine("Property name: {0} {1} ", propertyInfo.Name, propertyInfo.PropertyType);
|
||||
var item = Activator.CreateInstance<TOUT>();
|
||||
foreach (var propertyInfo in typeof(TOUT).GetProperties()) {
|
||||
Console.WriteLine("Output Property name: {0} {1} ", propertyInfo.Name, propertyInfo.PropertyType);
|
||||
var attributes = propertyInfo.GetCustomAttributes(typeof(DataMemberAttribute), true);
|
||||
var dma = (DataMemberAttribute)attributes[0];
|
||||
Console.WriteLine("DataMember name: {0} {1} ", dma.Name, dma.TypeId);
|
||||
Console.WriteLine("Output DataMember name: {0} {1} ", dma.Name, dma.TypeId);
|
||||
if (propertyInfo.PropertyType == typeof(System.String)) {
|
||||
propertyInfo.SetValue(item, reader.GetString(dma.Name));
|
||||
Console.WriteLine("Value:{0}", reader.GetString(dma.Name));
|
||||
Console.WriteLine("Output Value:{0}", reader.GetString(dma.Name));
|
||||
} else if (propertyInfo.PropertyType == typeof(System.Int32)) {
|
||||
propertyInfo.SetValue(item, reader.GetInt32(dma.Name));
|
||||
Console.WriteLine("Value:{0}", reader.GetInt32(dma.Name));
|
||||
Console.WriteLine("Output Value:{0}", reader.GetInt32(dma.Name));
|
||||
}
|
||||
}
|
||||
itemList.Add(item);
|
||||
@ -51,3 +61,5 @@ namespace de.hottis.genericdatabaseapiservice.Services {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore 1591
|
||||
|
Reference in New Issue
Block a user