Есть две переменные типа string:
st="UPDATE КИ SET Дополнительная_информация = 'One', График_интеграл = 2, Размер_пикселя = 3 WHERE Дополнительная_информация IS NULL;"
st2="testovaia zapis, 23, 57";
Строка st будет оставаться неизменной, а три параметра строки st2 будут меняться. Мне необходимо заменить слово One на testovaia zapis, 2 на 23 и соответственно 3 на 57 (или на любые другие слова и числа, которые будут на данный момент записаны в переменную). Предполагаю, что можно решить проблему так:
string d = "";
string f = "";
string h = "";
st.Replace("one", d);
st.Replace("2", f);
st.Replace("3", h);
Но как сделать так, чтобы значения из строки st2 записывались в переменные? Заранее спасибо.
Изменил код, взяв за основу ответы ниже:
string st2= textBox3.Text;
OleDbCommand st = new OleDbCommand("UPDATE КИ SET Дополнительная_информация = @DopInf, График_интеграл = @GrafikIntegral, Размер_пикселя = @RazmerPikselja WHERE Дополнительная_информация IS NULL;");
st.Parameters.AddWithValue("@DopInf", st2.Split(",")[0].Trim());
st.Parameters.AddWithValue("@GrafikIntegral", st2.Split(",")[1].Trim());
st.Parameters.AddWithValue("@RazmerPikselja ", st2.Split(",")[2].Trim());
st.ExecuteNonQuery();
Легче и правилнее будет с параметризированным запросом:
SqlCommand st= new SqlCommand("UPDATE КИ SET Дополнительная_информация = @DopInf, График_интеграл = @GrafikIntegral, Размер_пикселя = @RazmerPikselja WHERE Дополнительная_информация IS NULL;");
st.Parameters.AddWithValue("@DopInf", st2.Split(',')[0].Trim());
st.Parameters.AddWithValue("@GrafikIntegral", st2.Split(',')[1].Trim());
st.Parameters.AddWithValue("@RazmerPikselja ", st2.Split(',')[2].Trim());
Если вы можете изменять st, тогда запишите её как
st="UPDATE КИ SET Дополнительная_информация = '{1}', График_интеграл = {1}, Размер_пикселя = {1} WHERE Дополнительная_информация IS NULL;"
и сможете использовать string.Format.
Чтобы разбить st2 на параметры, используйте string.Split():
var parameters = st2.Split(',');
Не забудьте вызвать Trim() для всех полученных значений, чтобы удалить пробелы.
Точно также поступите с st:
var queryFormats = st.Split(',');
Теперь у вас две переменные: одна содержит массив форматов, другая массив параметров для них. Дальше просто сливаем их в одну строку
var rez = string.Empty;
for(int i=0;i<queryFormats.Count;i++)
{
rez += string.Format(queryFormats[i], parameters[i]);
}
Не забудьте проверять оба массива на длину - она должна быть одинакова, иначе не сойдётся и вы получите либо незамененный формат, либо ArgumentOutOfRangeException.
Но лучше всего скомбинировать мой и соседний ответ и использовать параметры.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Для обычных объектов событие наведения на объект меняет его цвет, а для обычного текстового поля не работает
Каким образом можно определить, какой жесткий диск используется по умолчанию? То есть, например, тот, на котором установлена система?