Страница: 1 |
Страница: 1 |
Вопрос: Пара вопросов по ASP .NET (VB .NET)
Добавлено: 01.12.05 08:11
Автор вопроса: Алексей | Web-сайт:
а точнее три:
1. Как создать массив элементов, например кнопки <asp:Button /> ?
2. VB .NET позволяет делать ассоциированные массивы? Например, myArray("Вася Пупкин"). Как?
3. Есть функция, в ней код:
Dim Conn As New OleDbConnection(strConnString)
Conn.Open
Dim Cmd as New OleDbCommand(strSQL, Conn)
Dim DR As OleDbDataReader
DR = Cmd.ExecuteReader
If DR.Read Then
…
Если к этой функции обращаться часто возникает ошибка: «Exception Details: System.Data.OleDb.OleDbException: Неопознанная ошибка»
Часто - например, через цикл For i = 0 To 100 – уже идет ошибка, если до 20 то ошибки нет. Если следовать логике, то получается, что выполнить данный код можно будет одновременно не более чем для 20 пользователей. В чем трабла, может в харде?
ЗЫ: С адаптером тоже самое.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 01.12.05 08:43
Пожалуйста, на будущее: задавайте разные вопросы в разных темах форума.
1.
Dim btn As New Button
btn.ID = String.Format("btn{0}", i)
Me.FindControl("Form1".Controls.Add(btn)
Next
2. Нельзя. Это пережиток прошлого, который никому в принципе не нужен.
3. Вы OleDbConnection закрываете? Приведите весь код.
Номер ответа: 2
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #2
Добавлено: 01.12.05 10:12
Ну Павел! Автоматом! Даже не смотрит кто спрашивает!
А это всего лишь я
1. Спасибо, но это не то. При объявлении контрола на aspx-странице можно массив сделать, типа <asp:Button id="btnMy" Index="0" runat="server" />?
2. Какого прошлого?! Где это раньше было? В PHP есть точно знаю, в C по моему что-то есть, в VB не видел, не было необходимости. А вот сейчас приспичило. Да и как нет, вот например таблицу в ДатаСит загружаем, там ведь массив таблиц, строк и т.п. и юзать можно и названия и индексы, значит ассоциированный массив есть!
3. КонЬечно я все закрываю, и Nothing их всех. Единственное, функция у меня в dll-ке и там коннектион объявлен с именем Conn, а в aspx я также использую коннектион с таким же именем, но не думаю что проблема может быть в этом.
Номер ответа: 3
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 01.12.05 10:22
Млин Алексей да Алексей Мало ли Алексеев
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 01.12.05 10:27
1. Нельзя. Да и не нао это. Отходи от дурных привычек.
2. Массивы - пожалуйста, созавай. Но в коде. Как в пункте 1 я писал. А вот так, декларативно, со всякими Load и Delete - это какое-то извращение.
Кстати, а для каких целей? В большинстве случаев гораздо удобней использовать нечто вроде Repeater или DataList. Гораздо изящней получится, и удобней.
В случае с таблицей - отображай её в DataGrid.
3. Nothing - это лишнее. Ничем не поможет абсолютно. Можешь всё-таки ко показать? И еще, чтобы узнать детали ошибки, попорбуй заключить код, в котором она генерируется в Try-Catch:
'код
Catch ex As OleDbException
Response.Write ex.ToString
Response.Write ex.Errors(0)
End Try
Номер ответа: 5
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #5
Добавлено: 01.12.05 10:30
Чёрт.. 2-ой вопрос я видимо как-то связал с 1-ым и не вдумался в его суть (вот почему лучше задавать вопросы в разных темах) Предыдущие мои ответы на 2-ой вопрос считать недействительными.
Я не знаю, что такое "ассоциативный массив". Если тебе нужен доступ к элементам массива по ключам, то испоьзуй HashTable.
h.Add ("Вася Пупкин", "Чемпион"
MessageBox.Show (h("Вася Пупкин")
Номер ответа: 6
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #6
Добавлено: 01.12.05 11:20
Млин Алексей да Алексей Мало ли Алексеев
Азм тут один
1. Жаль…
2. Пф…, точно ассоциативный массив! Спасибо!
3. Код обычный, ничего сверхъестественного:
Dim Conn As New OleDbConnection(strConnString)
Conn.Open
Dim Cmd as New OleDbCommand(strSQL, Conn)
Dim DR As OleDbDataReader
DR = Cmd.ExecuteReader
If DR.Read Then
Try
Return = DR("id"
Catch
Return = vbNullString
End Try
End If
DR.Close: Conn.Close
DR = Nothing: Conn = Nothing: Cmd = Nothing
В деталях ничего интересного не написано, просто System.Data.OleDb.OleDbException: Неопознанная ошибка в 270 строке и все…
Может дело в харде, как ни как cpu700mhz, 128 рамы, мало…
Nothing - это лишнее
Почему это. Хотя, конечно, все само автоматически Nothing, но мало ли что, вдруг забудет
Номер ответа: 7
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #7
Добавлено: 01.12.05 11:34
С кодом всё нормально. Наверное дело в СУБД.
Можно взглянуть? Особенно на ex.Errors(0) - там обычно как раз вся суть и пишется.
Этот код только "обнуляет" значение переменной. Сам объект при этом не освобождается, а в любом случае остаётся лежать в памяти до сборки мусора.
Если эти строки расположены где-нибудь в середине функции, то в них есть смысл - Garbage Collector сможет раньше приступить к своей работе. А в конце функции в них никакой пользы нету, наоборот - лишние операции для процессора.
Номер ответа: 8
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #8
Добавлено: 01.12.05 12:11
Можно взглянуть? Особенно на ex.Errors(0) - там обычно как раз вся суть и пишется.
Угу, ex.Errors(0) действительно многое может рассказать, такого объема информации, пожалуй, я еще не видел, а самое главное все сразу становится ясно и понятно:
Неопознанная ошибка
с этим просто нельзя не согласиться
..А в конце функции в них никакой
Учетмс, сенкс!