从mvc中每个记录用逗号分隔的数据库中获取项目列表?

nfg76nw0  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(338)

要通过列表框(multiselect)存储到数据库中,请参阅下面的链接
https://www.aspsnippets.com/articles/aspnet-mvc-get-listbox-selected-text-and-selected-value-in-controller.aspx
在这里,这个链接实际上会提醒messagebox列表框中列出的项目。
正如上面提到的链接。。。我存储了水果的数据,通过逗号分隔多个项目,如
var items=string.join(“,”,fruits.fruitsid.toarray());
下面的输出是
id |水果|美孚利诺
1 | 1,5,4 | 9876543210
2 | 2,3,8 | 9876542103
但是现在我实际上需要通过ado.net从文本框中输入的基于mobileno的特定记录的数据库中提取数据,并在表中列出水果的记录。。。
这就是我如何使用ado.net将数据插入到水果表中

  1. public void Addfruits(Fruits bfitems)
  2. {
  3. try
  4. {
  5. connection();
  6. var items = string.Join(",", bfitems.FruitsId.ToArray());
  7. string insertText = "insert into FruitItems(Items,Mobileno)
  8. VALUES (@Items,@Mobileno)";
  9. MySqlCommand command = new MySqlCommand(insertText, con);
  10. command.Parameters.AddWithValue("@Items", items);
  11. command.Parameters.AddWithValue("@Mobileno", bfitems.Mobileno);
  12. if (insertText != null)
  13. {
  14. con.Open();
  15. command.ExecuteNonQuery();
  16. }
  17. }
  18. catch (Exception ex)
  19. {
  20. }
  21. finally
  22. {
  23. con.Close();
  24. }
  25. }

去拿唱片。。。。

  1. private static List<SelectListItem> GetFruits(Fruits bf)
  2. {
  3. List<SelectListItem> items = new List<SelectListItem>();
  4. string constr =
  5. ConfigurationManager.ConnectionStrings["orders"].ConnectionString;
  6. using (MySqlConnection con = new MySqlConnection(constr))
  7. {
  8. string query = " SELECT * FROM FruitItems where
  9. Mobileno=@Mobileno";
  10. MySqlCommand cmd = new MySqlCommand(query);
  11. cmd.Parameters.AddWithValue("@Mobileno", bf.Mobileno);
  12. cmd.Connection = con;
  13. con.Open();
  14. cmd.ExecuteNonQuery();
  15. con.Close();
  16. }
  17. return items;
  18. }
5lwkijsr

5lwkijsr1#

这个 ExecuteNonQuery 执行查询并返回受查询影响的记录数(插入/更新的行数)。如果要从表中获取数据,应该使用 ExecuteReader 返回 SqlDataReader ```
private static List GetFruits(Fruits bf)
{
var items = new List();
string constr = "Your connection string here";
using (var con = new SqlConnection(constr))
{
var query = " SELECT ID, Fruits FROM FruitItems where Mobileno=@Mobileno";
using (var cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@Mobileno", bf.Mobileno);
con.Open();
using (var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
var item = new SelectListItem();
item.Value = reader.GetInt32(reader.GetOrdinal("Id")).ToString();
item.Text = reader.GetString(reader.GetOrdinal("Fruits"));
items.Add(item);
}
}
}
}
}

  1. return items;

}

  1. 存储在 `Fruits` 属性是逗号分隔的id值,如 `1,5,4` . 这就是selectlistitem `Text` 财产会有损失的。您可能需要考虑对表进行规范化,以便在单个列(和记录)中存储1个水果ID值。
  2. 在从sqldatareader读取之前,我排除了空检查,假设您的id列不是空类型。如果它是可为null的类型,则可以使用 `IsDBNull` 方法(根据需要)

if (!reader.IsDBNull(reader.GetOrdinal("Id")))
{
item.Value = reader.GetInt32(reader.GetOrdinal("Id")).ToString();
}

展开查看全部
beq87vna

beq87vna2#

  1. @model Orders.Models.Fruits
  2. @using (Html.BeginForm())
  3. {
  4. @Html.AntiForgeryToken()
  5. <div class="form-horizontal">
  6. <h2>Fruits</h2>
  7. <hr />
  8. @Html.ValidationSummary(true, "", new { @class = "text-danger" })
  9. <div class="form-group">
  10. <div class="col-md-10">
  11. @Html.EditorFor(model => model.Mobileno, new { htmlAttributes = new { @class = "form-control", @id = "txtmobno", @Placeholder = "Mobile" } })
  12. @Html.ValidationMessageFor(model => model.Mobileno, "", new { @class = "text-danger" })
  13. </div>
  14. </div>
  15. <table cellpadding="0" cellspacing="0">
  16. <tr>
  17. <th>ItemsID</th>
  18. <th>Items</th>
  19. </tr>
  20. @foreach (var items in Model)
  21. {
  22. <tr>
  23. <td>@items.ItemsId</td>
  24. <td>@items.Items</td>
  25. </tr>
  26. }
  27. </table>
  28. <div class="form-group">
  29. <div class="col-md-offset-2 col-md-10">
  30. <input type="submit" value="Print" class="btn btn-default" />
  31. </div>
  32. </div>
  33. </div>

}

展开查看全部

相关问题