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

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

要通过列表框(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将数据插入到水果表中

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();
        }
    }

去拿唱片。。。。

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;
    }
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);
}
}
}
}
}

return items;

}

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

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

beq87vna

beq87vna2#

@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>

}

相关问题