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
帮帮忙 帮我解决了 分数全给你 万分感谢!!!
展开
 我来答
匿名用户
推荐于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 你没有?你怎么开发三层??

丢丢的小丢丢
2014-12-05 · 超过11用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:13.4万
展开全部
你的sql语句不是已经的到name了吗?
追问
这么简单  我就不会问你了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式