要通过列表框(多选)存储到数据库,请参阅以下链接
在这里,这个链接实际上会提醒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表中
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;
}
发布于 2018-06-14 03:12:42
ExecuteNonQuery
执行您的查询并返回受查询影响的记录数(插入/更新了多少行)。如果希望从表中获取数据,则应该使用返回SqlDataReader
的ExecuteReader
方法
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
方法
if (!reader.IsDBNull(reader.GetOrdinal("Id")))
{
item.Value = reader.GetInt32(reader.GetOrdinal("Id")).ToString();
}
发布于 2018-06-14 04:44:52
@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>
}
https://stackoverflow.com/questions/50843956
复制相似问题