У меня есть база данных SQL Server с таблицами с таблицами. Мой ввод - это номер IMEI, который я должен хранить в таблице, только если этот номер IMEI не сохраняется во всех таблицах. мой код:Поиск дубликата числа в парах таблиц SQL Server в C#
public int Find_IMEI(string IMEI_NUM)
{
IMEI_lab.Text = IMEI_NUM.ToString();
int dflag = 0;
object result;
SqlConnection sqlConn = new SqlConnection(@"Data Source=\SQLEXPRESS;Initial Catalog=manager_db;Integrated Security=True;Pooling=False");
sqlConn.Open();
int test = 0;
for(int kk = 0; kk < comboBox2.Items.Count; kk++)
{
string data_sql = string.Format("IF EXISTS(SELECT 1 FROM {0} WHERE IMEI={1}) SELECT 1 AS FOUND ELSE SELECT 0 AS FOUND", data[kk], IMEI_NUM);
SqlCommand da = new SqlCommand(data_sql, sqlConn);
result = da.ExecuteScalar(); // ExecuteScalar fails on null
if (result.GetType() == typeof(DBNull)) // checking IMEI number in all Tables(orders)
{
dflag = 0;
test = test + dflag;
}
else
{
dflag = (int)result; //(Int32)da.ExecuteScalar();
test = test + dflag;
}
}
sqlConn.Close();
return test;
}
Этот код работает отлично, возвращает количество найденных дубликатов номеров IMEI во всех таблицах. Но я хочу знать, если SQL имеет запрос, сделать работу более оптимизируют образом или без петель
определение таблицы:
id | IMEI | Serial | date
----------------------------------------
1 3548690... 0001 15/2/15
2 3548690... 0002 15/2/15
данные PS [кк] - массив с именами таблиц
Таблица пожалуйста! И с образцами данных и желаемым результатом это еще лучше! – jarlh
с тегом mysql, но вы работаете с SqlConnection, тогда это должен быть Sql Server. – Steve