ADODB это способ работать с базой данных. Точно есть доступ к таблицам и макросам, которые понимаются как хранимые процедуры.
Через ADODB вы работаете непосредственно с базой данных, а через Microsoft.Office.Interop.Access вы работаете с Microsoft Access и его заставляете выполнять вашу работу.
Если ваша задача ограничивается работой с таблицами и хранимками, то общайтесь через ADO, если вам нужна функциональность Access, например, формочки, - общайтесь через интероп.
Этот параметр относится к COM-взаимодействию. Подразумевается, что COM-объекты будут созданы через Activator.CreateInstance (CoCreateInstance в WinApi), а из библиотеки будет браться информация об интерфейсах. Поэтому по-умолчанию создание COM-классов через конструкторы запрещена, что определяется этим параметром.
Type tp = Type.GetTypeFromProgID("Word.Application");
var _objword = Activator.CreateInstance(tp);
Microsoft.Office.Interop.Word.Application word = (Microsoft.Office.Interop.Word.Application)_objword;
timePicker.Value берёт текущую дату-время, (2015-05-18 10:23)
timePicker.Value.Date оставляет только компоненту даты (2015-05-18)
timePicker.Value.Date.AddHours(21) добавляет к компоненте даты 21 час (2015-05-18 21:00)
(timePicker.Value.Date.AddHours(21) - new DateTime(1970, 1, 1, 21, 0, 0)) Находит разницу между 1970-01-01 21:00 и нашей датой в 21-00 .
.TotalSeconds возвращает количество секунд от 1970-01-01 21:00 до 2015-05-18 21:00.
Или это не то что вы хотите?
Чтобы использовать NavigationService нужно page добавлять не в Window, а в NavigationWindow или Frame внутри Window. Тогда у Page NavigationService будет не null. Вдобавок в главном окне можно автоматом получить кнопки перехода вперёд/назад.
Есть несколько совершенно разных и почти не связанных способов получить данные из БД и выдать их в текстбокс, таблицу и тд.
1. Enity framework https://msdn.microsoft.com/en-us/library/ee340709%...
С помощью визарда добавляете подключение к БД, затем выбираете нужные таблички, запросы. И осталось только связать с DataGrid.
Всё делается через различного рода диалоги.
2. Тоже самое, но с использованием утилиты sqlmetal.exe: https://msdn.microsoft.com/en-us/library/bb386987(v=vs.110).aspx
Она генерирует на основе вашей БД .cs файл с описанными классами для доступа. Вам остаётся только добавить его в проект и использовать. Там обязательно есть главный класс (соответствует названию БД), который наследуется от DataContext. Далее используя технологию LINQ to SQL https://msdn.microsoft.com/en-us/library/bb386976(v=vs.110).aspx выполняете запросы так, как будто просто оперируете коллекциями в C#. Результат выполнения запросов можно сразу автоматически расфасовывать по коллекциям, без циклов.
3. ADO .Net классическая. Собственно как я и описал. SqlConnection, SqlCommand и т.д.
Подключаетесь, пишите запрос на SQL, выполняете - получаете результат. Только результат вам надо ручками куда-то разложить.
4. ADO .Net "автоматическая". Используется Dataset, к которому привязаны таблички и другие элементы. Но он не заполняется автоматически. Для того чтобы его наполнить в дополнение к №3 нужен SqlDataAdapter https://msdn.microsoft.com/en-us/library/system.da...(v=vs.110).aspx
который методом Fill заполняет на основе запроса к БД ваш Dataset, а методом Update возвращает изменения в БД.
Остаётся лишь выбрать тот подход который вам нужен и использовать его.
Если вам нужно прочитать/записать несколько значений рекомендую №3..
№4 удобно если у вы используете компоненты, которые работают напрямую с Dataset - разного рода таблички. Обычно это Winforms.
№1, №2 удобно использовать при большом количестве связанных таблиц и сложной логике поиска, а также сложного процесса изменений данных. У вас есть возможность генерировать запросы с помощью Linq, получать ответы сразу в объектах C#. Всё строго и типизировано.
Лучше задавать отдельный вопрос с полными примерами.
Данный ответ касается конструкторов, а у вас метод. Кроме того xaml, там где это можно, использует "настоящие" методы класса, а Count является методом расширения, - т.е. по сути статической функцией из сборки, совершенно не связанной с классом ListView.
Используйте конвертеры для получения нужных вам значений.
Чтобы не путаться лучше unicode строку хранить в виде массива байт и использовать указатель на неё.
Перекодировку можно посмотреть в любом приложении "Таблица символов" в Windows или Linux. Латинская часть, насколько я помню, просто переводится добавлениям байта 00. С русской точно не помню, но она где-то в разделе 04.
Можно сделать текстовый файл с алфавитом в Win или Linux и прочитать его как поток байтов.
Если у вас только 1251, то можно банально перекодировать в соответствующие символы в двухбайтные символы юникода. Всего получится 256 символов. Латинские будут иметь префикс 00, русские, скорее всего, 04.
Как минимум нужен запрос, на каком этапе происходит выдача ошибки, выдаётся ли часть информации, время выполнения запроса, если он начинает выполняться...
Если у вас данные обновляются частично, то лучше всё же обновлять, а не переписывать.
Если же хочется всё переписать и все данные несколько раз в секунду меняются, то можно попробовать вручную реализовать IBindingList. В таком случае вы можете реализовать добавление списка без генерации лишних событий ListChanged, и только в конце вызвать событие ListChanged с параметром Reset.
Это вариант для WPF. Если у вас WinForms, то вместо CheckAccess - InvokeRequired, вместо Dispatcher.Invoke - просто Invoke.
Примерно так:
public void writeTB1(string m)
{
if (textBox1..InvokeRequired)
{
textBox1.Invoke(new Action(writeTB1), m);
}
else
{
textBox1.AppendText(m);
}
}
Например, если соединить кривую первого типа соединить с третьим и со вторым, то она будет похожа на кривую из одного сегмента третьего типа.
Поэтому классификацию можно сокращать: 1,3 -> 3; 3,2 -> 3; 1,1 -> 1; 2,2 -> 2 и т.д.