Не отрабатывает хранимая процедура

Маша_24_175
Дата: 18.04.2006 12:52:44
У меня вопрос!
На MS SQL Servere есть хранимая процедура. рабочая. проверенно.
Которая выбирает из таблицы определенную запись и вставляет ее в другую таблицу. Работает где то секунд 30-40.
Вызываю ее из VStudio .net на web формочке вводиться значение и запускается процедура. В результате в новую таблицу ничего не добавляется..
Думаю проблемы с timeout-ом. С коннектом все нормально.
Вопрос: Где что проставить чтобы оно работало....

SqlParameter Sparam;
SqlDataReader Reader;
sqlConnection1.ConnectionString = "workstation id=server ;packet size=4096;user id=user;data source=SQLPPO;persist security info=False;initial catalog=FT_01";
sqlCommand1.Connection = sqlConnection1 ;
sqlCommand1.CommandType = CommandType.StoredProcedure ;
sqlCommand1.CommandText = "RP_SelAcc";
Sparam = sqlCommand1.Parameters.Add("@acc",SqlDbType.VarChar);
Sparam.Direction = ParameterDirection.Input ;
Sparam.Value = (string)Convert.ChangeType(this.Button1.Text,typeof(string));
try
{
sqlCommand1.Connection.Open ();
Reader = sqlCommand1.ExecuteReader ();
}
catch (SqlException ex)
{
Response.Write ("Error!!! "+ ex.Message.ToString ());
};
sqlCommand1.Connection .Close ();
Hratchia
Дата: 18.04.2006 13:17:13

Запусти Profiler и посмотри...
или открой хп в студии и запусти ее в пошаговом режиме


Posted via ActualForum NNTP Server 1.3

Маша_24_175
Дата: 18.04.2006 13:38:26
В пошаговом ничего не дает.
А можно поподробнее про этот профайлер?
Hratchia
Дата: 18.04.2006 14:43:16

Ищи у себя папке sql server-а profiler.exe

(обычно находится \Program Files\Microsoft SQL
Server\80\Tools\Binn\profiler.exe)


Posted via ActualForum NNTP Server 1.3

Mikhail Eremkin
Дата: 18.04.2006 15:00:30
TimeOut устанавливается непосредственно у SQLCommand, свойство TimeoutCommand

sqlCommand1.TimeoutCommand = 300
Маша_24_175
Дата: 19.04.2006 16:38:17
Все. проблема была не в этом.
просто Считывалось с кнопки а не из поля.....
Sparam.Value = (string)Convert.ChangeType(this.TextBox1.Text,typeof(string));

:)

Но возник другой вопрос!
Не могу с помощью Ридера обратиться к результату хранимой процедуры...
Reader.FieldCount .ToString (); - сколько столбцов видно.
Reader.GetDataTypeName (0); - типы столбцов тоже можно определить.
А считать значение из поля не получается... :(

Выдает такую ошибку, тип варчар.
Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present.

Label1.Text += " " + (string)Convert.ChangeType(Reader.GetSqlString(0),typeof(string));

Ничего не пойму.... помогите!!!
Hratchia
Дата: 19.04.2006 17:25:52

Reader.HasRows -количество вернувшихся записей

а передед тем как обращаться к данным их надо считать

Reader.Read()


Posted via ActualForum NNTP Server 1.3

Bug69
Дата: 19.04.2006 17:38:24
Hratchia

Reader.HasRows -количество вернувшихся записей

а передед тем как обращаться к данным их надо считать

Reader.Read()


Posted via ActualForum NNTP Server 1.3

Не совсем так. HasRows отличается от Read тем, что не осуществляет переход на следующую строку, а просто указывает наличие/отсутствие оной.
winsky!
Дата: 19.04.2006 17:42:14
Hratchia

Reader.HasRows -количество вернувшихся записей

[C#]public bool HasRows {get;}
интересно, как вы из булина хотите количество вернувшихся записей извлечь?
2Маша_24_175
object o = Reader[columnIndex];
можно также воспользоваться кучкой методов ридера для возврата определенного типа, чтобы объект не преобразовывать
(GetInt32, GetDateTime и т.д.)
Hratchia
Дата: 19.04.2006 18:00:40

Да ладно Вам прицепились:)

HasRows тут совсем не нужен был:))

Да и автор уже топик новый создал и там получил подсказку Read()


Posted via ActualForum NNTP Server 1.3