C# 用三层取出数据库的值(只取一个值 不是list 也不是Bool类型的)
C#用三层取出数据库的值(只取一个值不是list也不是Bool类型的)sql:selectnamefromtablewhereid=1在winform中给一个ID得到na...
C# 用三层取出数据库的值(只取一个值 不是list 也不是Bool类型的)
sql: select name from table where id=1
在winform 中 给一个ID 得到name
帮帮忙 帮我解决了 分数全给你 万分感谢!!! 展开
sql: select name from table where id=1
在winform 中 给一个ID 得到name
帮帮忙 帮我解决了 分数全给你 万分感谢!!! 展开
2个回答
推荐于2016-08-18
展开全部
都用到三层,那就来个实体实例化的通用查询吧,根据什么查询都可以,何必就写一个单一的查询呢?反正后面很多地方都要用到的。
在 Model层定义 实体类 Book (你根据自己的数据表定义)。
namespace BookModel
{
public class Book
{
string bookname;
public string Bookname
{
get { return bookname; }
set { bookname = value; }
}
//封装所以表 列名 ,自己按照这样写,要注意类型。
}
}
好了,去数据层写 数据操作代码了,添加一个方法根据sql查询
private static Book GetbookBysql(string sql)
{
SqlDataReader reader = null;
Book book = new Book();
try
{
reader = DBHelper.GetReader(sql);
if (reader.Read())
{
book.Bookname = (string)reader["Name"];
//其他的列名都按照这样写,后面中括号是对应表里面的列名
// 比如
//book.Bookid = (int)reader.["ID"];
reader.Close();
}
else
{
reader.Close();
return null;
}
}
catch(SqlException ee)
{
Console.WriteLine(ee.Message);
book= null;
reader.Close();
}
return book;
}
好了现在要查什么就简单了,比如 根据name 查询,id 查询,类别查询。。。。。
都写一个sql就ok了。
根据name查询
public static Book GetbookByname(string name)
{
string sql = "select * from BookInfo where BookName= "+name;
return GetshopBysql(sql);
}
根据id查询
public static Book GetbookByID(int id)
{
string sql = "select * from BookInfo where ID = " + id;
return GetbookBysql(sql);
}
其他的单一查询都是这样写,就会返回 实例book的信息了,管理层自己去写一下,应该会了吧。
public static Book GetNameById(id)
{
return BookService.GetbookByID(int id);
}
应用层使用,让它显示出来,就更加简单了。
int id = Convert.ToInt32(textbox_ID.Text);
Book book = new Book();
book = BookManger.GetNameById(id);
textbox_name.Text = book.Bookname;
//其他的所以信息都是 book.xxx 这样显示
//很方便吧,要那哪个就写哪个
追问
数据层中 DBHelper.GetReader(sql) 你没有写呢 能不能补充一下 我马上采纳
真的 谢谢了哈
追答
DBHelper 你没有?你怎么开发三层??
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询