Как обновить базу данных с помощью вызова SQL, используя параметры (внешний ключ)? - PullRequest
0 голосов
/ 27 апреля 2020

Проблема с обновлением идентификатора внешнего ключа. Поэтому, когда этот SQL вызов инициирован, внешний ключ LocationID не обновляется, а атрибут Question обновляется. Есть ли какая-либо причина, почему это будет иметь место?

// Set strSQL to empty string.
String strSQL = "";

// Develop SQL call.
strSQL = "UPDATE Question ";
strSQL +=   "SET LocationID = @LocationID, Question = @Question ";
strSQL += "WHERE LocationID = @OldLocationID";

// Define the network connection to the SQL Server database.
SqlConnection objSqlConnection = new SqlConnection(WebConfigurationManager.ConnectionStrings["2020LJCDT"].ConnectionString);

// Set up the SQL command object
SqlCommand objSqlCommand = new SqlCommand();
objSqlCommand.Connection = objSqlConnection;
objSqlCommand.CommandType = CommandType.Text;
objSqlCommand.CommandText = strSQL;

// Define the input parameters
objSqlCommand.Parameters.AddWithValue("@LocationID", ddlLocation.SelectedValue);
objSqlCommand.Parameters.AddWithValue("@Question", txtQuestion.Text);
objSqlCommand.Parameters.AddWithValue("@OldLocationID", lblLocationID.Text);

// Open the connection
objSqlConnection.Open();

// Get number of rows affected. 
numberOfRecords = objSqlCommand.ExecuteNonQuery();

//Close the data reader and the connection.
objSqlConnection.Close();

1 Ответ

0 голосов
/ 28 апреля 2020

Проблема найдена. Пройдя каждый line of code при проверке базы данных, я обнаружил, что база данных перезаписывается Update Command. Вызов SQL действительно изменял базу данных на правильную LocationID, но затем Update Command менял ее обратно, когда ее метод вызывался в коде. Для решения этой проблемы Update Command необходимо go. К сожалению, мне пришлось оставить Update Command, чтобы сохранить сообщения об ошибках, которые были на месте. Чтобы это исправить, я просто сделал Update Command пустой строкой. Этой глупой ошибки можно было избежать, но я все еще учусь ASP. Net, поскольку я все еще начинающий. Возможно, все еще не очень хорошая идея иметь пустой код Update Command в коде, но я не выяснил, не вызовет ли это каких-либо проблем в будущем.

  <asp:SqlDataSource runat="server" ID="sdsListViewQuestion"
    ConnectionString="<%$ConnectionStrings:2020LJCDT %>"
    OldValuesParameterFormatString="original_{0}"
    InsertCommand="INSERT
                     INTO Question
                        (
                          LocationID,
                          Question
                        )
                   VALUES
                        (
                          @LocationID,
                          @Question
                        ) ;"
    UpdateCommand=";"
    DeleteCommand="DELETE
                     FROM Question
                    WHERE QuestionID = @original_QuestionID;">

</asp:SqlDataSource>
...