一、try…catch…finally结构

[csharp]  using system; 
using system.data; 
using system.data.sqlclient; 
using system.configuration; 
using system.collections.generic; 
using westgarden.model; 
 
namespace westgarden.web 

    public partial class default1 : system.web.ui.page 
    { 
        protected void page_load(object sender, eventargs e) 
        { 
            ilist<categoryinfo> catogories = new list<categoryinfo>(); 
 
            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring; 
            string cmdtext = “select * from category”; 
 
            sqlcommand cmd = new sqlcommand(); 
 
            sqlconnection conn = new sqlconnection(connectionstring); 
 
            try 
            { 
                cmd.connection = conn; 
                cmd.commandtype = commandtype.text; 
                cmd.commandtext = cmdtext; 
 
                conn.open(); 
 
                sqldatareader rdr = cmd.executereader(); 
                while (rdr.read()) 
                { 
                    categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2)); 
                    catogories.add(category); 
                } 
                rdr.close(); 
            } 
            finally 
            { 
                conn.close(); 
            } 
 
            ddlcategories.datasource = catogories; 
            ddlcategories.datatextfield = “name”; 
            ddlcategories.datavaluefield = “categoryid”; 
            ddlcategories.databind(); 
        } 
    } 

using system;
using system.data;
using system.data.sqlclient;
using system.configuration;
using system.collections.generic;
using westgarden.model;

namespace westgarden.web
{
    public partial class default1 : system.web.ui.page
    {
        protected void page_load(object sender, eventargs e)
        {
            ilist<categoryinfo> catogories = new list<categoryinfo>();

            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring;
            string cmdtext = “select * from category”;

            sqlcommand cmd = new sqlcommand();

            sqlconnection conn = new sqlconnection(connectionstring);

            try
            {
                cmd.connection = conn;
                cmd.commandtype = commandtype.text;
                cmd.commandtext = cmdtext;

                conn.open();

                sqldatareader rdr = cmd.executereader();
                while (rdr.read())
                {
                    categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2));
                    catogories.add(category);
                }
                rdr.close();
            }
            finally
            {
                conn.close();
            }

            ddlcategories.datasource = catogories;
            ddlcategories.datatextfield = “name”;
            ddlcategories.datavaluefield = “categoryid”;
            ddlcategories.databind();
        }
    }
}
 

二、using()结构

[csharp] using system; 
using system.data; 
using system.data.sqlclient; 
using system.configuration; 
using system.collections.generic; 
using westgarden.model; 
 
namespace westgarden.web 

    public partial class default2 : system.web.ui.page 
    { 
        protected void page_load(object sender, eventargs e) 
        { 
            ilist<categoryinfo> catogories = new list<categoryinfo>(); 
 
            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring; 
            string cmdtext = “select * from category”; 
 
            sqlcommand cmd = new sqlcommand(); 
 
            //简单地说,using()结构等同于前面的try…finally结构,隐式关闭了conn。  
            using(sqlconnection conn = new sqlconnection(connectionstring)) 
            { 
                cmd.connection = conn; 
                cmd.commandtype = commandtype.text; 
                cmd.commandtext = cmdtext; 
 
                conn.open(); 
 
                sqldatareader rdr = cmd.executereader(); 
                while (rdr.read()) 
                { 
                    categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2)); 
                    catogories.add(category); 
                } 
                rdr.close(); 
            } 
 
            ddlcategories.datasource = catogories; 
            ddlcategories.datatextfield = “name”; 
            ddlcategories.datavaluefield = “categoryid”; 
            ddlcategories.databind(); 
        } 
    } 

using system;
using system.data;
using system.data.sqlclient;
using system.configuration;
using system.collections.generic;
using westgarden.model;

namespace westgarden.web
{
    public partial class default2 : system.web.ui.page
    {
        protected void page_load(object sender, eventargs e)
        {
            ilist<categoryinfo> catogories = new list<categoryinfo>();

            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring;
            string cmdtext = “select * from category”;

            sqlcommand cmd = new sqlcommand();

            //简单地说,using()结构等同于前面的try…finally结构,隐式关闭了conn。
            using(sqlconnection conn = new sqlconnection(connectionstring))
            {
                cmd.connection = conn;
                cmd.commandtype = commandtype.text;
                cmd.commandtext = cmdtext;

                conn.open();

                sqldatareader rdr = cmd.executereader();
                while (rdr.read())
                {
                    categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2));
                    catogories.add(category);
                }
                rdr.close();
            }

            ddlcategories.datasource = catogories;
            ddlcategories.datatextfield = “name”;
            ddlcategories.datavaluefield = “categoryid”;
            ddlcategories.databind();
        }
    }
}
 

三、通用的访问函数

[csharp] using system; 
using system.data; 
using system.data.sqlclient; 
using system.configuration; 
using system.collections.generic; 
using westgarden.model; 
 
