连接打开和关闭,如何正确使用? [英] Connection open and close, how to use correctly ?
问题描述
大家好,这是我的代码我只是想知道Connection Open / Close应该在何时何地使用?
请更好地理解编辑我的代码并发布你的答案。
注意:我没有收到错误。
非常感谢你。
我尝试过:
public partial class分类:System.Web.UI.Page
{
SqlConnection con = new SqlConnection();
PagedDataSource pds = new PagedDataSource();
protected void Page_Load(object sender,EventArgs e)
{
con.ConnectionString = ConfigurationManager.ConnectionStrings [conn]。ConnectionString;
try
{
if(!IsPostBack)
{
showData();
}
}
catch(例外情况)
{
Response.Write(ex.ToString());
}
}
void showData()
{
con.Open();
string catsearch = Convert.ToString(Session [category]);
string sql =SELECT * FROM Table_One WHERE Category LIKE @category OR GenreOne LIKE @ genre1 OR GenreTwo LIKE @ genre2 OR GenreThree LIKE @ genre3 OR Audio LIKE @audio OR Language LIKE @language;
SqlCommand cmd = new SqlCommand(sql,con);
//添加SQL所需的参数查询
cmd.Parameters.AddWithValue(@ category,%+ catsearch +%);
cmd.Parameters.AddWithValue(@ genre1, %+ catsearch +%);
cmd.Parameters.AddWithValue(@ genre2,%+ catsearch +%);
cmd .Parameters.AddWithValue(@ genre3,%+ catsearch +%);
cmd.Parameters.AddWith值(@ audio,%+ catsearch +%);
cmd.Parameters.AddWithValue(@ language,%+ catsearch +%);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet dt = new DataSet();
da.Fill(dt);
pds.DataSource = dt.Tables [0] .DefaultView;
pds.AllowPaging = true;
// pds .PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
pds.PageSize = 20;
pds.CurrentPageIndex = CurrentPage;
Linknext。 Enabled =!pds.IsLastPage;
Linkback.Enabled =!pds.IsFirstPage;
DataList2.DataSource = pds;
DataList2.DataBind();
lbl_heading_top.Text = Convert.ToString(catsearch)++MOVIES LIST;
doPaging();
con.Close();
}
public int CurrentPage
{
get
{
if(this.ViewState [CurrentPage] == null)
返回0;
其他
返回Convert.ToInt16(this.ViewState [CurrentPage]。ToString());
}
set
{
this.ViewState [CurrentPage] = value;
}
}
private void doPaging()
{
DataTable dt = new DataTable();
dt.Columns.Add(PageIndex);
dt.Columns.Add(PageText);
for(int i = 0;我< pds.PageCount; i ++)
{
DataRow dr = dt.NewRow();
dr [0] = i;
dr [1] = i + 1;
dt.Rows.Add(dr);
}
dlPaging.DataSource = dt;
dlPaging.DataBind();
}
protected void specs_ItemCommand (对象源,DataListCommandEventArgs e)
{
string i = Convert.ToString(e.CommandArgument);
Session [id] = i;
Response.Redirect(Selected_Item.aspx);
}
protected void dlPaging_ItemCommand1 (对象源,RepeaterCommandEventArgs e)
{
if(e.CommandName.Equals(lnkbtnPaging))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
showData();
}
}
protected void Linknext_Click(object sender,EventArgs e)
{
CurrentPage + = 1;
showData() ;
}
protected void Linkback_Click(object sender,EventArgs e)
{
CurrentPage - = 1;
showData();
}
protected void dlPaging_ItemDataBound1(object sender,RepeaterItemEventArgs e)
{
LinkButton lnkbtnPage =(LinkButton)e.Item.FindControl(lnkbtnPaging);
if(lnkbtnPage.CommandArgument.ToString()== CurrentPage.ToString())
{
lnkbtnPage.Enabled = false;
lnkbtnPage.Font.Bold = true;
}
}
}
Hi friends, here is my code I just want to know where and when Connection Open/Close should use?
Please for better understanding edit my code and post with your answers.
NOTE: I am not getting an error.
Thank you very much all.
What I have tried:
public partial class Categories : System.Web.UI.Page
{
SqlConnection con = new SqlConnection();
PagedDataSource pds = new PagedDataSource();
protected void Page_Load(object sender, EventArgs e)
{
con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
try
{
if (!IsPostBack)
{
showData();
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
void showData()
{
con.Open();
string catsearch = Convert.ToString(Session["category"]);
string sql = "SELECT * FROM Table_One WHERE Category LIKE @category OR GenreOne LIKE @genre1 OR GenreTwo LIKE @genre2 OR GenreThree LIKE @genre3 OR Audio LIKE @audio OR Language LIKE @language";
SqlCommand cmd = new SqlCommand(sql, con);
//Add the parameters needed for the SQL query
cmd.Parameters.AddWithValue("@category", "%" + catsearch + "%");
cmd.Parameters.AddWithValue("@genre1", "%" + catsearch + "%");
cmd.Parameters.AddWithValue("@genre2", "%" + catsearch + "%");
cmd.Parameters.AddWithValue("@genre3", "%" + catsearch + "%");
cmd.Parameters.AddWithValue("@audio", "%" + catsearch + "%");
cmd.Parameters.AddWithValue("@language", "%" + catsearch + "%");
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet dt = new DataSet();
da.Fill(dt);
pds.DataSource = dt.Tables[0].DefaultView;
pds.AllowPaging = true;
//pds.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
pds.PageSize = 20;
pds.CurrentPageIndex = CurrentPage;
Linknext.Enabled = !pds.IsLastPage;
Linkback.Enabled = !pds.IsFirstPage;
DataList2.DataSource = pds;
DataList2.DataBind();
lbl_heading_top.Text = Convert.ToString(catsearch) + " " + "MOVIES LIST";
doPaging();
con.Close();
}
public int CurrentPage
{
get
{
if (this.ViewState["CurrentPage"] == null)
return 0;
else
return Convert.ToInt16(this.ViewState["CurrentPage"].ToString());
}
set
{
this.ViewState["CurrentPage"] = value;
}
}
private void doPaging()
{
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");
for (int i = 0; i < pds.PageCount; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 1;
dt.Rows.Add(dr);
}
dlPaging.DataSource = dt;
dlPaging.DataBind();
}
protected void specs_ItemCommand(object source, DataListCommandEventArgs e)
{
string i = Convert.ToString(e.CommandArgument);
Session["id"] = i;
Response.Redirect("Selected_Item.aspx");
}
protected void dlPaging_ItemCommand1(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName.Equals("lnkbtnPaging"))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
showData();
}
}
protected void Linknext_Click(object sender, EventArgs e)
{
CurrentPage += 1;
showData();
}
protected void Linkback_Click(object sender, EventArgs e)
{
CurrentPage -= 1;
showData();
}
protected void dlPaging_ItemDataBound1(object sender, RepeaterItemEventArgs e)
{
LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
{
lnkbtnPage.Enabled = false;
lnkbtnPage.Font.Bold = true;
}
}
}
推荐答案
对于DataReader,最好的方法是这样的:
The best way is like this for a DataReader:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT description FROM myTable WHERE Id = @ID", con))
{
cmd.Parameters.AddWithValue("@ID", userId);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
int id = (int) reader["Id"];
string desc = (string) reader["description"];
Console.WriteLine("ID: {0}\n {1}", id, desc);
}
}
}
}
这对于DataAdapter来说:
And this for a DataAdapter:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlDataAdapter da = new SqlDataAdapter("SELECT MyColumn1, MyColumn2 FROM myTable WHERE mySearchColumn = @SEARCH", con))
{
da.SelectCommand.Parameters.AddWithValue("@SEARCH", myTextBox.Text);
DataTable dt = new DataTable();
da.Fill(dt);
myDataGridView.DataSource = dt;
}
}
使用
块确保对象在您完成后自动关闭和处理与他们一起。
The using
blocks ensure that the objects are closed and disposed automatically when you are finished with them.
这篇关于连接打开和关闭,如何正确使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!