国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用asp.net core web api創(chuàng)建web后臺,并連接和使用Sql Server數(shù)據(jù)庫

這篇具有很好參考價(jià)值的文章主要介紹了使用asp.net core web api創(chuàng)建web后臺,并連接和使用Sql Server數(shù)據(jù)庫。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言:因?yàn)橐獙懸粋€(gè)安卓端app,實(shí)現(xiàn)從服務(wù)器中獲取電影數(shù)據(jù),所以需要搭建服務(wù)端代碼,之前學(xué)過C#,所以想用C#實(shí)現(xiàn)服務(wù)器段代碼用于測試,本文使用C#語言,使用asp.net core web api組件搭建服務(wù)器端,并訪問sql server 數(shù)據(jù)庫。

一、安裝Visual studio 2022 社區(qū)版,并安裝ASP.NET和Web開發(fā)組件。

使用Visual studio installer安裝好Visual studio 2022 community版本和asp.net web服務(wù)組件。如下圖。

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端

二、 創(chuàng)建ASP.NET Core Web?API,選擇C#語言。

如下圖所示。

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端

后面一路默認(rèn)配置即可,創(chuàng)建后會有個(gè)實(shí)例代碼,個(gè)人感覺挺有意義,對于初次使用的人很有參考價(jià)值。因?yàn)槌绦蛑杏玫綀D片轉(zhuǎn)base64格式字符串和使用sqlserver數(shù)據(jù)庫,需要下載NuGet程序包,下載方法,解決方案--右鍵--“管理解決方案的NuGet程序包”,下載如下缺少的包,如下圖:

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端

三、連接數(shù)據(jù)庫,并返回查詢結(jié)果

1、首先創(chuàng)建一個(gè)類,保存web端返回的數(shù)據(jù),比如我創(chuàng)建一個(gè)電影類,客戶端查詢電影時(shí),返回電影列表。

namespace MyWebServer
{
    // 電影列表使用
    public class Film
    {
        public string? film_name { get; set; }
        public string? film_type { get; set; }
        public string? film_desc { get; set; }
        // base64格式的圖片
        public string? film_pic { get; set; }
        // 平均分
        public string? avg_score { get; set; }
        public string? film_video_url { get; set; }
        // 上架狀態(tài),待上架、已上架、已下架
        public string? film_status { get; set; }
        public string? film_up_time { get; set; }
        public string? film_down_time { get; set; }
        public string? create_time { get; set; }
        public string? update_time { get; set; }
        public string? create_oper { get; set; }
        public string? update_oper { get; set; }

    }
}

2、創(chuàng)建controller,提供給客戶端查詢使用。

using Microsoft.AspNetCore.Mvc;
using Microsoft.Data.SqlClient;
using System.Data;

