Как стать автором
Обновить

Комментарии 16

Наглядный пример обучения созданию прикладного ПО, подверженному sqli.
Из статьи в статью кочуют эти примеры с конкатенацией строк в запросах…
Топик совсем уж для начинающих.

Как подключиться к [любая рсубд] используя ADO.NET?

1. Скачиваем провайдер
2. Используем его как и любой другой.
3. Profit!??
Если начинающие будут учиться по этому коду, то сейчас их никто не поймёт.
Так уже давно не пишут, это устаревшая практика.
Интересно узнать, почему кто-то со мной не согласен?
Вы вообще не слышали про using? Стыдно же.

(задумайтесь, что ли, что будет, если при выполнении команды будет ошибка)
Всё делается ещё проще.
Через NuGet в VS ищем MySQL Connector и просто устанавливаем.
Затем идём в Add -> Data -> ADO.NET Entity Data Model, создаём модель и уже можно пользоваться всеми прелестями Linq2Sql даже с базой MySQL

 using (dbEntities db = new dbEntities())
            {
                var visitors = db.user.Where(c => c.user_id > 0).Select(c => new Visitor
                    {
                        Id = c.user_id,
                        Username = c.username
                    }).ToList();
		...
            }
Неужели существует Linq2Sql для MySql? Мне казалось, что Linq2Sql только для MS Sql, а в драйвере MySql провайдер для Entity Framework.
И мне вообще кажется, что изучать работу в .Net с MySql лучше не с linq…
А как таким способом сделать добавление и апдейт таблиц с чем-то вроде db.SubmitChanges()?
Пробовал — не получилось. Делает таким образом только выборку (Select)
insert:

using (dbEntities db = new dbEntities())
{
	user u = new user{username = "username", password=MD5.Hash(String.Format("{0}{1}", Salt, Password)), ... };
	...
	db.user.Add(u);
	db.SaveChanges();
}


Т.к IEnumerable (а db.user у нас и есть IEnumerable) не позволяет прямо добавлять элементы, то надо добавить экстеншен для него:

public static class DbSetExtension
{
	public static IEnumerable<T> Add<T>(this IEnumerable<T> e, T value)
	{
            foreach (var cur in e)
            {
                yield return cur;
            }
            yield return value;
	}
}

Т.к IEnumerable (а db.user у нас и есть IEnumerable) не позволяет прямо добавлять элементы, то надо добавить экстеншен для него:

Это такой очень тонкий троллинг? Вы делаете pure метод, затем его вызываете, не используя возврат, и думаете, что что-то изменится в его аргументах?
а yield разве не возврат? :)
У меня этот вариант для MySQL работает.
db.user.Add(u);


Вы этот возврат нигде не используете.

А работает он (ваш код) потому, что db.user — это какой-нибудь вариант DbSet, у которого этот метод есть сам по себе.
Да, и апдейт делается просто:

var x = (from u in db.user where u.email == "my@email.com" select u).Single();
xu.locked = 1;

db.SaveChanges();
Web Platform Installer с лёгкостью поставит MySQL, даст провайдера а с nuget модулем Linq2MySQL с легкостью интегрируется в решение…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории