2014-02-10 2 views
0

У меня есть две таблицы, которые являются таблицей назначения и медицинским центром, которые имеют отношения друг с другом с использованием mcID. Сейчас моя форма назначения, я использую внешнее соединение для отображения mcCentre в таблице medicalcentre вместо mcID в gridview. U в моей форме, весь медицинский центр (mcCentre) отображается в gridview. Но я хочу, чтобы Хьюан и Лянгская семейная клиника показывали, как я хочу, чтобы текст соответствовал тексту в текстовом поле, которое является семейной кликой Хван и Лян. Это означает, что независимо от того, какой текст в больнице находится в текстовом поле, я хочу, чтобы запись в больнице появлялась в gridview. имя текстового поля - txtCentre.Как отображать записи, сопоставляя текст в текстовом поле?

enter image description here

enter image description here

private void LoadAppointmentRecords() 
{ 

    //retrieve connection information info from App.config 
    string strConnectionString = ConfigurationManager.ConnectionStrings["SACPConnection"].ConnectionString; 
    //STEP 1: Create connection 
    SqlConnection myConnect = new SqlConnection(strConnectionString); 
    //STEP 2: Create command 
    //string strCommandText = "SELECT appointmentID, convert(varchar, aDate, 103) AS aDate, aTime, aStatus, aContact, aHeight, aWeight, patientID, mcID, nurseID FROM APPOINTMENT"; 

    string strCommandText = "SELECT appointmentID, convert(varchar, aDate, 103) AS aDate, aTime, aStatus, aContact, aHeight, aWeight, pat.pFirstName, pat.pLastName, cen.mcCentre, nur.nUsername FROM APPOINTMENT AS app"; 
    strCommandText += " LEFT OUTER JOIN PATIENT as pat on app.patientid = pat.patientid"; 
    strCommandText += " LEFT OUTER JOIN MEDICALCENTRE as cen on app.mcid = cen.mcid"; 
    strCommandText += " LEFT OUTER JOIN NURSE as nur on app.nurseid = nur.nurseid"; 
    //strCommandText += " LEFT OUTER JOIN NURSE as nur on app.nurseid = nur.nurseid"; 

    AppointmentAdapter = new SqlDataAdapter(strCommandText, myConnect); 

    //command builder generates Select, update, delete and insert SQL 
    // statements for MedicalCentreAdapter 
    //SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(AppointmentAdapter); 
    // Empty Employee Table first 
    Appointment.Clear(); 
    // Fill Employee Table with data retrieved by data adapter 
    // using SELECT statement 
    AppointmentAdapter.Fill(Appointment); 

    // if there are records, bind to Grid view & display 
    if (Appointment.Rows.Count > 0) 
     grdApp.DataSource = Appointment; 
} 

ответ

1

Добавьте этот код в строку ... Это будет соответствовать все, что в вашем txtCentre.Text, даже если текст еще не полностью набран, просто соответствие несколько символы или слова.

strCommandText += " WHERE mcCentre like '%" + txtCentre.Text.Replace("'", "''").Trim() + "%'"; 

Это возместит в txtCentre.Text точно ...

strCommandText += " WHERE mcCentre like '" + txtCentre.Text.Replace("'", "''").Trim() + "'"; 

Добавление .Привернуть ("'", "'") .trim() к тексту должен помочь вам избегайте инъекции SQL без использования параметров, но если вы хотите использовать параметры, вы можете следовать методу Джона Баркера :)

0

Помните, что вы подвергаете себя атакам SQL injection с помощью этого метода. Я бы рекомендовал использовать ORM, такую ​​как структура сущности. Если вы все еще хотите работать с прямым SQL как отправленный chris_techno25, тогда всегда используйте параметры, в отличие от прямого встраивания строки от пользователя, неанитированного.

http://www.dotnetperls.com/sqlparameter

Смежные вопросы