At one of the job interviews I was asked this question for the following piece of code (see below). Few days ago I was putting my papers in order and found the sheet with the question. This code will compile and run, furthermore it will work as desired. But what’s wrong with it, however?
class BuildTable
{
public string BuildEmployeeTable(string lnamePrefix)
{
string cmd = "SELECT fname, lname, phone FROM Employee WHERE lname LIKE'" + lnamePrefix + "'";
SqlConnection sqlConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand sqlCommand = new SqlCommand(cmd, sqlConnection);
SqlDataReader sqlReader = sqlCommand.ExecuteReader();
string empTable = "<TABLE BORDER=3><TR>";
empTable = empTable + "<TH>Name</TH><TH>Phone</TH>";
while (sqlReader.Read())
{
empTable = empTable + string.Format("<TR><TD>{0} {1}</TD><TD>{2}</TD></TR>",
sqlReader["fName"], sqlReader["lName"], sqlReader["phone"]);
}
empTable = empTable + "</TABLE>";
sqlReader.Close();
sqlConnection.Close();
return empTable;
}
}
4 comments:
Оооо... ууу... ты похоже не тот язык выбрал =(. Понимаю
Ты про английский? :) А если серьезно, то код этот хоть и работает, но довольно кривой, причем кривой во многих отношениях, в частности в очень тонких моментах, о которых многие не читающие серьезных книжек могут и не знать. Основная цель теста именно выявить знания человека, посмотрев насколько хорошо он перепищет этот код :)
Да тут батенька SQL инжекция... Ха, умные книги. Тут любой школьник поймет.
Ну инжекция, ну и что? Полезная инжекция, так и задумано. Да не кузяво, можно было сделать хранимыми процедурами, но этот подход тоже имеет право на жизнь... или ты знаешь иной способ извлечения программой данных из БД? :) Не туда смотришь :)
Post a Comment