C# 如何在检索一个数据库参数时忽略所有其他数据库参数

C# 如何在检索一个数据库参数时忽略所有其他数据库参数,c#,mysql,sql,parameters,C#,Mysql,Sql,Parameters,我创建了一个简单的代码,用于检索数据库参数sopnumber,ordernumber 但是,有时员工会填写错误的订单,给我一个LIFTxxxx值,而不是sopnumber,它是ORDxxxxx等。由于L在S之前,我的ftp站点首先处理LIFT,从而产生错误。我真的很想让这个应用程序忽略除了SOPNUMBE之外的所有东西,我觉得这是一个非常简单的问题,对我来说,它听起来像一个简单的if-then语句。但我在措辞上有困难。任何帮助都将不胜感激 public bool UpdateOrderToShi

我创建了一个简单的代码,用于检索数据库参数sopnumber,ordernumber 但是,有时员工会填写错误的订单,给我一个LIFTxxxx值,而不是sopnumber,它是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;
}

LAs在我的评论中指出,如果您不习惯用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;
   }
 }

对不起,你的问题很难理解。FTP站点和字母顺序与此代码有什么关系?您是否只想在此添加检查[order]参数的第一个字符的代码?是的,很抱歉,我在这方面还不太熟悉。添加代码来检查[order]参数的前几个字符正是我想要做的。为什么用户第一次输入数据时,您不验证数据?如果订单号无效,则不应调用将订单号写入数据库的方法。因此,在英语中,如果前三个字符是ORD,则执行此操作,否则执行[??]如果不是这样,则应执行什么操作?如果您不习惯使用If语句,那么您可能不应该使用此代码。你很可能会破坏其他东西。如果前三个字符是ORD,则存储数据,如果不是,则忽略。据我所知,此代码没有在其他任何地方引用。谢谢你的帮助,我将继续试验。如果订单字符串为空,则可能引发NullReferenceException。编写if语句的另一种方法是if String.CompareOrdinalorder,0,ORD,0,3==0&&order.Length>3。这防止了异常,因为只有在前三个顺序字母为“ORD”时才会访问Length属性。@Joshua@Jamie F,如果我想说除LIFT之外的所有字母而不是仅为ORD,那么它会是String吗?CompareOrdinalorder,0,LIFT,0,4!=0?是的。这将符合你所描述的。请记住,这些比较区分大小写。在这种情况下,提升或提升将被处理。@JamieF-似乎OP明确回答了您关于您是否应该帮助他/她的问题:显然,您不应该这样做。哦,好吧,活到老学到老。