LINUX.ORG.RU

Как добавлять в Sql Server Compact данные? DML. Есть ли примеры?


0

1

Непосредственная проблема - установил SQL Server CE. Из C# SQL запросами пробовал добавлять данные. Запрос:

INSERT INTO albums (Name, artist)
VALUES ('Bean', (SELECT MAX(ID) FROM artists WHERE Name = 'County Beardman'))

Контекст: http://pastebin.com/wC03h9wZ

При разборе выдаёт ошибку: Ошибка при разборе запроса. [ Token line number = 1,Token line offset = 65,Token in error = SELECT ].
Без использования вложенного SELECT, INSERT работает. Логика моя заключалась в добавлении внешнего id (у альбома на исполнителя) который действительно существует в таблице и одним запросом. MAX(ID) написал из-за того, что на одном форуме прочитал, что SQL Server ce выдаёт ошибку если вложенный SELECT возвращает скалярное значение, и там же приводился пример с MAX.

Работал с базами данных в C# немного, а SQL Server только установил. Посоветуйте как лучше производить такие базовые операции с этой базой данных и есть ли источники, в которых они показаны на примерах.
На msdn вода по-большей части. Находил описание SQL Server ce, список функций - из полезного и по большому счёту всё.

А Linq to SQL не прокатит? Там же есть автогенерация классов доступа к БД. А сами запросы пишутся на C#, как обычные Linq запросы. Проверить, можно ли так сделать с твоим Sql сервером я сейчас не могу(Windows с VS у меня нету сейчас под рукой).

Norgat ★★★★★ ()
Ответ на: комментарий от Norgat

Да, я думаю прокатит, но я ни разу не использовал linq. Работать с бд можно по-разному: вот NHibernate есть, здесь http://otvety.google.ru/otvety/thread?tid=542bd6221178c872 задал тот же вопрос и там есть ссылка на Entity Framework, есть наверняка ещё технологии, а можно и вручную отправлять запросы в базу, как я сейчас пишу. Если честно я теряюсь в том, что лучше использовать. У меня есть конкретная задача, которую мне нужно сделать и я вряд ли вообще что-либо сделаю, если буду изучать всё это.

Было бы интересно узнать чем лучше пользоваться, в каких случаях. А так проблема с добавлением в базу решена в гугл ответах.

viotan ()
Ответ на: комментарий от viotan

> Было бы интересно узнать чем лучше пользоваться, в каких случаях.

Для элементарного доступа к базе лучше юзать Linq to SQL, т.к. там будет автогенерация классов обёрток к таблицам БД и интуитивно понятный синтаксис LINQ(глянь у того же Троелсена, там всего 20 страничек по Linq to Object). Linq to Sql позволит не заморачиваться с синтаксисом SQL запросов, а работать в рамках чистого C#. Но Linq to SQL подходит только в тех случаях, когда не нужно что-то менять классах обёртках(т.е. никаких оптимизаций делать специфических, фактически когда автосгенерированных код полностью устраивает).

На сколько я помню именно так Linq to SQL позиционировал человек из Epam, когда пример с использованием этой технологии показывал.

p.s. Вот туториал(особо его не смотрел, но в создании dll с Linq to SQL Classes ничего сложного нету): http://www.thereforesystems.com/linq-to-sql-tutorial/

А тут есть несколько примеров кода с Linq to SQL, может поможет отперелиться: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

p.s.s: примеры проще всего найти на английском примерно по след запросу гугла: C# Linq to Sql examples

Norgat ★★★★★ ()
Ответ на: комментарий от viotan

> вряд ли вообще что-либо сделаю, если буду изучать всё это.

Вон из профессии!

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.