Получение данных из базы данных SQL для API веб-форм ASP.NET

1

Я выполнил этот урок (http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api) для настройки веб-API в мое веб-приложение ASP.NET. Однако он не говорит о том, как извлекать записи из базы данных. Это вместо этого жестко закодированные фиктивные данные в контроллере, например:

Product[] products = new Product[] 
    { 
        new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
        new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
        new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
    };

Скажем, у меня есть таблица в моей SQL DB под названием "Продукты", как бы я мог получить данные о продукте оттуда вместо этого? Если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен.

Я попытался использовать функцию, но она не работала.

 DataTable dbProducts = new DataTable();
 dbProducts = Wrapper.getProducts();
  • 0
    Во-первых, вам нужно иметь базу данных с таблицей и записями в ней, если вы хотите получить данные из базы данных. Во-вторых, вам нужно будет добавить слой доступа к данным, чтобы вы могли запрашивать базу данных и получать нужные записи, чтобы они могли использоваться веб-API. Следуйте инструкциям в этом руководстве, чтобы узнать, как использовать платформу сущностей с Web API: asp.net/web-api/overview/creating-web-apis/…
Теги:

2 ответа

1
Лучший ответ

Если соединение не работает, проверьте этот сайт http://www.sqlstrings.com/ и измените строку подключения на нужный тип. Если это нечто большее, чем учебный опыт, я рекомендую использовать linq для sql или фреймворка сущности (обновление 2018: Dapper - мой предпочтительный способ сделать это)

Копировать код макаронных изделий:

        // Create a connection to the database        
    SqlConnection conn = new SqlConnection("Data Source=MyDBServer;Initial Catalog=MyDB;Integrated Security=True");
    // Create a command to extract the required data and assign it the connection string
    SqlCommand cmd = new SqlCommand("SELECT * FROM Product", conn);
    cmd.CommandType = CommandType.Text;
    // Create a DataAdapter to run the command and fill the DataTable
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    DataTable dt = new DataTable();
    da.Fill(dt);
List<Product> products = new List<Product>();
foreach(DataRow row in dt.Rows)
{
    products.add(New Product{ row["Id"], row["Name"], row["Category"], row["Price"]});
}
  • 0
    Итак, после того, как я это сделаю, как мне добавить данные в массив продуктов?
  • 0
    Вы можете перебирать каждую строку таблицы и заполнять массив.
Показать ещё 3 комментария
0

Вы можете использовать сущность framework + репозиторий для быстрого получения данных из базы данных.

Если в вашей базе данных SQl уже есть таблица под названием Product, сделайте свой EF настроенным, и у вас есть все ссылки EF, доступные в вашем проекте.

Я не видел этого учебника, но просто чтобы дать вам краткую и грубую идею...

 public class Product
    {
    public string Id {get;set;}
    public Name {get;set;}
    public string Category {get;set;}
    public decimal Price {get;set;}
    }

public AppContext : DbContext
{
public DbSet<Product> Products {get;set;}
}


    public class IProductRepository
    {
        public IQuerable<Product> Products{get;}
    }

    public class ProductRepository : IProductRepository
    {
     private  AppContext context = new DBContext();

    public IQuerable<Product> Products
    {
        get
    {
    context.Products;
    }
    }

    }



    Now in your Web Api method & controller.... 


    public class ProductController 
    {
    private IProductRepository repo;

        public ProductController()
    {
         repo = new ProductRepository(); // or use DI
    }

    public List<Product> Get()
    {
     return repo.Products.ToList();
    }

    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню