Несколько вещей, которые вы обязательно должны начать использовать:
- использовать параметризованные запросы для вставки значений в ваши таблицы
- используйте определенный список столбцов в вашем операторе INSERT - в противном случае при следующем изменении таблицы ваш INSERT завершится с ошибкой
То, как вы делаете это сегодня, хрупко / хрупко и ломается при изменении таблицы, плюс объединение вместе вашей команды SQL - отличная возможность для атак с использованием SQL-инъекций. Только не делай так!
Итак, ваш первый метод должен выглядеть примерно так:
private void button1_Click(object sender, EventArgs e)
{
setData();
string query = "INSERT INTO dbo.xmlTB(ID, Name) VALUES(@ID, @Name)";
int flag = db.InsertData(query, ...(somehow pass in the parameters!.....);
......
}
Во-вторых, ваш второй метод должен
- использует конструкции
using(....) { ... }
для защиты и утилизации ваших SqlConnection
и SqlCommand
экземпляров объектов
- извлекайте XML из базы данных, используйте простой запрос SELECT и вызывайте
ExecuteReader
или ExecuteScalar
для вашего SqlCommand
объекта.
Примерно так:
public string ReadXmlData(int ID)
{
string query = "SELECT XmlContent FROM dbo.xmlTB WHERE ID = @ID";
string connectionString = "Data Source=SERVER1\\SQLEXPRESS;Initial Catalog=xml;Integrated Security=True;Pooling=False";
using(SqlConnection conn = new SqlConnection(connectionString))
using(SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.Parameters["@ID"].Value = ID;
conn.Open();
string xmlContents = cmd.ExecuteScalar().ToString();
conn.Close();
return xmlContents;
}
catch (Exception)
{
return flag;
}
}