下面这段代码为了查询相邻的三条记录,我用了三次连接,这样很浪费,不知道怎么样才能优化一下?public partial class Default2 : System.Web.UI.Page
{
int n_id;
protected void Page_Load(object sender, EventArgs e)
{
n_id = Int32.Parse(Request.QueryString["id"]);
try
{
OleDbConnection acccon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/1.mdb").ToString());
string selectCmd = "select * from [news] where [NID]=" + n_id;
string selectForntNews = "select top 1 from [news] where [NID]<" + n_id;
string selectNextNews = "select top 1 from [news] where [NID]>" + n_id;
OleDbCommand acccom = new OleDbCommand(selectCmd, acccon);
acccon.Open();
OleDbDataReader race = acccom.ExecuteReader();
while (race.Read())
{
Label1.Text = race["N_title"].ToString();
Label2.Text = race["N_content"].ToString();
Label8.Text = race["N_time"].ToString();
Label9.Text = race["N_come"].ToString();
}
race.Close();
acccon.Close();
showForntTitle();
showNextTitle();
}
catch (Exception ex)
{
//Response.Write(ex);
}
}
private void showForntTitle()
{
OleDbConnection accon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/1.mdb").ToString());
string selectForntNews = "select top 1 * from [news] where [NID]>" + n_id;
OleDbCommand com = new OleDbCommand(selectForntNews, accon);
accon.Open();
OleDbDataReader race = com.ExecuteReader();
if (race.Read())
{
HyperLink3.Visible = true;
HyperLink3.NavigateUrl = "~/showNews.aspx?id=" + race["NID"].ToString();
HyperLink3.Text += race["N_title"].ToString();
}
else
{
HyperLink3.Visible = false;
}
race.Close();
accon.Close();
}
private void showNextTitle()
{
OleDbConnection accon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/1.mdb").ToString());
string selectForntNews = "select top 1 * from [news] where [NID]<" + n_id + " order by [NID] desc";
OleDbCommand com = new OleDbCommand(selectForntNews, accon);
accon.Open();
OleDbDataReader race = com.ExecuteReader();
if (race.Read())
{
HyperLink4.Visible = true;
HyperLink4.NavigateUrl = "~/showNews.aspx?id=" + race["NID"].ToString();
HyperLink4.Text += race["N_title"].ToString();
}
else
{
HyperLink4.Visible = false;
}
race.Close();
accon.Close();
}
{
int n_id;
protected void Page_Load(object sender, EventArgs e)
{
n_id = Int32.Parse(Request.QueryString["id"]);
try
{
OleDbConnection acccon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/1.mdb").ToString());
string selectCmd = "select * from [news] where [NID]=" + n_id;
string selectForntNews = "select top 1 from [news] where [NID]<" + n_id;
string selectNextNews = "select top 1 from [news] where [NID]>" + n_id;
OleDbCommand acccom = new OleDbCommand(selectCmd, acccon);
acccon.Open();
OleDbDataReader race = acccom.ExecuteReader();
while (race.Read())
{
Label1.Text = race["N_title"].ToString();
Label2.Text = race["N_content"].ToString();
Label8.Text = race["N_time"].ToString();
Label9.Text = race["N_come"].ToString();
}
race.Close();
acccon.Close();
showForntTitle();
showNextTitle();
}
catch (Exception ex)
{
//Response.Write(ex);
}
}
private void showForntTitle()
{
OleDbConnection accon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/1.mdb").ToString());
string selectForntNews = "select top 1 * from [news] where [NID]>" + n_id;
OleDbCommand com = new OleDbCommand(selectForntNews, accon);
accon.Open();
OleDbDataReader race = com.ExecuteReader();
if (race.Read())
{
HyperLink3.Visible = true;
HyperLink3.NavigateUrl = "~/showNews.aspx?id=" + race["NID"].ToString();
HyperLink3.Text += race["N_title"].ToString();
}
else
{
HyperLink3.Visible = false;
}
race.Close();
accon.Close();
}
private void showNextTitle()
{
OleDbConnection accon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/1.mdb").ToString());
string selectForntNews = "select top 1 * from [news] where [NID]<" + n_id + " order by [NID] desc";
OleDbCommand com = new OleDbCommand(selectForntNews, accon);
accon.Open();
OleDbDataReader race = com.ExecuteReader();
if (race.Read())
{
HyperLink4.Visible = true;
HyperLink4.NavigateUrl = "~/showNews.aspx?id=" + race["NID"].ToString();
HyperLink4.Text += race["N_title"].ToString();
}
else
{
HyperLink4.Visible = false;
}
race.Close();
accon.Close();
}
解决方案 »
- ★★★★★实时查询数据库某个字段的值,然后根据值给用户发邮件★★★★★ ---------在线急等!
- ListBox选取Multiple后,如何不按ctrl可以选取多行?
- 导出报表时出错,提示【无法找到清单资源中的报告。请创建项目并再次尝试】?急!
- 点击GridView中嵌套的按钮,跳到另一面,同时要传一个参数,如何实现?
- 请大侠们给个思路,动态生成数据库的,多谢
- 求助:怎么我使用IE WEB控件中的Toolbar控件是显示和设置的不一样??
- 千虫网络新闻正式版下载问题
- 如何用asp.net 将网站转换为繁体
- asp中除了rs("字段名")还有没有其它获得记录值的方法
- 请教一下 ,简单的问题
- 自定义控件的问题
- 怎么设为回车键为默认的登陆按钮
select * from [news] where [NID]=28 union select top 1 * from [news] where [NID]>28 union select top 1 * from [news] where [NID]<28 order by [NID] desc
{
if (!IsPostBack)
{
int n_id = Int32.Parse(Request.QueryString["id"]);
HyperLink3.Visible = false;
HyperLink4.Visible = false;
try
{
OleDbConnection acccon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ Server.MapPath("~/1.mdb").ToString());
string selectCmd = "select * from [news] where [NID]='" + n_id
+ "' union "
+ "select top 1 * from [news] where [NID]<'" + n_id
+ "' union "
+ "select top 1 * from [news] where [NID]>" + n_id + "'";
OleDbCommand acccom = new OleDbCommand(selectCmd, acccon);
acccon.Open();
OleDbDataReader race = acccom.ExecuteReader();
while (race.Read())
{
if (int.Parse(race["NID"].ToString()) == n_id)
{
Label1.Text = race["N_title"].ToString();
Label2.Text = race["N_content"].ToString();
Label8.Text = race["N_time"].ToString();
Label9.Text = race["N_come"].ToString();
}
else if (int.Parse(race["NID"].ToString()) < n_id)
{
HyperLink3.Visible = true;
HyperLink3.NavigateUrl = "~/showNews.aspx?id=" + race["NID"].ToString();
HyperLink3.Text += race["N_title"].ToString();
}
else if (int.Parse(race["NID"].ToString()) < n_id)
{
HyperLink4.Visible = true;
HyperLink4.NavigateUrl = "~/showNews.aspx?id=" + race["NID"].ToString();
HyperLink4.Text += race["N_title"].ToString();
}
}
race.Close();
acccon.Close();
}
catch (Exception ex)
{
//Response.Write(ex);
}
}
}