Вставка данных после проверки, если таблица пуста
У меня есть серверная программа, которая будет хранить определенные данные, отправленные клиентом. Одним из данных является имя хоста клиента. Сервер проверит, существует ли имя хоста, если нет, то он вставит эти новые данные. Это должно выглядеть так.
hostname_id | hostname
------------------------
1 | Admin
2 | Guest_PC
3 | Bob_PC2
Моя проблема заключается в том, что он не будет хранить вновь вставленные данные. Он продолжает возвращать ноль, но ничего не хранит. Вот мой код.(Отредактировано, чтобы исправить версию)
string constring = "Database=chtbuster;Data Source=localhost;User Id=root;Password=''";
string count1 = "SELECT COUNT(hostName) FROM chtbuster.hostnametable WHERE hostName=@machineName ";
using (MySqlConnection conDataBase = new MySqlConnection(constring))
{
MySqlCommand cmd1Database = new MySqlCommand(count1, conDataBase);
conDataBase.Open();
long count = (long)cmd1Database.ExecuteScalar();
if (count == 0)
{
string insert_ht = "INSERT INTO chtbuster.hostnametable(hostName) VALUES(@machineName);";
MySqlCommand cmd5Database = new MySqlCommand(insert_ht, conDataBase);
cmd5Database.Parameters.AddWithValue("@machineName", machineName);
cmd5Database.ExecuteNonQuery();
//*test* output.Text += "\n Empty " + count;
}
else
{
//not empty, insert other data
}
}
Я уже кодировал базу данных PHP и являюсь новичком в базе данных C#, я совершенно сбит с толку. Пожалуйста помоги. Спасибо.
1 ответ
Решение
Вы можете сделать это за один шаг с EXISTS:
IF NOT EXISTS (SELECT hostName FROM chtbuster.hostnametable WHERE hostName=@machineName)
INSERT INTO chtbuster.hostnametable(hostName_id) VALUES(@machineName);
Как уже упоминалось в комментариях, вам нужно выполнить запрос, чтобы получить результат.