Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: SQL-Server C#4.0
Hello friends
This is my c# code for getting workingdaytype. for example type 101 means half day, 100 means fullday for school project.
public int getdayforstaffattandence1(DateTime date)
        {
            try
            {
                Dob.open();
                cm = new SqlCommand();
                cm.CommandType = CommandType.StoredProcedure;
                cm.CommandText = "sp_getdayforstaffattandence";
                cm.Parameters.Add(new SqlParameter("@date", date));
                cm.Connection = Dob.con;
                dr = cm.ExecuteReader();
                int timeid=0;
                if (dr.HasRows)
                {
 
                    timeid =Convert.ToInt32( dr[0].ToString());
                }
                return timeid;
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                if (Dob.con != null)
                {
                    Dob.close();
                }
            }
 
And this is my stored procedure
alter procedure sp_getdayforstaffattandence(@date datetime)
as
set nocount on
begin
declare @dates date
set @dates=CONVERT(date,@date,111)
select Time_id from Workingday_details where Working_date=@dates
end
 
Actually when i run merely storedprocedure it return correct value with the given date. the date format has been copy from c# code. but run with c# code the error is
Invalid attempt to read when no data is present.
please solve this issue. thanks
Posted 6-Oct-12 2:19am

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

That's because you haven't read any rows yet!
Try this:
if (dr.Read())
{
    timeid = Convert.ToInt32( dr[0].ToString());
}
  Permalink  
Comments
FarazLoloei at 7-Oct-12 4:07am
   
Hi, when you want to convert one type to another and when u using convert you do not need to convert to string first.
 
timeid = convert.ToInt32(dr[0]);
OriginalGriff at 7-Oct-12 4:19am
   
Depends on the data type of the Time_id in the database which he doesn't specify. Since I don't know, it's safer to give him code which copies his (presumably successful) way of accessing it.

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

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 6,775
1 OriginalGriff 6,696
2 CPallini 5,345
3 George Jonsson 3,599
4 Gihan Liyanage 2,751


Advertise | Privacy | Mobile
Web04 | 2.8.140922.1 | Last Updated 6 Oct 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100