Я хотел обновить значения нескольких столбцов таблицы базы данных, используя запросы или хранимую процедуру, но захотел использовать свою библиотеку C# для изменения значения.Могу ли я использовать хранимую процедуру SQLCLR для обновления столбца таблицы базы данных
Для ех, я хочу столбцы A, B, C таблицы Т должен быть заменен Encrypt(A)
, Encrypt(B)
и Encrypt(C)
, где Encrypt
является частью C# библиотеки.
Я мог бы сделать это в простом консольном приложении, но мне нужно сделать этот процесс для большого количества столбцов в множестве таблиц. Могу ли я использовать хранимую процедуру/запрос SQLCLR для выполнения этого процесса в SQL Server Management Studio?
Будет действительно здорово, если кто-то может помочь в этом.
public class SP
{
[Microsoft.SqlServer.Server.SqlFunction()]
public static void Enc()
{
using (SqlConnection connection = new SqlConnection("context connection=true"))
{
connection.Open();
SqlCommand command;
SqlCommand command1;
for (int i = 0; i < 1; i++)
{
command = new SqlCommand("SELECT " + tableFieldArray[i, 1].ToString() + " FROM " + tableFieldArray[i, 0].ToString(), connection);
SqlDataReader reader = command.ExecuteReader();
using (reader)
{
while (reader.Read())
{
if (!reader.IsDBNull(0) && !String.IsNullOrEmpty(reader.GetString(0)))
{
//SqlContext.Pipe.Send("Data = " + reader.GetString(0) + "; Encrypted = " + Encrypt(reader.GetString(0)));
SqlContext.Pipe.Send("UPDATE " + tableFieldArray[i, 0].ToString() + " SET "
+ tableFieldArray[i, 1].ToString() + " = '" + Encrypt(reader.GetString(0)) + "' "
+ "WHERE " + tableFieldArray[i, 1].ToString() + " = '" + reader.GetString(0) + "'");
//query = "UPDATE " + tableFieldArray[i, 0].ToString() + " SET "
// + tableFieldArray[i, 1].ToString() + " = '" + Encrypt(reader.GetString(0)) + "' "
// + "WHERE " + tableFieldArray[i, 1].ToString() + " = '" + reader.GetString(0) + "'";
command1 = new SqlCommand("UPDATE " + tableFieldArray[i, 0].ToString() + " SET "
+ tableFieldArray[i, 1].ToString() + " = '" + Encrypt(reader.GetString(0)) + "' "
+ "WHERE " + tableFieldArray[i, 1].ToString() + " = '" + reader.GetString(0) + "'",connection);
}
}
}
SqlCommand command1 = new SqlCommand(query , connection);
command1.ExecuteNonQuery();
}
connection.Close();
}
}
public static string Encrypt(string TextFromForm)
{
//implementation
}
}
}
** Точный дубликат ** из [Могу ли я использовать SQLCLR хранимую процедуру для обновления столбец таблица базы данных (с использованием некоторой скомпилированной dll)] (http://stackoverflow.com/questions/28502697/can-i-use-sqlclr-stored-procedure-to-update-a-column-of- a-database-table-using) - пожалуйста ** не ** продолжайте задавать один и тот же вопрос снова и снова! (другой был всего 40 минут назад ......) –
@marc_s, я новичок в стеке, не знаю, где закрыть предыдущий, мой предыдущий вопрос получил downvoted (без каких-либо объяснений) даже до того, как я смог собирать код и редактировать его. поэтому я разместил новое, думая, что предыдущий не будет рассмотрен. это было совершенно непреднамеренно. Требуется время для составления четкого вопроса: –
Shweta, это можно закрыть. Я уже отвечаю на другой, поэтому вам не нужно беспокоиться об этом. Я скопирую ответы на мои ответы на другой вопрос. –