powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Прелести c#
37 сообщений из 37, показаны все 2 страниц
Прелести c#
    #38000528
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозревая закидывание меня чем нибудь тяжелым, не смог все-таки удержаться и не создать тему. Если это возможно, прошу понять то, что я хотел донести и узнать. Писал на Delphi под БД. Несколько раз, судьба пыталась меня свести с Visual Studio и C# в частности. Проект создан и работает, но почему так все сложно у Вас? В целом разобрался, но родилось несколько все равно вопросов
1. Почему, во всех книгах по ado.net, в 99%, рекомендуют рвать коннект? Т.е. создавать его в какой-нибудь приватной процедуре (или методе вызова события чего-либо) что-то сделать и разорвать. Переубедите пожалуйста, я тут совсем не понял прикола. У меня некоторые программы конектятся к удаленым серверам и время на конект может занимать определенные время.. если на каждый чих будет попытка соединения это просто жесть какая-то. Еще, есть такое понятие как лицензии и сессии, как в таком случае отсекать сие и следить за этим? Т.е. правило - кто первый встал , того и тапки, ни кто не отменял... а тут типа вроде и запустил прогу (надел тапки) но не факт, что твой следующий запрос к базе будет успешным... новый коннект , а ты уже оказывается устарел и лицухи тебе не хватило..
2. Почему так все сложно с с# казалось -бы уже c обычными вещами, как все то-же соединение и работа с БД? В Delphi, кинул компонент коннекта, компонент Query и DataSource... всё!!!!!!!!!!!!! Тут какие-то танцы с бубном. Есть разница, Query1.FieldByName("id").AsInteger или (datasourceRole.Current as DataRowView).Row["id"].ToString() ? и то еще пока в стринговой а не интежеровской айдишник получил... И это то, что еще в Delphi я просто кинул на форму Query, а с версии 2008 VisualStudio ваще не нашел компонент аналогичных ...... Накидывается тьма хрени всякой, потом что-то правится даже, типа , о чудо , можно и запрос создать... Я пришел к выводу, что в рил-тайме я лучше создам и хоть контроль какой-то возымею и смогу даже запрос впихнуть.
3. Все работает, насоздавал всяких классов для более или менее адекватной работы с БД... Кидаю дэвэекспресовский грид на форму... опять засада.. отрисовка несколько секунд... Повторный запуск формы, все ок.. Почему первый раз так долго? Такое впечатление, что подгрузка с харда сначала а потом с ОЗУ работает... Исполняемый не растет.. Это обрадовало но не надолго.. лучшем вырос чем такая лажа...
...
Рейтинг: 0 / 0
Прелести c#
    #38000566
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

1. http://msdn.microsoft.com/ru-ru/library/8xx3tyca.aspx
2. Вы уверены, что Row["id"] не int? попробуйте преобразовать сразу к int.
...
Рейтинг: 0 / 0
Прелести c#
    #38000591
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

2. Я к тому, что в дэлфях я сразу говорил ToInteger, а тут и так строка длиная, а еще и приводить ее (Всё это делается.. вот такой я сволочью побуду, почему все не так просто :) )
...
Рейтинг: 0 / 0
Прелести c#
    #38000646
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

1. Как создать на весь проект один коннект это я скриейтил... я не понял почему во всех книжках советуют его рвать... наводит на мысли...
...
Рейтинг: 0 / 0
Прелести c#
    #38000702
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

1. При чем тут 1 коннект на весь проект? Вы про пул соединений прочитали? Когда вы вызываете Close(), соединение не закрывается, а помещается в пул, и может быть использовано повторно.
...
Рейтинг: 0 / 0
Прелести c#
    #38000890
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

Вот как, ок, не догнал, спс за инфу
...
Рейтинг: 0 / 0
Прелести c#
    #38001155
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kill_zdm,

Во-первых есть пул соединений, во-вторых никто не заставляет рвать соединение. Я допустим работаю "по старинке", как в Delphi - соединение открыто постоянно. Да и в общем-то работа в C# с БД ничуть не хуже чем в делфи. К слову я сам не так давно слез с делфи и возвращаться пока желания нет. Нужно просто почитать про ADO.NET и все сразу станет понятным.
Насчет девчачьего грида, то не знаю в чем у Вас проблема, у себя такого поведения за ним не замечал
...
Рейтинг: 0 / 0
Прелести c#
    #38001397
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thor234,

