检查数据库中是否存在字符串 ID NO?

时间:2021-04-01 22:01:00

标签: c#

如何检查字符串值 ID NO 是否存在于数据库中, 在我使用此代码检查数据库中是否存在整数值之前,如何更改相同的代码以检查字符串 ID 是否存在:

这是代码:

public int? GetPatientID(int Patient_id)
        {
            DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
            DataTable dt = new DataTable();
            SqlParameter[] Param = new SqlParameter[1];
            Param[0] = new SqlParameter("@Patient_id", SqlDbType.Int);
            Param[0].Value = Patient_id;
            dt = DAL.SelectData("GET_PATIENT_IDNO", Param);
            DAL.close();

            // if there is at least one row
            if (dt.Rows.Count > 0)
            {
                DataRow row = dt.Rows[0];
                int? patientIDNumber = row.Field<int>("Patient_id");
                return patientIDNumber;
            }

            // return null otherwise
            return null;
        }

这是存储过程:

create proc [dbo].[GET_PATIENT_IDNO]
@Patient_id varchar(50)
as 
select Patient_id from Patients
where Patient_id = @Patient_id

最后是验证码:

private void textIDNO_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (textIDNO.Text == null || textIDNO.Text == "0" )
                {
                    txtpcfileno.Focus();
                }
                else
                {
                    var patientIDNumber = order.GetPatientID(Convert.ToInt32(textIDNO.Text)); // int?
                    bool patientExists = patientIDNumber.HasValue;
                    if (patientExists == true)
                    {
                        MessageBox.Show("id no used before ", "ID exist", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
                
                           
            }
        }

请帮助如何更改代码以检查字符串值 id 是否存在我正在使用 c# 和 microsoft sql server ?

2 个答案:

答案 0 :(得分:1)

试试这个:

public bool IfPatientExists(string Patient_id)
        {
            
            DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
            var param=  new SqlParameter("@Patient_id", SqlDbType.VarChar,50);
            param.Value = Patient_id;
            var dt = DAL.SelectData("GET_PATIENT_IDNO", new SqlParameter[]{param});
            DAL.close();
             return  dt.Rows.Count > 0; 
        }

和 textIDNO_KeyDown 代码

var patientExists = order.IfPatientExists(textIDNO.Text); 
 if (patientExists)
{
...your code
}

答案 1 :(得分:0)

这种方式也有效:

public string GetPatientID(string Patient_id)
        {
            DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
            DataTable dt = new DataTable();
            SqlParameter[] Param = new SqlParameter[1];
            Param[0] = new SqlParameter("@Patient_id", SqlDbType.VarChar,50);
            Param[0].Value = Patient_id;
            dt = DAL.SelectData("GET_PATIENT_IDNO", Param);
            DAL.close();

            // if there is at least one row
            if (dt.Rows.Count > 0)
            {
                DataRow row = dt.Rows[0];
                string patientIDNumber = row.Field<string>("Patient_id");
                return patientIDNumber;
            }

            // return null otherwise
            return null;
        }

private void textIDNO_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (textIDNO.Text == null || textIDNO.Text == "0" )
                {
                    txtpcfileno.Focus();
                }
                else
                {
                    var patientIDNumber = order.GetPatientID(textIDNO.Text); 
                
                    if (patientIDNumber != null && !string.IsNullOrWhiteSpace(patientIDNumber))
                    {
                        MessageBox.Show("ID NO used before ", " EXIST ID ", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
                
         
                
            }
        }
相关问题