Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SqlDataReader и LEFT JOIN, SqlDataReader и LEFT JOIN 
:(
    Опции темы
Sed0Y
  Дата 28.1.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



Привет всем.

столкнулся с проблемой в таком вот коде (пытаюсь вытащить название полей с таблицы, имя которого передаю в строке "FTableName"):
к примеру FTableName = "Темп";

Код


                SqlConnection conn = new SqlConnection(ConnectionString);
                conn.Open();

                string sql = @" SELECT c.name "
                                + "FROM sys.columns c "
                                    + "LEFT JOIN sys.objects o ON c.object_id = o.object_id "
                                + "WHERE o.name = [" + FTableName + "]";

                SqlCommand SComm = new SqlCommand(sql, conn);
                SqlDataReader rows = SComm.ExecuteReader(); 

 

Ошибку выдает на строке:

Код

                SqlDataReader rows = SComm.ExecuteReader(); 
 

и говорит, что: "Invalid column name 'Темп'"

А если написать просто: string sql = @" SELECT * FROM Темп" - то все работает, думал может алиасы не понимает, убирал - все так же...
Может есть другой способ получить названия полей таблиц?
Но все же хочется разобраться, как верно работать с вложенными запросами и алиасами...

Зарание спасибо! 

PM MAIL ICQ   Вверх
Sed0Y
  Дата 28.1.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



ВСЕ - всем спс за внимание, ошибка была в том, что вместо 

Код

+ "WHERE o.name = [" + FTableName + "]";
 

нужно было написать 

Код

+ "WHERE o.name = '" + FTableName + "'";
 
PM MAIL ICQ   Вверх
kobra
Дата 30.1.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



вобше то рекомендуется так
Код

select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = N'FScemaName' and TABLE_NAME = N'FTableName'

PM MAIL   Вверх
emmanuil
Дата 31.1.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



И еще можно через объекты получить схему:
Код

DbCommand.CommandText = "select * from Table";
DataTable.Load(DbCommand.ExecuteReader(CommandBehavior.SchemaOnly));
//или
SqlConnection.GetSchema(); // см. док-ю.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.