ok, может не повезло просто с девками(vs 2012) почитал я про ado.net иначе и рвануться толком и не удалось-бы. А скажи пожалуйста, чем лично тебя привлек с#? (надеюсь ни чего, что на ты?)
...
Рейтинг: 0 / 0
Прелести c#
    #38001427
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kill_zdmThor234,

ok, может не повезло просто с девками(vs 2012) почитал я про ado.net иначе и рвануться толком и не удалось-бы. А скажи пожалуйста, чем лично тебя привлек с#? (надеюсь ни чего, что на ты?)
Провакационный вопрос не хочу разводить холивар, как собственно и поливать какашками делфи, потому, что я люблю этот язык и любил на протяжении последних 10 лет, а он любил меня
Просто поработав пару недель на C# почему-то не захотелось запускать делфи, а сейчас меня увлекло изучение C#
...
Рейтинг: 0 / 0
Прелести c#
    #38001434
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть конечно некоторые вещи которые меня просто дико раздражают в ADO.NET, например №1 в моем топе это невозможность параллельных транзакций в FB net provider и вытекающей отсюда невозможности разделенных читающих и пишущих транзакций, за другие провайдеры не скажу ибо не пробовал. Но все решается допиливанием исходников провайдера, благо они в открытом доступе.
Плюс не особо нравится использование TableAdapter'ов, но обойтись можно и без них, решение получается более гибкое, но и менее быстрое в разработке, много "тынцев мышем".
...
Рейтинг: 0 / 0
Прелести c#
    #38001438
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос на сообразительность: что общего между C#, Delphi и Андерсом Хейлсбергом? :)
...
Рейтинг: 0 / 0
Прелести c#
    #38001447
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAВопрос на сообразительность: что общего между C#, Delphi и Андерсом Хейлсбергом? :)
Ответ знает любой школьник
...
Рейтинг: 0 / 0
Прелести c#
    #38001532
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стоит искать Delphi там, где его нет. Лично я перешел на с# после того, как увидел возможности, которых не было в Delphi.
Бизнес-объекты, а не адаптеры и прочие мелкие и неудобные подробности - это совсем другая история.
...
Рейтинг: 0 / 0
Прелести c#
    #38001568
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVaНе стоит искать Delphi там, где его нет. Лично я перешел на с# после того, как увидел возможности, которых не было в Delphi.
Бизнес-объекты, а не адаптеры и прочие мелкие и неудобные подробности - это совсем другая история.
Бизнес-объекты это конечно хорошо, даже и не спорю, но есть мелкие задачи для которых ОРМ это как с пушки по воробьям
...
Рейтинг: 0 / 0
Прелести c#
    #38001625
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в мыслях не было провокаций. Просто хотелось услышать не книжное, а личное мнение, что привлекло. А на счет литературы, что не попадалось, все в основном разжовывание одних и тех-же элементарных вещий и в основном под консоль. Посоветуйте литературку по ado.net с упором на windows приложения, где более конкретно описаны приемы передачи запросов, а не тупость обращения к одной таблице через tableadapter, работа с datagrid и другими контролами. на сколько понял до версии 2008, был аналогичный делфийскому компоненту query,зачем его убрали? Пишу с мобилы сейчас, потом брошу, как-я понял работу с бд на с, буду благодарен за ваши мнения и критику.
...
Рейтинг: 0 / 0
Прелести c#
    #38001664
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm2. Почему так все сложно с с# казалось -бы уже c обычными вещами, как все то-же соединение и работа с БД? В Delphi, кинул компонент коннекта, компонент Query и DataSource... всё!!!!!!!!!!!!! Тут какие-то танцы с бубном. Есть разница, Query1.FieldByName("id").AsInteger или (datasourceRole.Current as DataRowView).Row["id"].ToString() ? и то еще пока в стринговой а не интежеровской айдишник получил... И это то, что еще в Delphi я просто кинул на форму Query, а с версии 2008 VisualStudio ваще не нашел компонент аналогичных ...... Накидывается тьма хрени всякой, потом что-то правится даже, типа , о чудо , можно и запрос создать...Типичный пример покорёженного Delphi мышления. Не обижайся. :-)
kill_zdmЯ пришел к выводу, что в рил-тайме я лучше создам и хоть контроль какой-то возымею и смогу даже запрос впихнуть.Вывод правильный. Не нужно ничего "кидать на форму". Дизайнер форм предназначен не для работы с данными, а для компоновки контролов на форме. Тут автоматизация этого процесса достигается кодогенерацией. Посмотри T4 Text Template ради интереса. Так же кодогенерация присутствует в дизайнерах типизированного DataSet, EF, Linq2Sql и прочих.

