首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从数据库中为MVC中的每个记录获取用逗号分隔的项目列表?

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

Stack Overflow用户
提问于 2018-06-14 02:29:32
回答 2查看 312关注 0票数 0

要通过列表框(多选)存储到数据库,请参阅以下链接

https://www.aspsnippets.com/Articles/ASPNet-MVC-Get-ListBox-Selected-Text-and-Selected-Value-in-Controller.aspx

在这里,这个链接实际上会提醒messagebox列表框中列出的项。

作为上面提到的链接...我存储了用逗号分隔的水果数据,比如

Fruits.FruitsId.ToArray items = string.Join(",",var ());

下面的输出是

ID |水果| Mobileno

1| 1,5,4 | 9876543210

2| 2,3,8 | 9876542103

但现在我实际上需要通过ado.net从数据库中获取特定记录的数据,这些数据是基于在文本框中输入的mobileno,以及表中的水果列表的记录。

这就是我如何使用ado.net将数据插入到fruits表中

代码语言:javascript
复制
   public void Addfruits(Fruits bfitems)
   {
            try   
            {
             connection(); 
            var items = string.Join(",", bfitems.FruitsId.ToArray());
            string insertText = "insert into FruitItems(Items,Mobileno) 
                VALUES (@Items,@Mobileno)";
            MySqlCommand command = new MySqlCommand(insertText, con);
            command.Parameters.AddWithValue("@Items", items);
            command.Parameters.AddWithValue("@Mobileno", bfitems.Mobileno);
            if (insertText != null)
            {
                con.Open();
                command.ExecuteNonQuery();
            }

        }
        catch (Exception ex)
        {

        }
        finally
        {
            con.Close();
        }
    }

获取记录..。

代码语言:javascript
复制
     private static List<SelectListItem> GetFruits(Fruits bf)
    {
        List<SelectListItem> items = new List<SelectListItem>();
        string constr = 
        ConfigurationManager.ConnectionStrings["orders"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            string query = " SELECT * FROM FruitItems where 
            Mobileno=@Mobileno";
            MySqlCommand cmd = new MySqlCommand(query);
            cmd.Parameters.AddWithValue("@Mobileno", bf.Mobileno);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();

        }

        return items;
    }
EN

回答 2

Stack Overflow用户

发布于 2018-06-14 03:12:42

ExecuteNonQuery执行您的查询并返回受查询影响的记录数(插入/更新了多少行)。如果希望从表中获取数据,则应该使用返回SqlDataReaderExecuteReader方法

代码语言:javascript
复制
private static List<SelectListItem> GetFruits(Fruits bf)
{
    var items = new List<SelectListItem>();
    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);
                    }
                }
            }
        }
    }

    return items;
}

存储在Fruits属性中的值是逗号分隔的ID值,如1,5,4。这就是你的SelectListItem的Text属性将要拥有的。您可能希望考虑对表进行规范化,以便在单个列(和记录)中存储1个FruitId值。

我在读取SqlDataReader之前排除了null检查,假设您的ID列不是NULL类型。如果它是可以为空的类型,则可以根据需要使用IsDBNull方法

代码语言:javascript
复制
if (!reader.IsDBNull(reader.GetOrdinal("Id")))
{
    item.Value = reader.GetInt32(reader.GetOrdinal("Id")).ToString();
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-14 04:44:52

代码语言:javascript
复制
@model Orders.Models.Fruits
@using (Html.BeginForm())  
{
@Html.AntiForgeryToken()


<div class="form-horizontal">       
    <h2>Fruits</h2>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })


    <div class="form-group">

        <div class="col-md-10">
            @Html.EditorFor(model => model.Mobileno, new { htmlAttributes = new { @class = "form-control", @id = "txtmobno", @Placeholder = "Mobile" } })
            @Html.ValidationMessageFor(model => model.Mobileno, "", new { @class = "text-danger" })
        </div>
    </div>

    <table cellpadding="0" cellspacing="0">
            <tr>
                <th>ItemsID</th>
                <th>Items</th>
            </tr>
            @foreach (var items in Model)
            {
                <tr>
                    <td>@items.ItemsId</td>
                    <td>@items.Items</td>
                </tr>
            }
        </table>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Print" class="btn btn-default" />
        </div>
    </div>

</div>

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50843956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档