台灣最大程式設計社群網站
線上人數
679
 
會員總數:244989
討論主題:188956
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 如何透過web api撈SQL server的資料顯示在android app上
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何透過web api撈SQL server的資料顯示在android app上
價值 : 100 QP  點閱數:646 回應數:4

樓主

張信加
門外漢
0 5
51 3
發送站內信



不好意思我想要請教各位專業人士們,
我是用web api來連sql server
但我遇到的問題是
我該如何使用SqlDataReader將我要的資料(我有三個資料行)轉成JSON格式,
好讓Android可以去拆解JSON格式呢?

搜尋相關Tags的文章: [ web api ] , [ SQL server ] , [ JSON ] ,
本篇文章發表於2019-01-29 11:40
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
反過來講,比較容易懂

反過來,您要做的步驟如下:
1.將JSON轉類別(Class)
1a.在Visual studio中新增一個類別
1b.將您要產出的JSON範例檔,編輯->選擇性貼上->貼上JSON成為類別

2.將資料讀出(您已經貼出來了)

3.讀出資料放入物件(類別)的集合List(Of 您的類別)

4.在WebAPI的Control中,回傳物件集合

以上請參考這一篇
https://dotblogs.com.tw/topcat/2018/10/16/143953

就醬子
WebAPI的特色就是,您只要傳回物件集合
Server端會依據Client端的要求,自動傳回json或者xml
也就是,您只需把物件(或者 List<>的物件集合)回傳即可
本篇文章回覆於2019-01-30 09:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

張信加
檢舉此回應
您好,非常感謝您的回覆,
但我想請問的是,我現在已經從SQl server撈出一個DataTable,
像您所說的回傳list<>,那我該如何將撈出來的資料轉成一個list呢?
如果轉成list是不是就不用使用JsonConvert.SerializeObject了呢?

另外想請教一下,
SqlDataAdapter da = new SqlDataAdapter(SqlString, conn);

DataTable dt = new DataTable();
da.Fill(dt);

String jsonString = JsonConvert.SerializeObject(dt); ;

return Json(jsonString);
}

如果我把程式碼改成這樣,可是輸出來的都是很奇怪的資料,例如:
"DataTable.RemotingVersion":{"Major":2,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},
之類的,請問是不是哪個步驟錯了該如何修改呢?
本篇文章回覆於2019-01-30 14:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
如果我把程式碼改成這樣,可是輸出來的都是很奇怪的資料,例如:
"DataTable.RemotingVersion":{"Major":2,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},
之類的,請問是不是哪個步驟錯了該如何修改呢?

直接把DataTable轉JSON,是一定無法轉出您要的JSON的
這部分建議您放棄這個想法

--

如果我把程式碼改成這樣,可是輸出來的都是很奇怪的資料,例如:
"DataTable.RemotingVersion":{"Major":2,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},
之類的,請問是不是哪個步驟錯了該如何修改呢?


撈資料,放到物件集合這個過程
建議您使用Dapper這個第三方的元件
您可以參考小喵以下這一篇
https://dotblogs.com.tw/topcat/2016/10/06/165217
Dapper簡單、簡潔
可以原本使用ADO.NET的工作,用Dapper可以用更簡單的寫法做到相同的事情
效能還不錯
大推

如果轉成list是不是就不用使用JsonConvert.SerializeObject了呢?

是的
小喵有提過,依據Client端的需求,要回傳JSON還是XML
您的程式不必做任何特別的動作
就只需邀傳回物件即可

WebAPI的機制,會自動的依據Client端的需求
把物件(或物件集合)依據Client端的要求,轉成JSON或者XML傳回

^.^a

本篇文章回覆於2019-01-31 11:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

張信加
檢舉此回應
非常感謝您喔
後來使用microsoft EF跟Dapper就可以了
感謝感謝!
本篇文章回覆於2019-02-01 11:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.