зы: DataSet не самый удачный выбор для работы с данными.
...
Рейтинг: 0 / 0
Прелести c#
    #38001712
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
ни каких обид конечно. Может и искаженные понятия от дэлфи, но... Все-таки в дизайн-тайме, без нагромождений (как в делфи), как-то удобнее сразу законнектится, посмотреть результат в dbGrid, например, настроить поля и т.д.... В c#, пришел к выводу, что так виртуально представлю как будет выглядеть и какие поля иметь DataGridView и собственно добавил ему полей и настроил не видя еще результата. Как уже сказал выше, книжки как-то не цепанули, которые попались. Поэтому по наитию все :) Скажите, вот так я адекватно поступил?
Создал класс, назвал его Connect (База данных SQL Server, еще где-то надыбал класс работы с INI)
/// <summary>
/// Процедура соединения с БД
/// </summary>
public void ConnectDB()
{
IniFile ini = new IniFile(Application.StartupPath + "\\set.ini");
string
ServerDest = "Data Source=" + ini.IniReadValue("Назначение", "Сервер") + ";Initial Catalog=" + ini.IniReadValue("Назначение", "База данных") + ";Integrated Security=True";
dbDest = new SqlConnection(ServerDest);
dbDest.Open();
}
По сколько привычка обращаться не к позиции dbgrid-а, а все-таки к Query, как FieldByName("").Value (извините я еще не могу отделаться от дэлфевых аналогий, надеюсь Вы понимаете о чем я, пришел к выводу, что надо использовать BindingSource) В общем на скорую руку сделал такой метод (не судите строго, все еще на этапе познания :) )
/// <summary>
/// Процедура выборки или исполнения запросов
/// </summary>
/// <param name="sql">Передаваемый запрос</param>
public void ExecQuery(string sql)
{
ds = new BindingSource();
da = new SqlDataAdapter(sql, dbDest);
DataSet1 = new DataSet();
da.Fill(DataSet1);
ds.DataSource = DataSet1;
//ds.DataMember = DataSet1.Tables[0].TableName;

}
Передаю эту законнектенную переменную там дальше (про пулы вот позже на мысли Вы меня навели). В DataGridView добавил поле, назовем его Name и собственно выполняю запрос
private void FRoles_Load(object sender, EventArgs e)
{
datasourceRole = new BindingSource();
adapterRole = new SqlDataAdapter("select * from roles", dbRole.dbDest);
datasetRole = new DataSet();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = datasourceRole;
ShowRoles();
}
А про FieldByName это я к тому, что, например при удалении, определить айдшиник текущей позиции надо, что удалять будем...
(datasourceRole.Current as DataRowView).Row["id"].ToString()
в общем как-то так наколбасил, криткуйте
...
Рейтинг: 0 / 0
Прелести c#
    #38001936
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmВсе-таки в дизайн-тайме, без нагромождений (как в делфи), как-то удобнее сразу законнектится, посмотреть результат в dbGrid, например, настроить поля и т.д.... В c#, пришел к выводу, что так виртуально представлю как будет выглядеть и какие поля иметь DataGridView и собственно добавил ему полей и настроил не видя еще результата.Нет ничего невозможного. BindingSource позволяет получить метаданные объекта в дизайнтайме. Правда в DataGridView полно граблей с редактированием колонок в дизайнере... В общем, лучше писать под WPF. :-)

А в целом архитектура примерно такая. Мутится слой доступа к данным:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
static class ConnectionFactory
{
    public static DbConnection GetCollection()
    {
        var result = new SqlConnection(".....");
        result.Open();
        return result;
    }
}

class DataService
{
    public DataTable GetData(string parameter)
    {
        using (var connection = ConnectionFactory.GetCollection())
        {
            .....
            return .....;
        }
    }
}


