Я хотел бы предоставить интерфейс командной строки для моего db, который позволяет пользователю вводить команды или запросы MULTIPLE базы данных (разделенные разрывами строк в текстовом поле)
Для каждой строки, если ее запрос должен возвращать результаты, и если это его команда, была ли она успешной, что позволяет пользователю вставить script в текстовую область и нажать "GO", чтобы иметь пакет выполнен.
Я использую DataContext для взаимодействия с моей базой данных в приложении, но не имею CLUE, с чего начать. Любая помощь будет принята с благодарностью
Подумайте о проблемах безопасности, которые вы вводите на свой сайт.
Подумайте еще раз о безопасности. Как может умный пользователь (более умный, как вы/я) взломать базу данных, используя эту страницу.
Возможно, возможно, с использованием некорректного SQL, о котором вы не думаете на этом этапе.
Используйте прямую SqlConnection и SqlCommand, когда база данных, которую вы используете, является SQL-сервером. Используйте оракул или других партнеров-поставщиков, когда вам нужно их использовать. SqlCommand может возвращать больше как 1 результат, это удобно в случае нескольких команд в одном запросе. Дополнительную информацию см. В NextResult.
Как следует из предыдущего ответа, пожалуйста, не делайте этого, если это общедоступный сайт!
Если вы должны это сделать, следующий код близок к тому, что вам нужно - с небольшим изменением вы получите именно то, что хотите.
public static bool ExecuteSql(string sqlScript)
{
bool success = true;
using (SqlConnection cn = new SqlConnection([YourConnectionString]))
{
SqlCommand cmd = null;
try
{
cn.Open();
string[] commands = sqlScript.Split(new string[] { "GO\r\n", "GO ", "GO\t" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string c in commands)
{
cmd = new SqlCommand(c, cn);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
success = false;
throw new Exception("Failed to execute sql.", ex);
}
finally
{
cn.Close();
}
return success;
}
}