c # — Использование веб-службы RESTful для извлечения данных из базы данных MySql

Я делаю кроссплатформенное приложение, используя Xamarin.forms, и мне нужно получить данные с сервера MySql. В ходе моих исследований я обнаружил, что использовать библиотеку MySqlClient небезопасно, поэтому я искал это, используя слой веб-службы между моей базой данных и приложением.

Этот код выполняет запрос к базе данных MySql, выводит результаты в массив и отображает их в кодировке JSON. Вот код PHP:

<?php
$servername = "adress";
$username = "client";
$password = "";
$dbname = "dnName";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT text1, text2 FROM tblTable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
$items = array();
// output data of each row
while($row = $result->fetch_assoc()) {
$item = array("Texte1" => $row['text1'],
"Texte2" => $row['text2']);
array_push($items, $item);
}
echo json_encode($items);
} else {
echo "0 results";
}
$conn->close();
?>

Этот код вызывает файл PHP, получает ответ и преобразует их в список элементов. Вот код C #:

using System.Net.Http;
using Newtonsoft.Json;
//....

private Uri uri;
private HttpClient client;
private List<Items> item;

public async Task<List<Items>> ReadData()
{
client = new HttpClient();
uri = new Uri("http://adress/getdata.php");

var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
item = JsonConvert.DeserializeObject<List<Items>>(content);
}
return item;
}

public class Items
{
public string text1 { get; set;}
public string text2 { get; set;}
}

Итак, теперь возвращаемый тип метода ReadData List<Items> но как я могу вернуть их в List<string> или просто строка?

1

Решение

некоторые параметры с Linq (не забудьте включить «using System.Linq;»). Я предпочитаю работать с вариантом 2

  1. Возврат анонимного типа:

    var mylist = item.Where(x => x != null)
    .Select(x => new { x.text1, x.text2 }).ToList();
    
  2. Возврат списка списка строк:

    List<List<string>> mylist = listItems.Where(x => x != null)
    .Select(x => new List<string>{ x.text1, x.text2}).ToList();
    
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]