连接打开和关闭,如何正确使用? [英] Connection open and close, how to use correctly ?

查看:103
本文介绍了连接打开和关闭,如何正确使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,这是我的代码我只是想知道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)

{

LinkBut​​ton lnkbtnPage =(LinkBut​​ton)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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