namespace westgarden.web 

    public partial class default3 : system.web.ui.page 
    { 
        protected void page_load(object sender, eventargs e) 
        { 
            ilist<categoryinfo> catogories = new list<categoryinfo>(); 
 
            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring; 
            string cmdtext = “select * from category”; 
 
            sqldatareader rdr = executereader(connectionstring, commandtype.text, cmdtext); 
 
            while (rdr.read()) 
            { 
                categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2)); 
                catogories.add(category); 
            } 
            rdr.close(); 
 
            ddlcategories.datasource = catogories; 
            ddlcategories.datatextfield = “name”; 
            ddlcategories.datavaluefield = “categoryid”; 
            ddlcategories.databind(); 
        } 
 
        public static sqldatareader executereader(string connectionstring, commandtype cmdtype, string cmdtext) 
        { 
            sqlcommand cmd = new sqlcommand(); 
 
            sqlconnection conn = new sqlconnection(connectionstring); 
 
            try 
            { 
                cmd.connection = conn; 
                cmd.commandtype = cmdtype; 
                cmd.commandtext = cmdtext; 
 
                conn.open(); 
                 
                //如果创建了 sqldatareader 并将 commandbehavior 设置为 closeconnection,  
                //则关闭 sqldatareader 会自动关闭此连接  
                sqldatareader rdr = cmd.executereader(commandbehavior.closeconnection); 
                return rdr; 
            } 
            catch 
            { 
                conn.close(); 
                throw; 
            } 
            //finally  
            //{  
            //    conn.close();  
            //}  
        } 
    } 

using system;
using system.data;
using system.data.sqlclient;
using system.configuration;
using system.collections.generic;
using westgarden.model;

namespace westgarden.web
{
    public partial class default3 : system.web.ui.page
    {
        protected void page_load(object sender, eventargs e)
        {
            ilist<categoryinfo> catogories = new list<categoryinfo>();

            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring;
            string cmdtext = “select * from category”;

            sqldatareader rdr = executereader(connectionstring, commandtype.text, cmdtext);

            while (rdr.read())
            {
                categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2));
                catogories.add(category);
            }
            rdr.close();

            ddlcategories.datasource = catogories;
            ddlcategories.datatextfield = “name”;
            ddlcategories.datavaluefield = “categoryid”;
            ddlcategories.databind();
        }

        public static sqldatareader executereader(string connectionstring, commandtype cmdtype, string cmdtext)
        {
            sqlcommand cmd = new sqlcommand();

            sqlconnection conn = new sqlconnection(connectionstring);

            try
            {
                cmd.connection = conn;
                cmd.commandtype = cmdtype;
                cmd.commandtext = cmdtext;

                conn.open();
               
                //如果创建了 sqldatareader 并将 commandbehavior 设置为 closeconnection,
                //则关闭 sqldatareader 会自动关闭此连接
                sqldatareader rdr = cmd.executereader(commandbehavior.closeconnection);
                return rdr;
            }
            catch
            {
                conn.close();
                throw;
            }
            //finally
            //{
            //    conn.close();
            //}
        }
    }
}
 

四、完善一下通用数据库访问函数

[csharp] using system; 
using system.data; 
using system.data.sqlclient; 
using system.configuration; 
using system.collections.generic; 
using westgarden.model; 
 
namespace westgarden.web 

    public partial class default4 : system.web.ui.page 
    { 
        protected void page_load(object sender, eventargs e) 
        { 
            ilist<categoryinfo> catogories = new list<categoryinfo>(); 
 
            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring; 
            string cmdtext = “select * from category”; 
 
            sqldatareader rdr = executereader(connectionstring, commandtype.text, cmdtext,null); 
 
            while (rdr.read()) 
            { 
                categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2)); 
                catogories.add(category); 
            } 
            rdr.close(); 
 
            ddlcategories.datasource = catogories; 
            ddlcategories.datatextfield = “name”; 
            ddlcategories.datavaluefield = “categoryid”; 
            ddlcategories.databind(); 
        } 
 
        public static sqldatareader executereader(string connectionstring, commandtype cmdtype, string cmdtext, params sqlparameter[] commandparameters) 
        { 
            sqlcommand cmd = new sqlcommand(); 
            sqlconnection conn = new sqlconnection(connectionstring); 
 
            try 
            { 
                //cmd.connection = conn;  
                //cmd.commandtype = cmdtype;  
                //cmd.commandtext = cmdtext;  
                 
                //conn.open();  
 
                preparecommand(cmd, conn, null, cmdtype, cmdtext, commandparameters); 
 
                //如果创建了 sqldatareader 并将 commandbehavior 设置为 closeconnection,  
                //则关闭 sqldatareader 会自动关闭此连接。  
                sqldatareader rdr = cmd.executereader(commandbehavior.closeconnection); 
                cmd.parameters.clear(); 
                return rdr; 
            } 
            catch 
            { 
                conn.close(); 
                throw; 
            } 
            //finally  
            //{  
            //    conn.close();  
            //}  
        } 
 
        private static void preparecommand(sqlcommand cmd, sqlconnection conn, sqltransaction trans, commandtype cmdtype, string cmdtext, sqlparameter[] cmdparms) 
        { 
 
            if (conn.state != connectionstate.open) 
                conn.open(); 
 
            cmd.connection = conn; 
            cmd.commandtext = cmdtext; 
 
            if (trans != null) 
                cmd.transaction = trans; 
 
            cmd.commandtype = cmdtype; 
 
            if (cmdparms != null) 
            { 
                foreach (sqlparameter parm in cmdparms) 
                    cmd.parameters.add(parm); 
            } 
        } 
    } 

