Как получить возвращаемые значения хранимой процедуры от TableAdapter

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
6
задан Chris Driver 17 September 2008 в 09:12
поделиться

5 ответов

Закрытие этого вопроса, поскольку кажется, что возвращаемые значения не поддерживаются и нет элегантного обходного пути!

0
ответ дан 17 December 2019 в 07:10
поделиться

Способ получить возвращаемое значение состоит в том, чтобы использовать SqlParameter на объекте SqlCommand, которому установили его Направление на ParameterDirection. ReturnValue. Необходимо проверить свойство SelectCommand TableAdapter после называния Заливки.

1
ответ дан 17 December 2019 в 07:10
поделиться

Примечание: Способ пойти использует SqlParameter где Направление = ParameterDirection. ReturnValue

После этих слов поскольку кто-то уже упомянул SqlParameters, вот является динамическая альтернатива метода использованием DataSet. (если это - то, как Вы едете):

SQL-оператор в качестве примера и C# как товарищи:

string sql = @"DECLARE @ret int 
            EXEC @ret = SP_DoStuff 'parm1', 'parm2'
            SELECT @ret as ret";

DataSet ds = GetDatasetFromSQL(sql); //your sql to dataset code here...

int resultCode = -1;
int.TryParse(ds.Tables[ds.Tables.Count-1].Rows[0][0].ToString(), out resultCode); 

Результаты хранимой процедуры загружаются в DataSet и будут иметь столько же DataTables сколько операторы выбора возврата в хранимой процедуре.

Последний DataTable в DataSet будет иметь 1 строку и 1 столбец, который будет содержать возвращаемое значение хранимой процедуры.

1
ответ дан 17 December 2019 в 07:10
поделиться

Я не могу сказать наверняка, потому что я имею, не используют TableAdapters, но Вы, возможно, должны были бы посмотреть на свою хранимую процедуру и включать следующее приблизительно Ваша процедура.

SET ROWCOUNT OFF

BEGIN
<Procedure Content>
END

SET ROWCOUNT ON
0
ответ дан 17 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: