Click here to Skip to main content
15,892,059 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
Line 32: {
Line 33: }
Line 34: SqlDataAdapter da = new SqlDataAdapter("Select * from tblStudent", con);
Line 35: DataSet ds = new DataSet();
Line 36: da.Fill(ds);

What I have tried:

private void BindGridViewData()
{
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
}

SqlDataAdapter da = new SqlDataAdapter("Select * from tblStudent", con);
DataSet ds = new DataSet();
da.Fill(ds);
gvStudent.DataSource = ds;
gvStudent.DataBind();
Posted
Updated 16-Nov-18 6:46am
Comments
CPallini 16-Nov-18 3:07am    
Well it is wrong, we must believe you. But you gave us no clue about.

I'd like to add a couple of points to the solutions provided:

(1) DataSet is composed of DataTables, and since you were only selecting one Table from your SQL SELECT query, then it makes more sense to use DataTable instead of DataSet.

(2) Make it a habit to put objects that eat resources such as SqlConnection, SqlCommand and SqlDataAdapter within a using block to ensure that objects will be properly disposed and after they are used.

Your code would now look something like this:

C#
string dbConnectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
string sqlStatement = "SELECT * FROM tblStudent";
using(SqlConnection connection = new SqlConnection(dbConnectionString)){
      using(SqlCommand cmd = new SqlCommand(sqlStatement ,connection)){
			using(SqlDataAdapter da = new SqlDataAdapter(cmd)){
				DataTable dt = new DataTable();
				da.Fill(dt);
				if(dt.Rows.Count > 0){
					gvStudent.DataSource = dt;
					gvStudent.DataBind();
				}
				else{
					//no result found		
				}		
			}
      }
}


Quick tip: If you are binding your GridView in your Page_Load event, then make sure to wrap your code for binding within !IsPostback block:

C#
protected void Page_Load(object sender, EventArgs e){
        if (!IsPostBack){
            // Your code for binding your GridView here
        }
}
 
Share this answer
 
Compiling does not mean your code is right! :laugh:
Think of the development process as writing an email: compiling successfully means that you wrote the email in the right language - English, rather than German for example - not that the email contained the message you wanted to send.

So now you enter the second stage of development (in reality it's the fourth or fifth, but you'll come to the earlier stages later): Testing and Debugging.

Start by looking at what it does do, and how that differs from what you wanted. This is important, because it give you information as to why it's doing it. For example, if a program is intended to let the user enter a number and it doubles it and prints the answer, then if the input / output was like this:
Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Then it's fairly obvious that the problem is with the bit which doubles it - it's not adding itself to itself, or multiplying it by 2, it's multiplying it by itself and returning the square of the input.
So with that, you can look at the code and it's obvious that it's somewhere here:
C#
private int Double(int value)
   {
   return value * value;
   }

Once you have an idea what might be going wrong, start using the debugger to find out why. Put a breakpoint on the first line of the method, and run your app. When it reaches the breakpoint, the debugger will stop, and hand control over to you. You can now run your code line-by-line (called "single stepping") and look at (or even change) variable contents as necessary (heck, you can even change the code and try again if you need to).
Think about what each line in the code should do before you execute it, and compare that to what it actually did when you use the "Step over" button to execute each line in turn. Did it do what you expect? If so, move on to the next line.
If not, why not? How does it differ?
Hopefully, that should help you locate which part of that code has a problem, and what the problem is.
This is a skill, and it's one which is well worth developing as it helps you in the real world as well as in development. And like all skills, it only improves by use!
 
Share this answer
 
Yep, your code is wrong.

Try moving your database operations into the using block.
You will also need to open the connection before you try to fill the dataset
C#
using (SqlConnection con = new SqlConnection(CS))
{ // SQL commands belong here. Don't forget to open/close the connection
}

SqlDataAdapter da = new SqlDataAdapter("Select * from tblStudent", con);
 
Share this answer
 
Comments
Richard Deeming 16-Nov-18 9:14am    
You don't need to open the connection when you use a data adapter - the data adapter will do that for you.

And you don't need to explicitly close the connection if you've wrapped it in a using block.
Vincent Maverick Durano 16-Nov-18 12:27pm    
Adding to Richard, the SqlDataAdapter should be wrapped within a using block too.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900