Я пытаюсь запустить следующий код, в основном используя SQL-запрос, который находится в моей базе данных доступа, добавляя к нему параметры и получая из него данные:
string spSQL = "spFindFullScheduleEvents";
ArrayList prmList;
OleDbParameter prm;
int userID = (int)Session["UserID"];
if (userID < 0 || Session["UserID"] == null)
userID = 0;
int i = 1;
prmList = new ArrayList();
prm = new OleDbParameter("IDUser", OleDbType.Integer);
prm.Value = userID;
prmList.Add(prm);
DataTable dt = DoQueries.ExecuteSPDataTable(spSQL, prmList);
Функция DoQueries:
public static DataTable ExecuteSPDataTable(string strSQL, ArrayList prmList)
{
DataTable dt = new DataTable();
OleDbDataAdapter adp = new OleDbDataAdapter(strSQL, strConnection);
foreach (OleDbParameter prm in prmList)
{
adp.InsertCommand.Parameters.Add(prm);
}
adp.Fill(dt);
return dt;
}
но по какой-то причине я получаю «Ссылку на объект, не установленную для экземпляра объекта», при попытке добавить параметры, думая, что это был Session ["UserID"], который вызывал проблему,но даже когда я попытался ввести обычное значение типа int (30), проблема все еще возникает в этой строке:
adp.InsertCommand.Parameters.Add(prm);
Команда SQL работает следующим образом:
SELECT *
FROM tblFullSchedule
WHERE IDUser = [@IDUser];
Я должен такжеОтметим, что я использую это для школьного проекта, и, к сожалению, здесь все устарело, класс DoQueries был создан моим учителем, поэтому я не знаю, является ли это проблемой с ее кодом, или я делаю что-то не так,Ранее я выполнял аналогичную функцию с именем ExecuteDataTable, потому что мне не нужно было никаких параметров, которые работали идеально.
После завершения записи у меня есть подозрение, что ExecuteSPDataTable принимает команду SQL, а не хранимую процедуру, поэтому возникает ошибка.если мои подозрения верны, то мне бы очень хотелось помочь в написании функции DoQueries, которая принимает процедуру сохранения, потому что я новичок в SQL / OleDB и не знаю, как это сделать.