欢迎光临
我们一直在努力

分层体系结构(MVC)二-.NET教程,评论及其它

建站超值云服务器,限时71元/月

 

二、entityclass

entityclass中的每一个文件对应数据库中的一张表,对应其字段,以及对表的操作的封装,如查询,增加、删除等。

所有的entityclass继承了一个基类baseentity,基类的代码如下,主要是一些接口

imports system.data
namespace entityclass
    public class baseentity
        public strsql as string
        public database as data.datafactory
        public dt as datatable
        构造函数
        public sub new()
            me.database = new data.datafactory
            me.dt = new datatable
        end sub
        应该做成抽象的abstract
        public function load() as integer
        end function

        public function creat() as integer
        end function
        public function updata() as integer
        end function
        public function delete() as integer
        end function

        public function getdataontable() as datatable

            me.dt = me.database.datatableresult(me.strsql)
            return dt
        end function

        public function getoneobj() as object

            return me.database.readonelog(me.strsql)
        end function

        public function executesql() as integer
            return me.database.executenonquery(me.strsql)

        end function
    end class
end namespace

这里以对用户表的操作为例,来说明entityclass的结构,代码如下:

imports system.data

namespace entityclass
    public class s_user
        inherits baseentity

        const arraylength = 100

        public id_i as string
        用户名
        public username_s as string
        用户密码
        public password_s as string

        add by gb 20050725
        dim array1(arraylength) as string
        dim array2(arraylength, 1) as string
        dim sqlarray(arraylength, 1) as string
        dim len1 as integer = 0
        dim len2 as integer = 0
        dim sqllen as integer = 0

        private mydataset as new dataset
        对array2赋初值
        private sub setarray2()
            array2(0, 0) = “id_i”
            array2(1, 0) = “username_s”
            array2(2, 0) = “password_s”

            array2(0, 1) = id_i
            array2(1, 1) = username_s
            array2(2, 1) = password_s
        end sub
        通过读取数据库中的列名,对array1赋值
        private sub setdbcoloum()
            loaddynamicdataset(mydataset)
            dim m_i as integer = 0
            dim m_len as integer = 0
            m_len = me.mydataset.tables.item(0).select.length()

            m_len = me.mydataset.tables.item(0).columns.count

            for m_i = 0 to arraylength
                if not me.mydataset.tables.item(0).columns(m_i) is nothing then
                    m_len = m_len + 1
                end if
            next
            msgbox(“m_len” + m_len.tostring)
            for m_i = 0 to m_len – 1
                array1(m_i) = me.mydataset.tables.item(0).columns(m_i).columnname.tostring
            next

            array1(0) = me.mydataset.tables.item(0).columns(0).columnname.tostring
            array1(0) = “id_i”
            array1(1) = “password_s”
        end sub
        通过array1和array2的处理,对sqlarray赋值;最后的结果是sqlarray中,依次对应数据库中的列的值
        public function setdynamiccoloum()
            setarray2()
            setdbcoloum()
            len1 = 0
            len2 = 0
            sqllen = 0
            dim i as integer
            dim j as integer = 0
          
            for i = 0 to arraylength
                if not array1(i) is nothing then
                    len1 = len1 + 1
                else
                    exit for
                end if
            next
            msgbox(“len1=” + len1.tostring)
            for i = 0 to arraylength
                if not array2(i, 0) is nothing then
                    len2 = len2 + 1
                else
                    exit for
                end if
            next
            msgbox(“len2=” + len2.tostring)
            for i = 0 to len1 – 1
                for j = 0 to len2 – 1
                    if array1(i) = array2(j, 0) then
                        sqlarray(i, 0) = array2(j, 0)
                        sqlarray(i, 1) = array2(j, 1)
                        exit for
                 
                    end if
                next
            next

            for i = 0 to arraylength
                if not sqlarray(i, 0) is nothing then
                    sqllen = sqllen + 1
                else
                    exit for
                end if
            next

            for i = 0 to sqllen – 1
                msgbox(sqlarray(i, 1))
            next
            msgbox(sqlarray(0))
            msgbox(sqlarray(1))

        end function
        得到对应数据库中的表的信息
        public sub loaddynamicdataset(byref dataset as dataset)
            mybase.strsql = “select * from s_user”
            mybase.database.selectsqlsrvrows(dataset, mybase.strsql)
        end sub

        add end

        public function count() as integer
            return convert.toint32(mybase.database.readonelog(“select count(*) from s_user”))
        end function
        public sub new()
            todo: 在此处添加构造函数逻辑
            me.init()
            setdynamiccoloum()
        end sub
        public function init()
            me.id_i = “”
            me.username_s = “”
            me.password_s = “”
        end function
        根据id得到一条用户信息
        public shadows function load() as integer

            mybase.strsql = “select * from s_user where id_i=” + me.id_i
            dim dt as datatable = mybase.database.datatableresult(strsql)
            if (dt.rows.count > 0) then
                if findinsqlarray(“username_s”, sqlarray) > 0 then
                    me.username_s = dt.rows(0)(“username_s”).tostring()
                end if
                if findinsqlarray(“password_s”, sqlarray) > 0 then
                    password_s = dt.rows(0)(“password_s”).tostring()
                end if

                me.username_s = dt.rows(0)(“username_s”).tostring()
                me.password_s = dt.rows(0)(“password_s”).tostring()
                return dt.rows.count
            else
                return 0
            end if
        end function

        public function getuser(byval username as string, byval password as string) as integer
            msgbox(3)
            mybase.strsql = “select * from s_user where username_s=” + username + ” and password_s=” + password + “”
            dim dt as datatable = mybase.database.datatableresult(strsql)
            if (dt.rows.count > 0) then

                me.id_i = dt.rows(0)(“id_i”).tostring()
                me.username_s = dt.rows(0)(“username_s”).tostring()
                me.password_s = dt.rows(0)(“password_s”).tostring()

                return dt.rows.count

            else

                return 0
            end if
        end function
        添加用户
        public shadows function creatuser() as integer
            dim i as integer
            dim col as string
            dim colval as string

            for i = 1 to sqllen – 2
                col = col + sqlarray(i, 0) + “,”
                colval = colval + sqlarray(i, 1) + “,”
            next
            col = col + sqlarray(sqllen – 1, 0)
            colval = colval + sqlarray(sqllen – 1, 1)
            mybase.strsql = “insert into s_user (” + col + “)” + “values (” + colval + “)”

            mybase.strsql = “insert into s_user (” + _
            “username_s,password_s” + “)” + _
            “values (” + username_s + “,” + password_s + “)”
            msgbox(“sql2=” + strsql)
            return mybase.database.executenonquery(mybase.strsql)
        end function
        更新用户
        public shadows function updata() as integer
            dim i as integer
            dim str as string
            for i = 1 to sqllen – 2
                str = str + sqlarray(i, 0) + “=” + sqlarray(i, 1) + “,”
            next
            str = str + sqlarray(sqllen – 1, 0) + “=” + sqlarray(sqllen – 1, 1) + “”
            mybase.strsql = “update s_user set ” + str + ” where id_i=” + me.id_i
            msgbox(strsql)
            mybase.strsql = “update s_user set username_s=” + me.username_s + “,password_s=” + me.password_s + ” where id_i=” + me.id_i
            return mybase.database.executenonquery(mybase.strsql)
        end function
        删除用户
        public shadows function delete() as integer

            mybase.strsql = “delete from s_user where id_i=” + me.id_i.tostring()
            return mybase.database.executenonquery(mybase.strsql)
        end function
        public sub loadusers(byref dataset as dataset)
            mybase.strsql = “select * from s_user”
            mybase.database.selectsqlsrvrows(dataset, mybase.strsql)
        end sub
        public function setentity(byref myparameter as business.login.userparameter) as integer
            try
                me.id_i = myparameter.get_id
                me.username_s = myparameter.get_username
                me.password_s = myparameter.get_password
                setdynamiccoloum()
            catch ex as exception
                return 0
            end try
            return 1
        end function
        public function findinsqlarray(byval prop as string, byval sqlarray(,) as string) as integer
            dim m as integer = 0
            for m = 0 to arraylength
                if prop.equals(sqlarray(m, 0)) then
                    return 1
                end if
            next
            return 0
        end function
        根据sql语句查询
        public function getobjbyqry(byval str as string, byref mp() as business.login.userparameter) as integer
            mybase.strsql = “select * from ” + “s_user ” + str
            dim dt as datatable = mybase.database.datatableresult(strsql)
            dim m_i as integer
            redim mp(dt.rows.count – 1)
            if (dt.rows.count > 0) then
                for m_i = 0 to dt.rows.count() – 1
                    mp(m_i) = new business.login.userparameter
                    if findinsqlarray(“username_s”, sqlarray) > 0 then
                        mp(m_i).set_username(dt.rows(m_i)(“username_s”).tostring())
                    end if
                    if findinsqlarray(“password_s”, sqlarray) > 0 then
                        mp(m_i).set_password(dt.rows(0)(“password_s”).tostring())
                    end if
                next
            else
                return 0
            end if
        end function

    end class
end namespace

可以看到,代码中定义了一系列的属性值,对应于用户表中的各个字段。还有对如添加用户,删除用户等各种操作的封装,调用了data层中的方法,并且向以后将要涉及到的business层提供了接口。所有的sql语句都是在这里拼写的。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 分层体系结构(MVC)二-.NET教程,评论及其它
分享到: 更多 (0)

相关推荐

  • 暂无文章