vaibhav1800 Ответов: 1

Проверьте номер мобильного телефона в базе данных убедившись что он не существует в другой базе данных


Suppose I have four databases in my project and I would like to validate a Mobile number but i want to check that that mobile number is also not present in the remaining three databases.

How to do that ?


Что я уже пробовал:

Попробовал Гуглайн, но не получил много информации.

Sinisa Hajnal

Подключайтесь к каждому по очереди и проверяйте. Если вам нужна скорость, создайте пятую "общую" базу данных, которая будет синхронизировать и индексировать данные, которые вам нужно проверить (мобильные номера), и проверять только эту. Изначально больше настроек, но гораздо быстрее, чем при использовании четырех соединений.

1 Ответов

Рейтинг:
0

MadMyche

Создайте хранимую процедуру с 2 параметрами (input PhoneNumber, output Exists), содержащую запрос объединения для всех 4 таблиц. Затем в C# вы можете вызвать эту хранимую процедуру с этими 2 параметрами и выяснить, существует ли она или нет.

Хранимая процедура SQL

CREATE PROCEDURE dbo.usp_PhoneNumberCheck (
	@PhoneNumber	NVARCHAR(100),
	@Exists		BIT	OUTPUT	= 1
) 
AS
BEGIN
	; WITH cte AS (
		SELECT PhoneNumber FROM DatabaseName1.SchemaName.TableName
		UNION
		SELECT PhoneNumber FROM DatabaseName2.SchemaName.TableName
		UNION
		SELECT PhoneNumber FROM DatabaseName3.SchemaName.TableName
		UNION
		SELECT PhoneNumber FROM DatabaseName4.SchemaName.TableName
	)

	IF NOT EXISTS ( SELECT 1 FROM cte WHERE PhoneNumber = @PhoneNumber) BEGIN
		SET @Exists = 0
	END
END
GO


Кишки метода C#
string PhoneNumber = "9115551212"; // placeholder
bool NumberExists = true;

using (SqlConnection conn = new SqlConnection("ConnectionString")) {
	SqlCommand cmd = new SqlCommand("dbo.usp_PhoneNumberCheck", conn);
	cmd.CommandType = CommandType.StoredProcedure;

	SqlParameter outputExists = new SqlParameter("@Exists", SqlDbType.Bit) {Direction = ParameterDirection.Output};

	cmd.Parameters.AddWithValue("@PhoneNumber", PhoneNumber);
	cmd.Parameters.Add(outputExists);

	conn.Open();
	cmd.ExecuteNonQuery();

	NumberExists = outputExists.value;

	conn.Close();
}


Dave Kreskowiak

Это не 4 разных таблицы, которые проверяет ОП. Это четыре разных таблицы в четырех разных базах данных.

MadMyche

Я обновил решение, чтобы ссылаться на таблицы как синтаксис db.schema.table