Потом в форме пишется что-то вроде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class MyForm : Form
{
    DataService DataService = new DataService();

    void КнопкаОбновить_Click(object sender, EventArgs e)
    {
        bindingSource.DataSource = DataService.GetData(textBox.Text);
    }
}
...
Рейтинг: 0 / 0
Прелести c#
    #38002059
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm1. Почему, во всех книгах по ado.net, в 99%, рекомендуют рвать коннект?
Это не рвать коннект, а высвобождать соединение. На случай, если у вас серверное приложение и очень много пользователей. Если простая двухзвенка, можете использовать одну коннекцию и никогда в процессе работы приложения не закрывать, опять же если все как обычно в делфи делается в одном ГУИ потоке.
...
Рейтинг: 0 / 0
Прелести c#
    #38002166
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Сейчас переварю...
По поводу, что в дизайне и в c# можно сделать я и не оспаривал, просто нагромождение жестокое выходит. Что-то там и в конструкторе типа запроса удалось своять. Но попутно вопрос, ну допустим все-таки в дизайн-тайме, как в рил-тайме, тому, что накидал, передать запрос? Т.е. кинул DataGridView, кликнул на треугольничек -Выберите источник, выбрал, таблицы и вьюхи не выбрал, создалось что-то такое пустое... В конструкторе сделал запрос. В риле необходимо, например, делать изменение запроса (не предлагайте только фильтры пожалуйста, хочу чистый SQL), т.е. необходимо просто впихивать разные запросы... Как и куда?
...
Рейтинг: 0 / 0
Прелести c#
    #38002193
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВkill_zdm1. Почему, во всех книгах по ado.net, в 99%, рекомендуют рвать коннект?
Это не рвать коннект, а высвобождать соединение. На случай, если у вас серверное приложение и очень много пользователей. Если простая двухзвенка, можете использовать одну коннекцию и никогда в процессе работы приложения не закрывать, опять же если все как обычно в делфи делается в одном ГУИ потоке.
А поясните, в чем разница в словах , разорвать коннект и высвободить соединение? Честное слово не понял разницы, разрыв и в том и в том случае произойдет?
На случай, если у вас серверное приложение и очень много пользователей - конечно серверное и пользователей много, как и лицензий на использование и контроль сессий (бездействий и т.д.), как раз в данном случае и необходим контроль и "НЕОБРЫВ" соединения.. В каком-нибудь приложение тет-а-тет, одни-на-один с базой, можно и рвать смело...
...
Рейтинг: 0 / 0
Прелести c#
    #38002194
йцуке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,
По теме есть хорошая книга: Сеппа Д. Microsoft ADO.NET. Читали?
...
Рейтинг: 0 / 0
Прелести c#
    #38002205
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йцуке,

да, с него и начал (спасибо все равно)... но как и сказал выше, там все под консоль.... для совсем начала может и хорошая вещь... но мне нужно под вин-приложения писать, все следующие далее мои хотелки... как работать с гридом и контролами, как в дизайне все делать, как передавать уже из созданого в дизайне запросы и в этом духе...
...
Рейтинг: 0 / 0
Прелести c#
    #38002215
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Сеппа, что касается вин-приложений.. то на уровне... обращений к одной таблицы.. кинул грид, создал коннект, указал таблицу и прям счастье наступило....... Не то.
...
Рейтинг: 0 / 0
Прелести c#
    #38002246
йцуке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmУ Сеппа, что касается вин-приложений.. то на уровне... обращений к одной таблицы.. кинул грид, создал коннект, указал таблицу и прям счастье наступило....... Не то.
Вы, наверно, про создание всего в визуальном редакторе?
Можно, например, иметь в типизированном DataSet таблицы, которые не соответствуют таблицам базы, и заполнять их произвольными запросами, которые в свою очередь могут быть параметризованными, и которые можно насоздавать в визуальном редакторе. Соответственно, и в гриде отображать эту таблицу.
...
Рейтинг: 0 / 0
Прелести c#
    #38002251
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmА поясните, в чем разница в словах , разорвать коннект и высвободить соединение? Честное слово не понял разницы, разрыв и в том и в том случае произойдет?
На случай, если у вас серверное приложение и очень много пользователей - конечно серверное и пользователей много, как и лицензий на использование и контроль сессий (бездействий и т.д.), как раз в данном случае и необходим контроль и "НЕОБРЫВ" соединения.. В каком-нибудь приложение тет-а-тет, одни-на-один с базой, можно и рвать смело...