using system;
using system.data;
using system.data.sqlclient;
using system.configuration;
using system.collections.generic;
using westgarden.model;

namespace westgarden.web
{
    public partial class default4 : system.web.ui.page
    {
        protected void page_load(object sender, eventargs e)
        {
            ilist<categoryinfo> catogories = new list<categoryinfo>();

            string connectionstring = configurationmanager.connectionstrings[“netshopconnstring”].connectionstring;
            string cmdtext = “select * from category”;

            sqldatareader rdr = executereader(connectionstring, commandtype.text, cmdtext,null);

            while (rdr.read())
            {
                categoryinfo category = new categoryinfo(rdr.getstring(0), rdr.getstring(1), rdr.getstring(2));
                catogories.add(category);
            }
            rdr.close();

            ddlcategories.datasource = catogories;
            ddlcategories.datatextfield = “name”;
            ddlcategories.datavaluefield = “categoryid”;
            ddlcategories.databind();
        }

        public static sqldatareader executereader(string connectionstring, commandtype cmdtype, string cmdtext, params sqlparameter[] commandparameters)
        {
            sqlcommand cmd = new sqlcommand();
            sqlconnection conn = new sqlconnection(connectionstring);

            try
            {
                //cmd.connection = conn;
                //cmd.commandtype = cmdtype;
                //cmd.commandtext = cmdtext;
               
                //conn.open();

                preparecommand(cmd, conn, null, cmdtype, cmdtext, commandparameters);

                //如果创建了 sqldatareader 并将 commandbehavior 设置为 closeconnection,
                //则关闭 sqldatareader 会自动关闭此连接。
                sqldatareader rdr = cmd.executereader(commandbehavior.closeconnection);
                cmd.parameters.clear();
                return rdr;
            }
            catch
            {
                conn.close();
                throw;
            }
            //finally
            //{
            //    conn.close();
            //}
        }

        private static void preparecommand(sqlcommand cmd, sqlconnection conn, sqltransaction trans, commandtype cmdtype, string cmdtext, sqlparameter[] cmdparms)
        {

            if (conn.state != connectionstate.open)
                conn.open();

            cmd.connection = conn;
            cmd.commandtext = cmdtext;

            if (trans != null)
                cmd.transaction = trans;

            cmd.commandtype = cmdtype;

            if (cmdparms != null)
            {
                foreach (sqlparameter parm in cmdparms)
                    cmd.parameters.add(parm);
            }
        }
    }
}
 

五、使用reapter显示分类名称

1、窗体代码:

[html] <:repeater id=”repcategories” runat=”server”> 
    <headertemplate> 
        <table cellspacing=”0″ border=”0″ style=”border-collapse: collapse;”> 
    </headertemplate> 
    <itemtemplate> 
        <tr> 
            <td> 
                <asp:hyperlink runat=”server” id=”lnkcategory” navigateurl='<%# string.format(“~/items.aspx?page=0&categoryid={0}”, eval(“categoryid”)) %>’ 
                    text='<%# eval(“name”) %>’ /><asp:hiddenfield runat=”server” id=”hidcategoryid” value='<%# eval(“categoryid”) %>’ /> 
            </td> 
        </tr> 
    </itemtemplate> 
    <footertemplate> 
        </table> 
    </footertemplate> 
</asp:repeater> 
<asp:repeater id=”repcategories” runat=”server”>
    <headertemplate>
        <table cellspacing=”0″ border=”0″ style=”border-collapse: collapse;”>
    </headertemplate>
    <itemtemplate>
        <tr>
            <td>
                <asp:hyperlink runat=”server” id=”lnkcategory” navigateurl='<%# string.format(“~/items.aspx?page=0&categoryid={0}”, eval(“categoryid”)) %>’
                    text='<%# eval(“name”) %>’ /><asp:hiddenfield runat=”server” id=”hidcategoryid” value='<%# eval(“categoryid”) %>’ />
            </td>
        </tr>
    </itemtemplate>
    <footertemplate>
        </table>
    </footertemplate>
</asp:repeater>
 
2、代码页绑定代码:

[csharp] repcategories.datasource = catogories; 
repcategories.databind(); 

 

作者 yousuosi