- Remove From My Forums
Неправильный синтаксис около конструкции «)» ?
-
Общие обсуждения
-
Всем привет, возник вопрос по разработке приложений с помощью ASP.NET
Проблема в этой ошибке
SqlDataSource1.DataBind();
GridView2.DataBind(); — Неправильный синтаксис около конструкции «)».
Literal3.Text = «Всего найдено — » + GridView2.Rows.Count.ToString();Подскажите пожалуйста как это вылечить.
-
Перемещено
6 апреля 2014 г. 12:59
-
Изменен тип
Maksim MarinovMicrosoft contingent staff, Moderator
11 апреля 2014 г. 7:07
Тема неактивна
-
Перемещено
Цитата из документации Database Identifiers:
Rules for Regular Identifiers
- Embedded spaces or special characters are not allowed.
В именах параметров не разрешены пробелы.
Уберём из них пробелы и квадратные скобки.
Попутно исправим другие ошибки и недочёты: имя соединения (у вас оно почему-то названо connectionString), опасность потери ресурсов (используем using для устранения этого), использование устаревшего и опасного метода AddWithValue (заменим его на Add с указанием точного типа).
Кроме того, время_входаTextBox используется дважды. Будьте внимательны!
string sql = @"UPDATE Табель SET Статус = @Статус, [Код смены] = @КодСмены, [Время входа] = @ВремяВхода, [Время выхода] = @ВремяВыхода WHERE [Код сотрудника] = @КодСотрудника AND Дата = @Дата AND [Код табеля] = @КодТабеля";
using var connection = new SqlConnection(_connectionString);
connection.Open();
using var command = new SqlCommand(sql, connection);
command.Parameters.Add("КодТабеля", SqlDbType.Int).Value = textBox5.Text; // int.Parse(textBox5.Text)
command.Parameters.Add("КодСотрудника", SqlDbType.Int).Value = код_сотрудникаTextBox.Text;
command.Parameters.Add("Дата", SqlDbType.DateTime2).Value = датаDateTimePicker.Value;
command.Parameters.Add("Статус", SqlDbType.NVarChar).Value = comboBox1.Text;
command.Parameters.Add("КодСмены", SqlDbType.Int).Value = comboBox2.Text;
command.Parameters.Add("ВремяВхода", SqlDbType.DateTime2).Value = время_входаTextBox.Text;
command.Parameters.Add("ВремяВыхода", SqlDbType.DateTime2).Value = время_выходаTextBox.Text;
command.ExecuteNonQuery();
Благодаря использованию using соединение будет гарантировано закрыто, даже в случае возникновения исключения. Вызывать метод Close() не нужно.
Я не знаю, какие именно типы используются у вас в таблице, поэтому сами укажите правильные типы SqlDbType. При необходимости примените int.Parse и тому подобные методы. А лучше используйте NumericUpDown для ввода чисел вместо TextBox.
Почему не стоит использовать метод AddWithValue:
Can we stop using AddWithValue() already?
AddWithValue is evil!
AddWithValue is Evil
Достаточно прочитать любую из этих статей.
|
|||
| Mary01
30.05.17 — 13:51 |
Здравствуйте!
Как исправить ошибку?
Выдает ошибку. |
||
| Волшебник
Модератор 1 — 30.05.17 — 13:52 |
Нужно исправить синтаксис около конструкции «<«. |
||
| Mary01
2 — 30.05.17 — 13:53 |
(1) но у меня тут нет никакого «<« |
||
| Волшебник
Модератор 3 — 30.05.17 — 13:55 |
посмотри ПараметрыСоединенияВнешнегоИсточникаДанных |
||
| Волшебник
Модератор 4 — 30.05.17 — 13:57 |
Соед = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
Источник = ВнешниеИсточникиДанных[НазваниеИсточника]; |
||
| Mary01
5 — 30.05.17 — 14:41 |
(4) это все есть. |
||
| mexanik_96
6 — 30.05.17 — 14:43 |
(0) таблица в рид онли стоит? |
||
| Mary01
7 — 30.05.17 — 14:54 |
(6) где это смотреть? |
||
| Mary01
8 — 30.05.17 — 14:55 |
(6) посмотрела, в свойствах таблицы в конфигураторе — нет, галочка Только чтение снята. |
||
| Черный маклер
9 — 30.05.17 — 15:02 |
(0) бывают древние версии БД или ODBC — в таких ситуациях проще в БД добавить хранимую процедуру и вызывать ее через ВИД |
||
| Mary01
10 — 30.05.17 — 15:03 |
(9) что за процедура и что такое ВИД? |
||
| Черный маклер
11 — 30.05.17 — 15:04 |
(10) ВИД — внешний источник данных, кроме таблиц БД есть функции |
||
| Mary01
12 — 30.05.17 — 15:19 |
(1) как можно посмотреть где появляется конструкция «<«? |
||
| mehfk
13 — 30.05.17 — 15:20 |
(12) В профайлере. |
||
|
Mary01 14 — 30.05.17 — 16:15 |
(13) проблема решена! профайлер показывал |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Здравствуйте,
уважаемые).
При попытке вывести данные относящиеся к пользователю из таблицы возникает ошибка:
При соединении с БД произошла ошибка. Неправильный синтаксис около конструкции «f81a14».
Текст
запроса:
Select * from news where (autor_id= 75f81a14-221a-4b67-9d7a-215d38438a08);
Вот так выглядит отрезок кода в приложении на C#
String strSqlConnection = WebConfigurationManager.ConnectionStrings[«ApplicationServices»].ConnectionString;
SqlConnection sqlCon = new SqlConnection(strSqlConnection);
try
{
string rt=»Select * from news where (autor_id= (» +Membership.GetUser().ProviderUserKey.ToString()+»));»; sqlCon.Open();
Label1.Text = rt;
SqlCommand cmd_SQL = new SqlCommand(rt, sqlCon);
cmd_SQL.CommandType = CommandType.Text;
cmd_SQL.ExecuteNonQuery();
}
catch (Exception ex)
{
Label1.Text += «При соединении с БД произошла ошибка «;
Label1.Text += ex.Message;
}
finally
{
sqlCon.Close();
}
Помогите пожалуйста разобраться или подскажите иной способ.)