Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / select TOP / 25 сообщений из 32, страница 1 из 2
13.10.2006, 01:17
    #34052253
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Я работаю c sql server 2000. Мне надо получить определенное количество записей. Это количество лежит в переменной n. Как правильно составить запрос пишу: select TOP n ID1 FROM Work, ну и т.д. Ошибка. Помогите!
...
Рейтинг: 0 / 0
13.10.2006, 08:55
    #34052422
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Вариантов ... несколько > 2х, но самые быстрые: 1. Как Вы уже сказали - TOP,
но для этого придётся формировать динамический запрос и запущать полученную
строчку; 2. использовать set rowcount N. Подробност см. BOL. И вопросы по
скулю лучше задавать на соотв. форуме :)


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
13.10.2006, 10:46
    #34052817
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Добавлю, что SQL Server 2005 поддерживает конструкцию TOP @n, где @n - переменная.
...
Рейтинг: 0 / 0
13.10.2006, 11:15
    #34052938
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Код: plaintext
1.
2.
3.
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";
n= 15 ;

sqlcommand mycom = new sqlcommand(sqlstring, mycon);

----
www.hramin.jino-net.ru
...
Рейтинг: 0 / 0
13.10.2006, 12:26
    #34053237
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
убить камнем за такой динамик sql
...
Рейтинг: 0 / 0
13.10.2006, 13:52
    #34053659
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Ramin
Код: plaintext
1.
2.
3.
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";
n= 15 ;

sqlcommand mycom = new sqlcommand(sqlstring, mycon);

----
www.hramin.jino-net.ru

Это не прошло.
...
Рейтинг: 0 / 0
13.10.2006, 13:53
    #34053661
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
скажы честно, какая разница будет???, самый лучшый вариант сказал Bigheadman , но это не для 2000!

стринг в конце концов получится
"select TOP 15 ID1 FROM Work";

----
www.hramin.jino-net.ru
...
Рейтинг: 0 / 0
13.10.2006, 13:54
    #34053667
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
авторскажы честно, какая разница будет???,

тоесть исправлю себя,

---"какие не достатки будет"???
отвечу --- никакие!

доказывай что будет!!

----
www.hramin.jino-net.ru
...
Рейтинг: 0 / 0
13.10.2006, 13:58
    #34053682
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
puma1 Ramin
Код: plaintext
1.
2.
3.
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";
n= 15 ;

sqlcommand mycom = new sqlcommand(sqlstring, mycon);

----
www.hramin.jino-net.ru

Это не прошло.


а так:

Код: plaintext
1.
2.
3.
string n;
n = "15";
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";
sqlcommand mycom = new sqlcommand(sqlstring, mycon);



----
www.hramin.jino-net.ru
...
Рейтинг: 0 / 0
13.10.2006, 14:22
    #34053790
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Ramin puma1 Ramin
Код: plaintext
1.
2.
3.
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";
n= 15 ;

sqlcommand mycom = new sqlcommand(sqlstring, mycon);

----
www.hramin.jino-net.ru

Это не прошло.


а так:

Код: plaintext
1.
2.
3.
string n;
n = "15";
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";
sqlcommand mycom = new sqlcommand(sqlstring, mycon);



----
www.hramin.jino-net.ru