вы не поняли саму суть пройдите по ссылке даденой выше и внимательно читайте до полного просветления.

ps серверное приложение или приложение тет-а-тет принципиальной разницы нет
...
Рейтинг: 0 / 0
Прелести c#
    #38002275
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йцукеkill_zdmУ Сеппа, что касается вин-приложений.. то на уровне... обращений к одной таблицы.. кинул грид, создал коннект, указал таблицу и прям счастье наступило....... Не то.
Вы, наверно, про создание всего в визуальном редакторе?
Можно, например, иметь в типизированном DataSet таблицы, которые не соответствуют таблицам базы, и заполнять их произвольными запросами, которые в свою очередь могут быть параметризованными, и которые можно насоздавать в визуальном редакторе. Соответственно, и в гриде отображать эту таблицу.
Не, в визуале разобрался, как потом в риле поменять запрос, созданым в дизайне компонентам?
...
Рейтинг: 0 / 0
Прелести c#
    #38002297
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно я спрошу.. как это делал в дэлфи и как это сделать в c#? Кинул Connection, Query , DataSource и DBGrid. Связал их. В дизайне, компоненту Query(назовем его Query1) дал запрос в дизайне, например, "select * from таблица" ... В риле, допустим есть там например какой-нибудь TEedit(назовем его Edit1) для быстрого поиска... в риле пишу
Код: pascal
1.
2.
3.
4.
5.
6.
7.
With Query1 do
begin
Close;
Sql.text:='select поля from таблица where name =:n';
ParamByName('n').Asstring:=AnsiUpperCase(Edit1.Text);
open;
end;


фиг с ними там с апперами... просто вот так примерно как сделать?
...
Рейтинг: 0 / 0
Прелести c#
    #38002363
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmМожно я спрошу.. как это делал в дэлфи и как это сделать в c#? Кинул Connection, Query , DataSource и DBGrid. Связал их. В дизайне, компоненту Query(назовем его Query1) дал запрос в дизайне, например, "select * from таблица" ... В риле, допустим есть там например какой-нибудь TEedit(назовем его Edit1) для быстрого поиска... в риле пишу
Код: pascal
1.
2.
3.
4.
5.
6.
7.
With Query1 do
begin
Close;
Sql.text:='select поля from таблица where name =:n';
ParamByName('n').Asstring:=AnsiUpperCase(Edit1.Text);
open;
end;


фиг с ними там с апперами... просто вот так примерно как сделать? Тут
...
Рейтинг: 0 / 0
Прелести c#
    #38002383
йцуке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmМожно я спрошу.. как это делал в дэлфи и как это сделать в c#? Кинул Connection, Query , DataSource и DBGrid. Связал их. В дизайне, компоненту Query(назовем его Query1) дал запрос в дизайне, например, "select * from таблица" ... В риле, допустим есть там например какой-нибудь TEedit(назовем его Edit1) для быстрого поиска... в риле пишу
Код: pascal
1.
....


фиг с ними там с апперами... просто вот так примерно как сделать?

В дизайнере создан только dataGridView1, читается с диска файл .csv, и отображается в гриде
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        
BindingSource bs = new BindingSource();
DataTable table = new DataTable();

void Load(FileInfo f)
            table.Clear();
            string sConnectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;FMT=Delimited(,);HDR=No'",f.DirectoryName);
            using (OleDbConnection conn = new OleDbConnection(sConnectionString))
            using (OleDbCommand com = new OleDbCommand("SELECT * FROM [" + f.Name + "]", conn))
            {
                conn.Open();                
                OleDbDataReader reader = com.ExecuteReader();
                table.Load(reader);
            }

            bs.DataSource = table;                
            bs.Sort = "F1 DESC";
            dataGridView1.DataSource = bs;           
}

