#c# #mysql #sql #parameters
#c# #mysql #sql #параметры
Вопрос:
Я создал простой код, который извлекает параметр базы данных, который является («SOPNUMBE», порядковый номер) Однако иногда сотрудник заполняет неправильный заказ, давая мне значение «LIFTxxxx» вместо SOPNUMBE, которое равно «ORDxxxxx» и т. Д. Поскольку L стоит перед S, сначала мой ftp-сайт обрабатывает LIFT, создавая ошибку. Мне бы очень хотелось, чтобы это приложение игнорировало все, кроме «SOPNUMBE», я чувствую, что это довольно простой вопрос, и для меня это звучит как простое утверждение if then. Но у меня возникли проблемы с формулировкой. Любая помощь будет принята с благодарностью!!
public bool UpdateOrderToShipped(string order)
{
orderNumber = order;
string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
string statement = "UPDATE SOP10100 SET BACHNUMB = '" batch "' WHERE SOPNUMBE = @SOPNUMBE";
SqlCommand comm = new SqlCommand(statement, connectionPCI);
comm.Parameters.Add("SOPNUMBE", orderNumber);
try
{
comm.Connection.Open();
comm.ExecuteNonQuery();
comm.Connection.Close();
}
catch(Exception e)
{
comm.Connection.Close();
KaplanFTP.errorMsg = "Database error: " e.Message;
}
statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
comm.CommandText = statement;
SqlDataAdapter da = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
da.Fill(dt);
soptype = dt.Rows[0]["SOPTYPE"].ToString();
return true;
}
Комментарии:
1. Извините, но ваш вопрос довольно сложно понять. Какое отношение к этому коду имеет FTP-сайт и алфавитный порядок? Вы просто хотите добавить к этому код, который проверяет первые символы параметра [order]?
2. Да, извините, я в этом новичок. Добавление кода для проверки первых символов параметра [order] — это именно то, что я хочу сделать.
3. Почему вы не проверяете данные, когда пользователь впервые вводит их? Вы не должны вызывать методы, которые записывают номер заказа в базу данных, если номер заказа неверен.
4. Итак, на английском языке «Если первые три символа «ORD», то сделайте это, но в противном случае сделайте [???]» Что это должно делать, если это не так? Если вас не устраивают операторы if, то вам, вероятно, не следует работать с этим кодом. Высока вероятность того, что вы что-то сломаете.
5. Если первые три символа являются ORD , то сохраните данные, если нет, то игнорируйте.
Ответ №1:
ЛАс отметил в моем комментарии, если вам неудобно изменять этот код с помощью оператора if, то вам, вероятно, не следует поддерживать этот код. (Вы знаете, где еще есть ссылки на этот код? Ваше изменение повлияет на эти места.)
Но вот вы идете…
public bool UpdateOrderToShipped(string order)
{
if ((String.CompareOrdinal(order, 0, "ORD", 0, 3) == 0)
{
orderNumber = order;
string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
string statement = "UPDATE SOP10100 SET BACHNUMB = '" batch "' WHERE SOPNUMBE = @SOPNUMBE";
SqlCommand comm = new SqlCommand(statement, connectionPCI);
comm.Parameters.Add("SOPNUMBE", orderNumber);
try
{
comm.Connection.Open();
comm.ExecuteNonQuery();
comm.Connection.Close();
}
catch(Exception e)
{
comm.Connection.Close();
KaplanFTP.errorMsg = "Database error: " e.Message;
}
statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
comm.CommandText = statement;
SqlDataAdapter da = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
da.Fill(dt);
soptype = dt.Rows[0]["SOPTYPE"].ToString();
return true;
} else
{
return false;
}
}
Комментарии:
1. Насколько я знаю, на этот код больше нигде нет ссылок. Спасибо за вашу помощь, я продолжу экспериментировать.
2. Это может вызвать a
NullReferenceException
, если строка заказа равна null. Другой способ написать оператор ifif (String.CompareOrdinal(order, 0, "ORD", 0, 3) == 0 amp;amp; order.Length > 3)
. Это предотвращает исключение, поскольку кLength
свойству можно будет получить доступ только в том случае, если первые три буквы порядка являются ‘ORD’.3. @ Joshua @ Jamie F, что, если бы я хотел сказать «Все, кроме LIFT» вместо «Только ORD», было бы тогда (String. CompareOrdinal(порядок, 0, «ЛИФТ», 0, 4) != 0) ?
4. ДА. Это будет делать то, что вы описываете. Имейте в виду, что эти сравнения чувствительны к регистру. В этом случае будет обработан «Lift» или «lift».
5. @JamieF — Похоже, что OP окончательно ответил на ваш вопрос о том, следовало ли вам пытаться помочь ему / ей: очевидно, вам не следовало этого делать. Ну что ж, живи и учись.