То же самое. :(
...
Рейтинг: 0 / 0
13.10.2006, 14:26
    #34053805
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
2 puma1.
Если не приведете текст ошибки, то гадание на кофейной гуще будет долго продолжаться.
...
Рейтинг: 0 / 0
13.10.2006, 14:27
    #34053808
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
слушай пумучка, я сперва добавлял на стринг интегер что б ты тоже сама что то сама сообразила а не копировалкод, если не работает стринг на стринг, и просто извини меня тупо сказать не прошло тогда вы что то не договариваети!

авторТо же самое. :(
какую ошибку дает?

----
www.hramin.jino-net.ru
...
Рейтинг: 0 / 0
13.10.2006, 15:02
    #34053938
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Raminслушай пумучка, я сперва добавлял на стринг интегер что б ты тоже сама что то сама сообразила а не копировалкод, если не работает стринг на стринг, и просто извини меня тупо сказать не прошло тогда вы что то не договариваети!

авторТо же самое. :(
какую ошибку дает?

----
www.hramin.jino-net.ru

Во-первых, ты может уже давно в этом программируешь, я вообще только начала учить ADO.NET , если, что-то не получается обращаюсь сюда, потому-что не куда больше, учусь сама. Если спросила, какую-то ерунду, то не надо отвечать грубостью, лучше промолчи или объясни. Вообще я читала, что нельзя в SQL Server 2000, в случае с TOP вкладывать переменные, можно только так например Select TOP 5, а так нельзя Select TOP n. Из-за этого и обратилась за помощью, а не чтоб копировать твой код. А текст ошибки
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. И показывает на строку reader.Close(); А когда пишу, Select TOP 5, то все работает.
...
Рейтинг: 0 / 0
13.10.2006, 15:10
    #34053960
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
приведи полный код
...
Рейтинг: 0 / 0
13.10.2006, 15:24
    #34054016
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
zz118приведи полный код
private void Page_Load(object sender, System.EventArgs e)
{
string str1="";

int k=0;
XmlTextReader reader = new XmlTextReader (Server.MapPath("djon.xml"));
while (reader.Read())
{
if(reader.Name=="AMOUNT")
{
str1=reader.ReadElementString();
k=Convert.ToInt32(str1);

}

}

SqlConnection myConnection = new SqlConnection("server=(local);database=Northwind;Trusted_Connection=yes");
SqlDataReader reader1= null;

try
{



myConnection.Open();

string sqlstring = "select TOP k ID1 FROM Work ORDER BY ID1";
SqlCommand myCommand = new SqlCommand(sqlstring, myConnection);
reader1 = myCommand.ExecuteReader();
while (reader1.Read())
{

Response.Write("ID1="+reader1.GetDecimal(0));
Response.Write(" ");


}
}

catch (SqlException ex)
{
Response.Write(ex.Message);
}

finally
{
reader1.Close();
myConnection.Close();
}

}
...
Рейтинг: 0 / 0
13.10.2006, 15:47
    #34054084
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
"select top " + Convert.ToString(k) + " * ..."
хотя бы так, но ОЧЕНЬ не безопасно!
...
Рейтинг: 0 / 0
13.10.2006, 15:56
    #34054113
Bigheadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
авторА текст ошибки
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. И показывает на строку reader.Close(); А когда пишу, Select TOP 5, то все работает
Постойте. Указанная ошибка никоим образом не связана с SELECT TOP.
...
Рейтинг: 0 / 0
13.10.2006, 15:58
    #34054119
Думающий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
puma1
если, что-то не получается обращаюсь сюда, потому-что не куда больше, учусь сама.

Все как правило учаться сами, а не ходят на курсы.
puma1
Если спросила, какую-то ерунду, то не надо отвечать грубостью, лучше промолчи или объясни.

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

puma1
Вообще я читала, что нельзя в SQL Server 2000, в случае с TOP вкладывать переменные, можно только так например Select TOP 5, а так нельзя Select TOP n. Из-за этого и обратилась за помощью, а не чтоб копировать твой код.
Конкретно в TOP нельзя, но вы формируете строку на стороне клиента, а значит можете в строковую переменную запихнуть строку с количеством , как это сделать вам уже объяснили.


Если у вас выдает ошибку на Reader.Close, не пробовали убрать TOP из запроса и вставить туда просто SELECT * from ...., может дело то не в TOP\


Из приведенного кода

Код: plaintext
string sqlstring = "select TOP k ID1 FROM Work ORDER BY ID1";
поему вы гне адо начала изучать не давно, а вообще программирование.
Переменные так не вставляются в строку, сервер о вашей K ничего не знает, сделайте
Код: plaintext
string sqlstring = "select TOP " + k.toString + " ID1 FROM Work ORDER BY ID1";

По поводу k.toString пусть СИсты меня поправят, я в нем не знаток.
...
Рейтинг: 0 / 0
13.10.2006, 16:03
    #34054144
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
+ ко всему вне блока try{...} этот reader вообще не существует (=null).
...
Рейтинг: 0 / 0
13.10.2006, 16:08
    #34054168
Думающий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
zz118+ ко всему вне блока try{...} этот reader вообще не существует (=null).
Это вы к тому что в finally можем попасть до присвоения ридера...да, похоже на это...
...
Рейтинг: 0 / 0
13.10.2006, 16:09
    #34054172
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Думающий puma1
если, что-то не получается обращаюсь сюда, потому-что не куда больше, учусь сама.

Все как правило учаться сами, а не ходят на курсы.
puma1
Если спросила, какую-то ерунду, то не надо отвечать грубостью, лучше промолчи или объясни.

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

puma1
Вообще я читала, что нельзя в SQL Server 2000, в случае с TOP вкладывать переменные, можно только так например Select TOP 5, а так нельзя Select TOP n. Из-за этого и обратилась за помощью, а не чтоб копировать твой код.
Конкретно в TOP нельзя, но вы формируете строку на стороне клиента, а значит можете в строковую переменную запихнуть строку с количеством , как это сделать вам уже объяснили.


Если у вас выдает ошибку на Reader.Close, не пробовали убрать TOP из запроса и вставить туда просто SELECT * from ...., может дело то не в TOP\


Из приведенного кода

Код: plaintext
string sqlstring = "select TOP k ID1 FROM Work ORDER BY ID1";
поему вы гне адо начала изучать не давно, а вообще программирование.
Переменные так не вставляются в строку, сервер о вашей K ничего не знает, сделайте
Код: plaintext
string sqlstring = "select TOP " + k.toString + " ID1 FROM Work ORDER BY ID1";

По поводу k.toString пусть СИсты меня поправят, я в нем не знаток.
select TOP k ID1 FROM. Я знаю, что так не пишут, просто в этом мой вопрос и состоял, как правильно это написать, до этого писала "select TOP " + k + " ID1 FROM. Выдавал ошибку. А насчет этого ( Конкретно в TOP нельзя, но вы формируете строку на стороне клиента, а значит можете в строковую переменную запихнуть строку с количеством , как это сделать вам уже объяснили.) я поняла. Спасибо за участие
...
Рейтинг: 0 / 0
13.10.2006, 16:12
    #34054183
Думающий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
puma1 Я знаю, что так не пишут, просто в этом мой вопрос и состоял, как правильно это написать, до этого писала "select TOP " + k + " ID1 FROM.
Ну так вы ставьте вопрос точнее..и приводе пример того что у вас не работает и текст ошибки, вам будут помогать гараздо быстрее =)
...
Рейтинг: 0 / 0
13.10.2006, 16:22
    #34054219
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Думающий puma1 Я знаю, что так не пишут, просто в этом мой вопрос и состоял, как правильно это написать, до этого писала "select TOP " + k + " ID1 FROM.
Ну так вы ставьте вопрос точнее..и приводе пример того что у вас не работает и текст ошибки, вам будут помогать гараздо быстрее =)
Хорошо. Спасибо большое за помощь.
...
Рейтинг: 0 / 0
13.10.2006, 16:47
    #34054325
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
дорогой Пума если обидел вас извините не хотел

но как не нервничать?!
я дал вам такой код
Код: plaintext
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";

а вы даже не правльно скопировали :)
авторstring sqlstring = "select TOP k ID1 FROM Work ORDER BY ID1";





----
www.hramin.jino-net.ru
...
Рейтинг: 0 / 0
13.10.2006, 17:01
    #34054370
puma1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select TOP
Raminдорогой Пума если обидел вас извините не хотел

но как не нервничать?!
я дал вам такой код
Код: plaintext
string sqlstring = "select TOP  "+n+"  ID1 FROM Work";

а вы даже не правльно скопировали :)
авторstring sqlstring = "select TOP k ID1 FROM Work ORDER BY ID1";





----
www.hramin.jino-net.ru

Дело в том, что я все перепробывала и так "select TOP "+n+" ID1 FROM Work" и так "select TOP "+n.ToString()+" ID1 FROM Work". Я думала в этом проблема, оказалось, что ошибка была в другом. Сейчас все прекрасно работает. Спасибо за помощь.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / select TOP / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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