public DataTable dt_date(resbal obj)
{
connection();
string details = @"SELECT donor_contacts.name AS NAME, m_reserve_userdetails.res_no AS 'RESERVATION NO',
m_room_user.build AS 'BUILDING',m_room.roomno AS 'ROOM NO',DATE_FORMAT(intime,'%r') AS 'CHECK-IN TIME',
CASE WHEN m_room_user.rent =0 THEN 'Free' ELSE 'Pass' END AS 'Passtype' FROM m_reserve_userdetails,donor_contacts,m_room_user,m_room
WHERE m_reserve_userdetails.id = donor_contacts.id
AND m_room_user.donor_id = m_reserve_userdetails.user_id
AND m_reserve_userdetails.status=1
AND indate ='" + obj.date + "'";
OdbcCommand cmd = new OdbcCommand(details, con);
OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
DataTable dt = new DataTable();
oda.Fill(dt);
return dt;
}
OR
public DataTable dt_date(resbal obj) { connection();
StringBuilder datails = new StringBuilder();
datails.Append("SELECT donor_contacts.name AS NAME, ");
datails.Append("m_reserve_userdetails.res_no AS 'RESERVATION NO',");
datails.Append("m_room_user.build AS 'BUILDING',");
datails.Append("m_room.roomno AS 'ROOM NO',");
datails.Append("DATE_FORMAT(intime,'%r') AS 'CHECK-IN TIME',");
datails.Append("CASE WHEN m_room_user.rent =0 THEN 'Free' ");
datails.Append("ELSE 'Pass' END AS 'Passtype' FROM m_reserve_userdetails,");
datails.Append("donor_contacts,m_room_user,m_room");
datails.Append("WHERE m_reserve_userdetails.id = donor_contacts.id");
datails.Append("AND m_room_user.donor_id = m_reserve_userdetails.user_id");
datails.Append("AND m_reserve_userdetails.status=1");
datails.Append("AND indate ='" + obj.date + "'");
OdbcCommand cmd = new OdbcCommand(datails.ToString(), con);
OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
DataTable dt = new DataTable();
oda.Fill(dt);
return dt;
}
I wish to know, is stringBuilder works better than string even if there is only 8 or 10 appending? I tried a query on this as i added above. But i found no remarkable difference. This query takes time. Most probably it needs a query optimization, i know. But now, i need to know is there any little advance in using stringBuilder while there is only 8 to 10 appending. Thanks in advance.
From the point of performance, this:
private const string details = "SELECT ... AND indate = '{0}'";
string.Format(details, obj.date);
is definitely better in your case, than StringBuilder
or even string concatenations (but for formatting your string needs a little modification, and also you'll need a microscope to see the difference).
From the point of common sense, string concatenations for SQL queries is a way to hell. Use parametrized queries:
private const string details = "SELECT ... AND indate = @indate";