LINQ to SQL:检索数据并将其放入文本框中
本文关键字:文本 SQL to 检索 数据 LINQ | 更新日期: 2023-09-27 18:31:46
我是 LINQ 的新手,如果我的问题很愚蠢,很抱歉。
我需要从数据库中检索一些值并将它们放在文本框中。仅此而已。类似于下面的代码,但使用 LINQ:
编辑:实际上,我想检索多个字段。诸如此类:
SqlDataReader dr = new functionThatReturnsDataReader();
if (dr.HasRows) {
dr.Read();
txtId = dr["Id"].ToString();
txtName = dr["Name"].ToString();
}
我在网上找到了这个解决方案:
IDbCommand command = dc.GetCommand(query);
command.Connection = dc.Connection;
command.Connection.Open();
IDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
但是,如果我将 LINQ 与标准 executeReader 混合使用,我似乎正在抛弃它所代表的一切。没有理由构建数据上下文和查询,它们像 ADO 一样执行它们......
如何在不使用IDbCommand和IDataReader的情况下实现相同的目标?
我认为您需要从数据库创建一个 LINQ to SQL 类:http://msdn.microsoft.com/en-us/library/bb384428.aspx
然后,您可以将数据库表视为对象,并使用linq进行查询...如果没有您尝试运行的查询的细节,我无法为您构造 linq 查询,但创建 DBML 文件是第一步。
将 LINQ(或实体框架或其他 ORM)解决方案与 ADO.NET 解决方案进行比较时要考虑的一件事是,ORM 通常是强类型的。这意味着您需要对它们应用面向对象的原则。
如果要在同一函数中处理上下文、查询和结果,则可以执行以下操作:
using(var context = new YourContext())
{
txtId.Text = (from t in context.YourTable
where t.Conditions
select t.Id).FirstOrDefault();
}
如果它们不在同一函数中(实际上,它们不应该是),那么这样的事情就会起作用:
string FunctionThatReturnsId()
{
using(var context = new YourContext())
{
return (from t in context.YourTable
where t.Conditions
select t.Id).FirstOrDefault();
}
}
...
txtId.Text = FunctionThatReturnsId();
如果您
使用的是实体框架,则不需要任何查询,只需在文本框中输入id并点击搜索按钮,它将在该id的文本框中显示所有记录。
EntityFramework_mvcEntities db = new EntityFramework_mvcEntities();
int i =Convert.ToInt32( txtsrch.Text);
Employee p = db.Employees.Find(i);
TextBox1.Text = p.Name;
TextBox2.Text = p.Email;
TextBox4.Text = p.Mobile;
db.SaveChanges();
}
var q = from c in context.GetTable<tbl_user>()
where c.user_ID == lbuserid.Text.ToString()
select new
{
c.Username,
c.firstname
};
foreach (var item in q)
{
lbusername.Text = item.Username;
lbfirstname.Text = item.firstname;
}