namespace MyWebServer.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class FilmListController : ControllerBase
    {
        private readonly ILogger<FilmListController> _logger;

        public FilmListController(ILogger<FilmListController> logger)
        {
            _logger = logger;
        }
		
        [HttpPost(Name = "GetFlimList")]
        public IEnumerable<Film> GetFlimList()
        {
            List<Film> filmList = new List<Film>();
            try
            {
				// cinema_db2為數(shù)據(jù)庫名,sa為數(shù)據(jù)庫登錄名,dbpassword為數(shù)據(jù)庫密碼。
				// 修改sa用戶密碼和設(shè)置以sql server身份登錄方法見:https://blog.csdn.net/newdriverest/article/details/127120083
				// 修改完數(shù)據(jù)庫sa密碼后,記得重啟數(shù)據(jù)庫才能生效。
                SqlConnection sqlConnection = new SqlConnection("Data Source=localhost;Initial Catalog=cinema_db2;Encrypt=True;Integrated Security=True;TrustServerCertificate=True;User Id=sa;Password=dbpassword");
                sqlConnection.Open();
                // 語句可從sql server management sudio查詢查詢語句框中直接復(fù)制過來,去掉/r/n
                string sql = "SELECT [film_name],film_type," +
                    "[film_desc],[film_pic_url],[film_video_url],film_status," +
                    "[film_up_time],[film_down_time],[create_time],[update_time]," +
                    "[create_oper],[update_oper]" +
                    " FROM [cinema_db2].[dbo].[t_film]";

                DataSet dataSet = new DataSet();
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sql, sqlConnection);
                sqlDataAdapter.Fill(dataSet);

                // 遍歷結(jié)果
                if (dataSet.Tables.Count > 0)
                {
                    // 行
                    for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
                    {
                        Film tmp = new Film();
                        // 列
                        for (int j = 0; j < dataSet.Tables[0].Columns.Count; j++)
                        {
                            if (dataSet.Tables[0].Columns[j].ToString().Equals("film_name"))
                            {
                                tmp.film_name = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            } else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_type"))
                            {
                                tmp.film_type = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            } else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_desc"))
                            {
                                tmp.film_desc = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_pic_url"))
                            {
                                tmp.film_pic = ImageToBase64(dataSet.Tables[0].Rows[i].ItemArray[j].ToString());
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_video_url"))
                            {
                                tmp.film_video_url = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_status"))
                            {
                                tmp.film_status = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_up_time"))
                            {
                                tmp.film_up_time = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("film_down_time"))
                            {
                                tmp.film_down_time = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("create_time"))
                            {
                                tmp.create_time = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("update_time"))
                            {
                                tmp.update_time = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("create_oper"))
                            {
                                tmp.create_oper = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                            else if (dataSet.Tables[0].Columns[j].ToString().Equals("update_oper"))
                            {
                                tmp.update_oper = dataSet.Tables[0].Rows[i].ItemArray[j].ToString();
                            }
                        }
                        filmList.Add(tmp);
                    }
                }

                sqlConnection.Close();
				// 返回的數(shù)據(jù),客戶端使用相同的類字段接收即可,比如android端使用okhttp3+retrofit2+rxJava,很方便就能獲取到返回的數(shù)據(jù)
                return filmList.ToArray();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return filmList.ToArray();
            }
        }
		
		/// <summary>
        /// Image 轉(zhuǎn)成 base64
        /// </summary>
        /// <param name="fileFullName"></param>
        public static string ImageToBase64(string fileFullName)
        {
            try
            {
                if (fileFullName != null && !fileFullName.Equals(""))
                {
                    Bitmap bmp = new Bitmap(fileFullName);
                    MemoryStream ms = new MemoryStream();
                    bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    byte[] arr = new byte[ms.Length]; ms.Position = 0;
                    ms.Read(arr, 0, (int)ms.Length); ms.Close();
                    return Convert.ToBase64String(arr);
                }
                return "";
            }
            catch (Exception ex)
            {
                return "";
            }
        }
    }
}

?3、運(yùn)行web server程序,在瀏覽器中調(diào)試。

先修改訪問服務(wù)器的IP地址為電腦局域網(wǎng)地址,如下圖所示,測試時(shí)最好使用http協(xié)議,這樣客戶端訪問不容易出錯(cuò)。

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端

運(yùn)行程序之后,會打開調(diào)試用的web頁面和一個(gè)命令行窗口,如果web提示有錯(cuò),說明代碼有問題。在瀏覽器測試頁面,可以測試服務(wù)器接口的可用性,點(diǎn)擊如下圖的Try it out按鈕,再點(diǎn)擊Execute按鈕,即可測試接口的返回結(jié)果。

asp.net 后端,C#,asp.net,數(shù)據(jù)庫,后端文章來源地址http://www.zghlxwxcb.cn/news/detail-624769.html

到了這里,關(guān)于使用asp.net core web api創(chuàng)建web后臺,并連接和使用Sql Server數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在 ASP.NET Core Web API 中使用異常篩選器捕獲和統(tǒng)一處理異常

    在 ASP.NET Core Web API 中使用異常篩選器捕獲和統(tǒng)一處理異常

    在 ASP.NET Core Web API 中,異常篩選器(Exception Filter)是一種用于處理發(fā)生在 Web API 控制器或管道中的異常的機(jī)制。 異常篩選器可以捕獲和處理應(yīng)用程序中發(fā)生的異常,當(dāng)系統(tǒng)中出現(xiàn)未經(jīng)處理的異常的時(shí)候,異常篩選器就會執(zhí)行,我們可以在異常篩選器中對異常進(jìn)行處理,例如

    2024年01月19日
    瀏覽(23)
  • ASP.NET Core Web API用戶身份驗(yàn)證

    ASP.NET Core Web API用戶身份驗(yàn)證

    ASP.NET Core Web API用戶身份驗(yàn)證的方法有很多,本文只介紹JWT方法。JWT實(shí)現(xiàn)了服務(wù)端無狀態(tài),在分布式服務(wù)、會話一致性、單點(diǎn)登錄等方面凸顯優(yōu)勢,不占用服務(wù)端資源。簡單來說,JWT的驗(yàn)證過程如下所示: (1)通過用戶名和密碼獲取一個(gè)Token。 (2)訪問API時(shí),加上這個(gè)Toke

    2024年02月11日
    瀏覽(23)
  • ASP.NET Core 中的兩種 Web API

    ASP.NET Core 有兩種創(chuàng)建 RESTful Web API 的方式: 基于 Controller,使用完整的基于ControllerBase的基類定義接口endpoints。 基于 Minimal APIs,使用Lambda表達(dá)式定義接口 endpoints。 基于 Controller 的 Web API 可以使用構(gòu)造函數(shù)注入,或者屬性注入,遵循面向?qū)ο竽J健?基于 Minimal APIs 的 Web API 通

    2024年02月09日
    瀏覽(34)
  • ASP.NET Core Web API之Token驗(yàn)證

    ASP.NET Core Web API之Token驗(yàn)證

    在實(shí)際開發(fā)中,我們經(jīng)常需要對外提供接口以便客戶獲取數(shù)據(jù),由于數(shù)據(jù)屬于私密信息,并不能隨意供其他人訪問,所以就需要驗(yàn)證客戶身份。那么如何才能驗(yàn)證客戶的什么呢?今天以一個(gè)簡單的小例子,簡述ASP.NET Core Web API開發(fā)過程中,常用的一種JWT身份驗(yàn)證方式。僅供學(xué)

    2024年02月11日
    瀏覽(22)
  • ASP.NET Core Web API 流式返回,逐字顯示

    ASP.NET Core Web API 流式返回,逐字顯示

    Websocket、SSE(Server-Sent Events)和長輪詢(Long Polling)都是用于網(wǎng)頁和服務(wù)端通信的技術(shù)。 Websocket是一種全雙工通信協(xié)議,能夠?qū)崿F(xiàn)客戶端和服務(wù)端之間的實(shí)時(shí)通信。它基于TCP協(xié)議,并且允許服務(wù)器主動向客戶端推送數(shù)據(jù),同時(shí)也允許客戶端向服務(wù)器發(fā)送數(shù)據(jù)。 SSE是一種單向

    2023年04月23日
    瀏覽(21)
  • ASP.NET Core 中基于 Minimal APIs 的Web API

    Minimal APIs 是ASP.NET Core中快速構(gòu)建 REST API 的方式,可以用最少的代碼構(gòu)建全功能的REST API。比如下面三行代碼: 可以實(shí)現(xiàn)在請求網(wǎng)站根目錄結(jié)點(diǎn)的時(shí)候,返回\\\"Hello World!\\\"。 這種方式的Web API可以用于構(gòu)建微服務(wù),極簡功能的網(wǎng)站。 下面代碼,將幾個(gè) HTTP 請求的 url映射到 Lambda

    2024年02月10日
    瀏覽(25)
  • 2.1 .net 8 ASP.NET Core Web API - Controller詳解

    2.1 .net 8 ASP.NET Core Web API - Controller詳解

    書接上回,上節(jié)我們留了幾個(gè)問題,即: 1、接口Hello的名字究竟怎么來的? 2、我們?nèi)绻氚呀涌诟某善渌拿Q,應(yīng)該怎么做? 3、我們繼承ControllerBase,以及[Route(“[controller]”)]屬性,又是分別起到什么作用? 需要解決以上幾個(gè)問題,我們就要繼續(xù)深入研究Controller相關(guān)的

    2024年02月20日
    瀏覽(22)
  • ASP.NET Core 中基于 Controller 的 Web API

    ASP.NET Core 中基于 Controller 的 Web API

    客戶端發(fā)送Http請求,Contoller響應(yīng)請求,并從數(shù)據(jù)庫讀取數(shù)據(jù),序列化數(shù)據(jù),然后通過 Http Response返回序列化的數(shù)據(jù)。 Web API 的所有controllers 一般繼承于 ControllerBase 類,而不是Controller 類。 因?yàn)?Controller 類也繼承自ControllerBase 類,但是支持views,而API一般不需要這個(gè)功能。 Co

    2024年02月10日
    瀏覽(30)
  • 在 ASP.NET Core Web API 中處理 Patch 請求

    PUT 和 PATCH 方法用于更新現(xiàn)有資源。 它們之間的區(qū)別是,PUT 會替換整個(gè)資源,而 PATCH 僅指定更改。 在 ASP.NET Core Web API 中,由于 C# 是一種靜態(tài)語言( dynamic 在此不表),當(dāng)我們定義了一個(gè)類型用于接收 HTTP Patch 請求參數(shù)的時(shí)候,在 Action 中無法直接從實(shí)例中得知客戶端提供了哪

    2024年02月04日
    瀏覽(98)
  • 【服務(wù)器】ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)

    【服務(wù)器】ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)

    簡單幾步實(shí)現(xiàn)本地ASP.Net.Core web 站點(diǎn)結(jié)合cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問 1. 創(chuàng)建站點(diǎn) *環(huán)境搭建,這邊測試,使用.NET 6.0 SDK,可以點(diǎn)擊跳轉(zhuǎn)到官網(wǎng)下載,下載后安裝即可. 安裝完成后,進(jìn)入到某個(gè)文件夾,打開powershell執(zhí)行下面命令,創(chuàng)建新的 Web 應(yīng)用,名稱叫:aspnetcoreapp 2. 運(yùn)行站點(diǎn) 信任開

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包