Kind of a hack but on first page load, set your where condition to something which won't return any results like 'WHERE ColumnName = 'some wierd string or value'`
Secondly, ViewState
isn't available in the page lifecycle prior to the page load event. Most controls and web parts require you to set the values in the Init event or before.