Попробуйте / Catch метод ошибки ASP.NET - PullRequest
3 голосов
/ 19 мая 2011

Я пытаюсь сделать эту работу. Я хочу, чтобы он проверял, существует ли запись после вставки, но он всегда возвращает ошибку: Строка 1: Неверный синтаксис рядом с 'nvarchar'. Может кто-нибудь указать мне, что не так в моей декларации? Также, если у вас есть лучший способ поймать метод, пожалуйста, просветите меня больше. Просто новичок в программировании в ASP.NET

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

protected void Page_Load(object sender, EventArgs e)
        {
            string connString_LibrarySystem = "Server=DEVSERVER;User ID=sa;Password=Sup3r-Us3r;Database=LibrarySystem";
            string strSQL = "INSERT INTO TblBooks (bookid, booktitle, lastname, firstname, description, categoryid, dateadded, statusid, quantity, isdeleted) VALUES (@bookid, @booktitle, @lastname, @firstname, @description, @categoryid, @dateadded, @statusid, @quantity, @isdeleted)";

            SqlConnection conn = new SqlConnection(connString_LibrarySystem);

            conn.Open();

            SqlCommand cmd = new SqlCommand();

            cmd = new SqlCommand(strSQL, conn);
            cmd.Parameters.AddWithValue("@bookid", Request.Form["bookid"]);
            cmd.Parameters.AddWithValue("@booktitle", Request.Form["booktitle"]);
            cmd.Parameters.AddWithValue("@lastname", Request.Form["lastname"]);
            cmd.Parameters.AddWithValue("@firstname", Request.Form["firstname"]);
            cmd.Parameters.AddWithValue("@description", Request.Form["description"]);
            cmd.Parameters.AddWithValue("@categoryid", Request.Form["categoryid"]);
            cmd.Parameters.AddWithValue("@dateadded", Request.Form["dateadded"]);
            cmd.Parameters.AddWithValue("@statusid", Request.Form["statusid"]);
            cmd.Parameters.AddWithValue("@quantity", Request.Form["quantity"]);
            cmd.Parameters.AddWithValue("@isdeleted", Request.Form["isdeleted"]);

            cmd.ExecuteNonQuery();
            {
                conn.Close();
            }
            statuslabel.Text = "Insert successful";
        }

РЕДАКТИРОВАТЬ: Там только что удалены типы данных.

Ответы [ 5 ]

5 голосов
/ 19 мая 2011

Вам не нужно включать тип данных в операторы вставки. Пропустить их.

Попробуйте

string strSQL = "INSERT INTO TblBooks (bookid, booktitle, lastname, firstname, description, categoryid, dateadded, statusid, quantity, isdeleted) VALUES (@bookid, @booktitle , @lastname, @firstname, @description, @categoryid, @dateadded , @statusid , @quantity, @isdeleted)";
2 голосов
/ 19 мая 2011

Сначала удалите ваши типы в SQL, они вам не нужны (как подсказывают другие ответы)

Во-вторых, вы добавляете параметр в запрос следующим образом:

cmd.Parameters.AddWithValue("@bookid", Request.Form["bookid"]);

Вы не уверены, что Request.Form ["bookid"] не равен нулю, это вызовет вашу текущую проблему

2 голосов
/ 19 мая 2011

Чтобы сделать это, вам нужно удалить типы данных из переменной sqlstring.

Я бы, вероятно, переключился на использование хранимой процедуры и затем загрузил бы параметры, так как это в основном то, что вы делаете здесь сКоманда addwithvalue

также cmd.ExecuteNonQuery() вернет int, чтобы сообщить, что он был успешно добавлен.если он возвращает 1, вы знаете, что это завершено.http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

2 голосов
/ 19 мая 2011

не помещайте типы в ваши значения.

string strSQL = "INSERT INTO TblBooks (bookid, booktitle, lastname, firstname, description, categoryid, dateadded, statusid, quantity, isdeleted) VALUES (@bookid , @booktitle , @lastname , @firstname , @description , @categoryid , @dateadded , @statusid , @quantity , @isdeleted )";
1 голос
/ 19 мая 2011

Избавьтесь от типов данных в списке значений. Вам они не нужны.

...