У меня есть следующий метод, который использует для поиска текста в таблицеОшибка в SQL SELECT заявление
protected void fillGridView(int followingID, string text)
{
SqlCommand myCommand = new SqlCommand("select t.*,u.firstName,u.lastName,u2.firstName as afirstName,u2.lastName as alastName ,i.icon,ii.iconPath as taskIcon, iii.iconPath as seenIcon,f.fileName,f.fileID from tasks as t inner join users as u on u.userID=t.addedBy inner join users as u2 on u2.userID=t.attachTo inner join priorityIcons as i on t.priority=i.priorityID inner join icons as ii on t.status=ii.iconName inner join icons as iii on t.isNew=iii.iconName left join files as f on t.fileID=f.fileID where [email protected] and t.firstName LIKE '%asd%'");
myCommand.Parameters.AddWithValue("@followingID", followingID);
myCommand.Parameters.AddWithValue("@text", text);
DBAccess db = new DBAccess();
DataSet ds = db.select(myCommand);
SqlDataAdapter adapter = new SqlDataAdapter();
tasksRepeater.DataSourceID = null;
tasksRepeater.DataSource = ds.Tables[0]; //Here the exception appear because the dataset ds is "null"
tasksRepeater.DataBind();
tasksCounter();
}
И за исключением Message является «ссылка на объект не указывает на экземпляр объекта.»
но когда я обменивать SQL Statement выше со следующим один, код работает успешно
SqlCommand myCommand = new SqlCommand("select t.*,u.firstName,u.lastName,u2.firstName as afirstName,u2.lastName as alastName ,i.icon,ii.iconPath as taskIcon, iii.iconPath as seenIcon,f.fileName,f.fileID from tasks as t inner join users as u on u.userID=t.addedBy inner join users as u2 on u2.userID=t.attachTo inner join priorityIcons as i on t.priority=i.priorityID inner join icons as ii on t.status=ii.iconName inner join icons as iii on t.isNew=iii.iconName left join files as f on t.fileID=f.fileID where [email protected]");
так что проблема !?
«Ссылка на объект, не установленная на экземпляр объекта», является исключением, которое вы получаете, когда пытаетесь получить доступ к тем, что еще не было инициализировано. Выясните, какое значение не было инициализировано. Трассировка стека должна указывать, в какой строке кода это происходит. Или вы можете отлаживать и позволять ему ломаться, когда генерируется исключение. Я предполагаю, что это больше связано с жизненным циклом вашего элемента управления и чем-то вроде 'tasksRepeater', равным нулю, чем ваш SQL. – StriplingWarrior
Проблема в sql-заявлении, я уверен. потому что, когда я меняю инструкцию sql на другую, у которой не было «похожее слово», код запускается успешно. –
Основываясь на новой информации, которую вы предоставили, я бы сказал, что вам нужно посмотреть на свой класс «DBAccess» и увидеть какие обстоятельства он вернет значение «null» вместо набора данных. На самом деле, попробуйте выполнить этот метод 'select' с помощью отладчика и посмотреть, что именно происходит. – StriplingWarrior