Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / почему нельзя в параметр поместить имя таблицы / 3 сообщений из 3, страница 1 из 1
04.10.2009, 13:53
    #36231380
AlenaNosova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему нельзя в параметр поместить имя таблицы
Добрый вечер

Почему в параметр нельзя поместить имя таблицы??? Вот такой код не работает.

OleDbConnection OleDbConnect = new OleDbConnection(OleConnect);
OleDbConnect.Open();
OleDbCommand query = OleDbConnect.CreateCommand();
query.CommandText = "update @table set login=@login, pass=@pass, serv=@serv, db=@db, con=@con, plan=@plan where id=@id";

query.Parameters.AddWithValue("@table", "nastr");
query.Parameters.AddWithValue("@login", user.Text);
query.Parameters.AddWithValue("@pass", password.Text);
query.Parameters.AddWithValue("@serv", server.Text);
query.Parameters.AddWithValue("@db", db.Text);
query.Parameters.AddWithValue("@con", strConnect);
query.Parameters.AddWithValue("@plan", plan.Text);
query.Parameters.AddWithValue("@id", id.ToString());
query.ExecuteNonQuery();
OleDbConnect.Close();
SqlCon.Close();


Второй вопрос: Почему передавая так id, запрос ничего не находит, если же укажу
query.CommandText = "update @table set login=@login, pass=@pass, serv=@serv, db=@db, con=@con, plan=@plan where id="+1.ToString();

находит строку и обновляет!!! но если передам туже единицу через параметр как выше показано, то не находит строку! я пыталась даже явно указывать тип параметра, но это не помогло!

приходится id конкатенировать со строкой, тогда все окей...

кстати насчет имени таблицы ее тоже приходится конкатенировать

query.CommandText = "update " + "nastr" + " set login=@login, pass=@pass, serv=@serv, db=@db, con=@con, plan=@plan where id=1";

Но так я понимаю как то не красиво..Гуру Ado.Net подскажите в чем проблема..

Ксати работаю в данной задаче с Access 2003


Спасибо за внимание!
...
Рейтинг: 0 / 0
05.10.2009, 15:49
    #36233131
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему нельзя в параметр поместить имя таблицы
OleDb не поддерживает именованные параметры смотрите MSDN.
? используют вместо именованных параметров + посмотрите порядок их задания и заполнения, там отличается от SqlClient
...
Рейтинг: 0 / 0
12.10.2009, 18:26
    #36246412
AlenaNosova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему нельзя в параметр поместить имя таблицы
Спасибо!

Действительно, в Access имеет значение не название параметра, а порядок его следования!!!

То есть если параметр @id указать в конце (после остальных параметров, так как в предложении SQL он находится в конце), то все прекрасно работает!
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / почему нельзя в параметр поместить имя таблицы / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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