...
Рейтинг: 0 / 0
Прелести c#
    #38003516
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmМожно я спрошу.. как это делал в дэлфи и как это сделать в c#? Кинул Connection, Query , DataSource и DBGrid. Связал их. В дизайне, компоненту Query(назовем его Query1) дал запрос в дизайне, например, "select * from таблица" ... В риле, допустим есть там например какой-нибудь TEedit(назовем его Edit1) для быстрого поиска... в риле пишу
Код: pascal
1.
2.
3.
4.
5.
6.
7.
With Query1 do
begin
Close;
Sql.text:='select поля from таблица where name =:n';
ParamByName('n').Asstring:=AnsiUpperCase(Edit1.Text);
open;
end;


фиг с ними там с апперами... просто вот так примерно как сделать? Ещё тут. Потом по Entity Framework примеры можно посмотреть.
...
Рейтинг: 0 / 0
Прелести c#
    #38336289
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шо не так?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
   struct y
 {
     public int a;
     public double z;
     public y(int a , double z)
     {
         this.a = a;
         this.z = z;             
     }
     public static explicit operator string (y a){return "nostr";}
 }
class Program    {
    static void Main(string[] args)    {
       object o =new y(10,1.1);
       string xx= ((string)o);
       Console.WriteLine ("damned line '{0}'",xx);
    }
}



почему после unboxing нет преобразования в строку, а где позднее связывание?

Unhandled Exception: System.InvalidCastException: Unable to cast object of type 'y' to type 'System.String'.
at Program.Main(String[] args)
...
Рейтинг: 0 / 0
Прелести c#
    #38336555
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizпочему после unboxing нет преобразования в строку
C# воспринимает это как попытку привести object к string, что невозможно. Неявное преобразование к y не выполняется т.к. правила языка это запрещают. Надо сначала привести object к y, а затем уже к string.
Код: c#
1.
string xx= ((string)(y)o);



tchingizа где позднее связывание?
Позднее связывание это virtual или dynamic. У тебя ни того ни другого нет.
...
Рейтинг: 0 / 0
Прелести c#
    #38336602
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmПодозревая закидывание меня чем нибудь тяжелым, не смог все-таки удержаться и не создать тему. Если это возможно, прошу понять то, что я хотел донести и узнать. Писал на Delphi под БД. Несколько раз, судьба пыталась меня свести с Visual Studio и C# в частности. Проект создан и работает, но почему так все сложно у Вас? В целом разобрался, но родилось несколько все равно вопросовТы ж понимаешь, что ни один из твоих вопросов напрямую к C# никакого отношения не имеет?
...
Рейтинг: 0 / 0
Прелести c#
    #38339761
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baziletchingizпочему после unboxing нет преобразования в строку
C# воспринимает это как попытку привести object к string, что невозможно.
в ошибке написано y к строке
Код: plaintext
1.
Unable to cast object of type 'y' to type 'System.String'.
...
Рейтинг: 0 / 0
Прелести c#
    #38342096
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizbazileC# воспринимает это как попытку привести object к string, что невозможно.
в ошибке написано y к строке
Код: plaintext
1.
Unable to cast object of type 'y' to type 'System.String'.

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

При наличии пользовательского преобразования типов компилятор должен подставить вызов нужного метода. В строке string xx= ((string)o) компилятор видит переменную типа System.Object которую требуется привести к System.String и генерирует IL команду castclass. Эта команда не вызывает пользовательские преобразования типов и поэтому ты получаешь ошибку. Если же написать string xx= (string)(y)o; то вызов твоего преобразования будет сгенерирован и ошибка пропадет.
...
Рейтинг: 0 / 0
Прелести c#
    #38342970
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileОшибка генерируется на этапе исполнения когда реальный тип значения переменой уже известен.

При наличии пользовательского преобразования типов компилятор должен подставить вызов нужного метода. В строке string xx= ((string)o) компилятор видит переменную типа System.Object которую требуется привести к System.String и генерирует IL команду castclass. Эта команда не вызывает пользовательские преобразования типов и поэтому ты получаешь ошибку. Если же написать string xx= (string)(y)o; то вызов твоего преобразования будет сгенерирован и ошибка пропадет.
обращать внимание на некоторое противоречие между тем, что система знает какой тип, но пытается преобразовывать через жопу универсальный интерфейс не буду.


вместо ( string) o, уже перегрузив ToString(), написал o.ToString()
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Прелести c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]