Como adicionar entradas fornecidas pelo usuário a uma instrução SQ

Estou tentando criar uma instrução SQL usando dados fornecidos pelo usuário. Eu uso código semelhante a este em c #:

var sql = "INSERT INTO myTable (myField1, myField2) " +
          "VALUES ('" + someVariable + "', '" + someTextBox.Text + "');";

var cmd = new SqlCommand(sql, myDbConnection);
cmd.ExecuteNonQuery();

e isso em VB.NET

Dim sql = "INSERT INTO myTable (myField1, myField2) " &
          "VALUES ('" & someVariable & "', '" & someTextBox.Text & "');"

Dim cmd As New SqlCommand(sql, myDbConnection)
cmd.ExecuteNonQuery()

Contudo

isso falha quando a entrada do usuário contém aspas simples (por exemplo,O'Brien), Não consigo obter o formato correto ao inserir valores DateTime es pessoas continuam me dizendo que não devo fazer isso por causa da "injeção SQL"

Como faço "do jeito certo"?

questionAnswers(2)

yourAnswerToTheQuestion