Причина, по которой вы получаете указанную ошибку c, заключается в том, что в области действия UpdateDatabase()
отсутствует переменная с именем Adapter1
. Вы можете сделать локальную переменную, которую вы объявили в функции MyDataSet()
переменной-членом, тогда она будет видна в UpdateDatabase()
. Однако это не лучший подход, поскольку вы будете рассчитывать на код, который использует этот вспомогательный класс, чтобы всегда вызывать функцию MyDataSet()
перед функцией UpdateDatabase()
, в противном случае адаптер данных не будет инициализирован ( получить нулевую ссылку). Если вы хотите структурировать код таким образом, вы должны инициализировать свой адаптер в конструкторе создаваемого вами класса, чтобы код, использующий вашу библиотеку, мог быть уверен, что адаптер всегда будет правильно инициализирован. Если вы структурируете код таким образом, вы можете сделать строку подключения параметром конструктора вместо свойства только для записи.
Любыми средствами продолжайте работать с этим кодом в качестве упражнения, но помните, что DataAdapters и DataSets очень старая часть. NET, и эта идиома мало используется на современных уровнях данных. Либо люди используют ORM (например, EntityFramework), либо они используют команды ADO. NET напрямую, если они хотят контроля и эффективности. Я также хотел бы отметить, что создаваемый вами класс, похоже, пытается выполнить роль DataAdapter, поэтому в реальной жизни у него не будет никакой полезности (люди просто используют SqlDataAdapter
вместо вашего класса). ,