better performance for aspx page - asp.net

When i watch my website in firebug (net tab),aspx pages are too long to loaded.How can reduce this load time?. this page is a text and image only and has a little DB query.
this my code:
Public Function SelectForShow() As DataTable
Try
Dim query As String = "SELECT TOP 10 * FROM Tbl_News WHERE NewsConfirm ='True' ORDER BY NewsID DESC "
Using sqlcon As New SqlConnection(ConnectionString)
Dim sqlAdapter As New SqlDataAdapter(query, sqlcon)
Dim Dt As New DataTable()
sqlAdapter.Fill(Dt)
Return Dt
Catch ex As Exception
Throw ex
End Try
End Function
and get data in repeater

Related

Multiple user accessing Webservice simultaneously

We have a WebMethod created in an ASP.NET 2.0 Web Service (VB), which is accessed throughout the application very frequently. The WebMethod gets the query as a parameter and returns the DataSet. It works fine when the number of users is 1 or 2. If ~30 users are using the system simultaneously, the WebMethod returns the DataSet of a different query. We have tried the synclock (lock in C#) option, but it does not work.
Public Function ExecuteQry(ByVal StrText As String) As DataSet
Dim AdoDs As New DataSet()
Dim SqlDp As New SqlDataAdapter
Dim SqlCmd As New SqlCommand
Dim SqlParam As New SqlParameter
Try
SyncLock AdoDs
MakeConnect()
With SqlCmd
.Connection = SqlCon
.CommandText = "rExecuteQry"
.CommandType = CommandType.StoredProcedure
End With
SqlParam = SqlCmd.Parameters.AddWithValue("#strText", Trim(StrText))
SqlDp.SelectCommand = SqlCmd
SqlDp.Fill(AdoDs)
DisposeConnect()
Return AdoDs
End SyncLock
Catch ex As SqlException
DisposeConnect()
Debug.Write(ex.Message)
Finally
SqlCmd = Nothing
SqlParam = Nothing
End Try
End Function
Below is the stored procedure:
ALTER PROCEDURE [dbo].[rExecuteQry]
#strText Varchar (max)
as
Exec( #StrText)

Filter Bound Gridview to Drop Down

I've seen a couple example of how to do this by placing all the code in the aspx file, but I'm trying to do it from the code-behind. Here's what I have in the code behind:
Dim dt As New DataTable
Using conn As New OleDbConnection(ConnectionString)
conn.Open()
Dim dtAdapter As New OleDbDataAdapter
Dim command As New OleDbCommand("SELECT * FROM table " & _
"" _
, conn)
dtAdapter.SelectCommand = command
dtAdapter.Fill(dt)
conn.Close()
End Using
GridView1.DataSource = dt
GridView1.DataBind()
I'm open to any solutions, but I would prefer to do it in the code-behind if possible since thats how the rest of app is. I dont need to necessarily use a gridview just display some tabular data, so whatever works is fine. Im trying to avoid manually constructing sql strings. Any thoughts?
I don't see the question. If you don't kno how to filter the records in your query, use the Where clause with a parameter:
Dim dt = New DataTable()
Using conn As New OleDbConnection(ConnectionString)
Dim queryString As String = "SELECT * FROM Table WHERE Field1 LIKE ?"
Dim command As OleDbCommand = New OleDbCommand(queryString, conn)
command.Parameters.Add("#p1", OleDbType.Char, 3).Value = "a%"
Using da = New OleDbDataAdapter(command)
' you don't need to open/close a connection if you use DataAdapter.Fill
da.Fill(dt)
End Using
End Using
GridView1.DataSource = dt
GridView1.DataBind()
DataAdapter Parameters
Using Statement

GridView Won't Display

The data table is returning the correct amount of rows/records.But for some reason I can not get my GridView to Render..nothing displays at all...........
EDIT: The GridView returns "RowErorrs" and "Has Errors" columns. but not my data.
Dim ConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("oakfratintdbConnectionString").ConnectionString
Dim Conn As New SqlConnection(ConnString)
Dim cmd As New SqlCommand("SELECT * FROM [OFCInterments]", Conn)
Dim DA As New SqlDataAdapter(cmd)
Dim DT As New DataTable
'WHERE ([FirstName] = #FirstName)
cmd.Parameters.AddWithValue("#FirstName", "Mike")
Try
Conn.Open()
DA.SelectCommand = cmd
DA.Fill(DT)
GridView1.DataSource = DT
GridView1.DataBind()
If DT.Rows.Count > 0 Then
Dim NoResultsText As String = DT.Rows.Count.ToString + " records found."
txtStatys.Text = NoResultsText
txtStatys.Visible = True
End If
Catch ex As Exception
Throw ex
Finally
Conn.Close()
DA.Dispose()
Conn.Dispose()
End Try
The GridView returns "RowErorrs" and "Has Errors" columns. but not my data.
That is not a property of the GridView but of the DataTable.
DataTable.HasErrors property
You can use DataTable.GetErrors() to retrieve a DataTable with all row errrors. Inspect the RowError property of each DataRow and you know the reason for the exception. You can do that all in a debugger quick-watch-window.
A few points you should take into account:
GridView is not dispayed, some possible reasons:
Is the GridView visible at all(and all of it's parents because it inherits the property)?
have you registered the RowDataBound event and an uncaught exception there?
general suggestions:
Don't use a Catch block just to rethrow the exception(even Throw alone would be better since it would keep the stacktrace). Instead don't catch it or do something useful with it(f.e. logging).
use the Using-statement to dispose your ADO.NET objects like the connection(closes it implicitely)

Accessing data from sqldatereader within a function

I want to output some data to the user based on their username. This data is held in a table that is linked to the aspnet_Users table. I'm trying to write a sqldatareader as part of a function so I don't have to rewrite the code when it could be called from several pages. I know this is probably very simple buty I can't seem to access the data from outside the function. The function I have so far is as follows:
Public Shared Function AgencyDetails() As SqlDataReader
Dim details As String = "SELECT * FROM tbl_Relationships WHERE ContactSub = #Username"
Dim connString As String = ConfigurationManager.ConnectionStrings("ApplicationServices").ConnectionString
Using dbConnection As New SqlConnection(connString)
dbConnection.Open()
Dim cmdAgency As New SqlCommand(details, dbConnection)
cmdAgency.Parameters.AddWithValue("#Username", membership.getuser)
Return cmdAgency.ExecuteReader()
End Using
End Function
How can I call this function and access the information on my page? Something like the following?
lblAgencyDetails.text = AgencyDetails(0)
Thanks
The way you have it now, it won't work because you enclosed the connection in a using statement, by the time you return the Reader the connection will be closed and disposed so the reader won't be able to read anything.
What you should do in that function is load the info in a DataTable and return the datatable.
Example:
Public Shared Function AgencyDetails() As DataTable
Dim details As String = "SELECT * FROM tbl_Relationships WHERE ContactSub = #Username"
Dim connString As String = ConfigurationManager.ConnectionStrings("ApplicationServices").ConnectionString
Using dbConnection As New SqlConnection(connString)
dbConnection.Open()
Dim cmdAgency As New SqlCommand(details, dbConnection)
cmdAgency.Parameters.AddWithValue("#Username", membership.getuser)
Dim dt as new DataTable()
dt.Load(cmdAgency.ExecuteReader())
return dt
End Using
End Function
You can access the rows in the data table by doing:
For Each row as DataRow in dt.Rows
Console.WriteLine(row("ColumnName"))
Next
To be able to retrieve the data from the DataReader object, you should call the Read() method:
While reader.Read()
Console.WriteLine(String.Format("{0}, {1}", _
reader(0), reader(1)))
End While
This method moves the SqlDataReader to the next record.

database search function

i want to search a record from sql database searching by first name so im using a function in the data layer but it is not working please correct me where i went wrong here is my function:
Public Function searchCustomer(ByVal custFname As String) As DataTable
Dim tabletdata As New DataTable
Dim conn As New SqlConnection(con_string)
conn.Open()
Dim dCmd As New SqlCommand("selectCustomerByFname", conn)
dCmd.CommandType = CommandType.StoredProcedure
Try
dCmd.Parameters.AddWithValue("#Cust_Fnam", custFname)
'dCmd.ExecuteNonQuery()
Dim dadaptr As New SqlDataAdapter(dCmd)
dadaptr.SelectCommand = dCmd
dadaptr.SelectCommand.ExecuteNonQuery()
dadaptr.Fill(tabletdata)
Return tabletdata
Catch
Throw
Finally
dCmd.Dispose()
conn.Close()
conn.Dispose()
End Try
End Function
Fill method opens and close connection implicitly. Fill Method
SUMMARY: The Fill method retrieves
rows from the data source using the
SELECT statement specified by an
associated SelectCommand property. The
connection object associated with the
SELECT statement must be valid, but it
does not need to be open. If the
connection is closed before Fill is
called, it is opened to retrieve data,
then closed. If the connection is open
before Fill is called, it remains
open.
Public Function searchCustomer(ByVal custFname As String) As DataTable
Dim tabletdata As New DataTable
Dim conn As New SqlConnection(con_string)
Dim dCmd As New SqlCommand("selectCustomerByFname", conn)
dCmd.CommandType = CommandType.StoredProcedure
dCmd.Parameters.AddWithValue("#Cust_Fnam", custFname)
Dim dadaptr As New SqlDataAdapter(dCmd)
dadaptr.SelectCommand = dCmd
dadaptr.Fill(tabletdata)
Return tabletdata
End Function

Resources