繁体   English   中英

如何获取数据库表中列名称的JSON响应

[英]How to get JSON response for column names in database table

我想在API端的控制器类中编写一个方法,以返回所有列名称的列表。 该方法将是什么样子,它将返回什么? 以及如何在客户端检索此“列表”?

private CoreGradingDBEntities db = new CoreGradingDBEntities();

// GET: api/
public IQueryable<Account> GetAccounts()
{
  return db.Accounts;
}


//Get field names
//What is the response type
public IHttpActionResult GetFieldNames()
{
  //Query goes here, gets executed and returns all column names?
}

// GET: api/Accounts/5
[ResponseType(typeof(Account))]
public IHttpActionResult GetAccount(string id)
{
    Account account = db.Accounts.Find(id);
    if (account == null)
    {
         return NotFound();
    }
    return Ok(account);
}

一个查询,该查询返回可以执行的列名,该列名我想执行并作为HTTP响应获取。

SELECT COLUMN_NAME

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME = 'Account'

ORDER BY ORDINAL_POSITION

有两种方法可以完成此任务:

回答

因此,我添加了一个新的控制器类,它是一个不依赖于数据库的自定义类。 我还向WebApiConfig.cs文件添加了一条新路由。 以及新的“模板”类。 这就是我所拥有的。

WebApiConfig.cs(添加的代码)

请注意,该ID是必填项。 我将使用它作为希望从中获取字段名称的表名。

config.Routes.MapHttpRoute(
name: "FieldValues",
routeTemplate: "api/FieldValues/id",
defaults: new { controller = "FieldValues"}
);

FieldValues.cs(新类)

    public class FieldValues
    {
        public string COLUMN_NAME { get; set; } //this "variables" name is same as in query. Note: if the set is not present nulls would be returned
    }

FieldValuesController.cs(新控制器)

    public class FieldValuesController : ApiController
    {
        private CoreGradingDBEntities db = new CoreGradingDBEntities();

        [Route("api/FieldValues/id")]
        public IList<FieldValues> Get(string id)
        {
            var response = db.Database.SqlQuery<FieldValues>("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" + id + "' ORDER BY ORDINAL_POSITION").ToList();
            return response;
        }
    }

JSON回应

[{"$id":"1","COLUMN_NAME":"ID"},{"$id":"2","COLUMN_NAME":"DepartmentID"},{"$id":"3","COLUMN_NAME":"PermissionID"},{"$id":"4","COLUMN_NAME":"Username"},{"$id":"5","COLUMN_NAME":"PasswordHash"},{"$id":"6","COLUMN_NAME":"PasswordResetToken"},{"$id":"7","COLUMN_NAME":"TokenValid"},{"$id":"8","COLUMN_NAME":"Email"},{"$id":"9","COLUMN_NAME":"EmailConfirmed"},{"$id":"10","COLUMN_NAME":"PhoneNumber"},{"$id":"11","COLUMN_NAME":"PhoneNumberConfirmed"},{"$id":"12","COLUMN_NAME":"TwoFactorEnabled"},{"$id":"13","COLUMN_NAME":"AccessFailedCount"},{"$id":"14","COLUMN_NAME":"LocoutEndDate"},{"$id":"15","COLUMN_NAME":"LockoutEnabled"}]

GET请求

api/FieldValues/id?id={id}

用途

api/FieldValues/id?id=Account //the 'Account' can be replaced by your table name you wish to get the values from

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM