网上购物系统(Task002)——通用数据库访问函数
一、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
上一篇: 设计模式之一观察者模式
下一篇: asp.net如何去掉HTML标记