iT邦幫忙

0

.Net Maui 問題

  • 分享至 

  • xImage

請問各位大大,要怎麼讓Maui連接SQL SERVER?感恩

天黑 iT邦研究生 5 級 ‧ 2022-12-12 15:31:48 檢舉
通常應該是通過web api之類的服務做資料存取,直接連線,這樣跨平台還能正常運作嗎.....
spideregg iT邦新手 5 級 ‧ 2022-12-12 16:45:00 檢舉
我也有想過用Web api之類的來做,可是沒有這個項目可以新增,是不是要裝套件之類的?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
JamesDoge
iT邦高手 1 級 ‧ 2023-01-07 02:02:21
最佳解答

要怎麼讓Maui連接SQL SERVER?

using System;
using System.Collections.ObjectModel;
using System.Data.SqlClient;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;

namespace MyApp
{
    public class Program
    {
        public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("app");

            builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

            // 加入身分驗證的服務
            builder.Services.AddApiAuthorization();

            await builder.Build().RunAsync();
        }
    }

    public class App : Microsoft.AspNetCore.Components.ComponentBase
    {
        [Inject]
        protected NavigationManager NavigationManager { get; set; }

        [Inject]
        protected ILogger<App> Logger { get; set; }

        [Inject]
        protected IAccessTokenProvider AccessTokenProvider { get; set; }

        [Inject]
        protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }

        protected override async Task OnInitializedAsync()
        {
            // 驗證身分
            var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
            var user = authState.User;
            if (!user.Identity.IsAuthenticated)
            {
                // 若使用者尚未登入,則導向到登入頁面
                NavigationManager.NavigateTo("authentication/login");
            }
            else
            {
                // 若使用者已登入,則導向到 Customers 頁面
                NavigationManager.NavigateTo("customers");
            }
        }
    }

public class CustomersModel : Microsoft.AspNetCore.Components.ComponentBase
{
    public ObservableCollection<Customer> Customers { get; set; }

    protected override async Task OnInitializedAsync()
    {
        // 連接字串。請注意,您需要替換資料庫伺服器名稱、資料庫名稱和使用者名稱/密碼。
        string connectionString = "Server=MyServer;Database=MyDb;User Id=MyUsername;Password=MyPassword;";

        Customers = new ObservableCollection<Customer>();

        // 使用 using 關鍵字,以確保連接會自動關閉
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            // 建立連接
            connection.Open();

            // 建立 SqlCommand 物件,並傳入查詢字串和連接物件
            SqlCommand command = new SqlCommand("SELECT * FROM Customers", connection);

            // 執行查詢並取得結果
            SqlDataReader reader = command.ExecuteReader();

            // 使用 while 迴圈,取出每一筆記錄
            while (reader.Read())
            {
                // 建立 Customer 物件,並設定屬性值
                Customer customer = new Customer
                {
                    Id = reader.GetInt32(0),
                    Name = reader.GetString(1),
                    City = reader.GetString(2)
                };

                // 將 Customer 物件加入到 Customers 集合中
                Customers.Add(customer);
            }
        }
    }
}

public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
}

1
eric19740521
iT邦新手 1 級 ‧ 2022-12-13 11:16:34

若是要寫手機程式,也可以用b4x寫..參考底下的
https://www.youtube.com/watch?v=sbSjy_2nMvU
https://www.youtube.com/watch?v=1G1dvEoSnA8&t=537s

spideregg iT邦新手 5 級 ‧ 2022-12-13 14:13:09 檢舉

謝謝你的回答,但平台需求限定一定要用Maui /images/emoticon/emoticon02.gif

那也只能這樣
b4a很簡單

1
阿盲
iT邦新手 2 級 ‧ 2022-12-13 14:47:25

方案一、新建API專案
應該是要另外寫一支API專案存取DB吧?
然後MAUI再呼叫API去執行動作

方案二、直接連SQL SERVER
沒做過,但有看到別人拍Xamarin的連SQL SERVER示範影片,你可以參考看看是否類似方向...這部分看起來能直接搬到MAUI去使用

1
aaaa0976355849
iT邦新手 5 級 ‧ 2023-01-06 15:36:39

看樓主似乎對MAUI的理解不多
但要直接寫可能會有些辛苦
題目本身敘述有些簡短:
很單純的要去連線資料庫其實不難
SqlConnection直接連就好了
但實務上還是會選擇打API之類的方法
API是甚麼 怎麼怎麼架 可能需要先了解一下
MAUI這邊就是UserClient
可以發個例如HttpClient到你的API上取資料

所以需要知道的應該是
1.如何在C#建立 SqlConnection連線
2.若長遠來看 要不要架API? API怎麼架? 怎麼去呼叫API?

spideregg iT邦新手 5 級 ‧ 2023-04-12 10:01:07 檢舉

謝謝你的回覆 現在已經理解的差不多了

我要發表回答

立即登入回答