Исходя из фона БД Access, использующего операторы выбора SQL, я обнаружил, что требуется проделать большую работу по загрузке данных в базу данных SQL Server и обновлению записей.Мое первоначальное понимание добавления записей в SQL Server потребовало оператора VERY LONG, который включал команду INSERT.Мне кажется, что это излишне сложно, и я должен верить, что с .NET сегодня это должно быть намного проще.
Я исследовал и рассмотрел несколько примеров кода для DataTable
, DataSet
, SqlCommand
, SqlAdapters
и т. Д. Ни одна из них не работает для меня, несмотря на то, что в моем коде нет ошибок.Я прошел через множество мутаций в этих примерах, и обращаюсь к Stack Overflow за помощью.
Вот что я пытаюсь сделать.
- Подключение к SQL Serverразмещен снаружи (работает!)
- Откройте одну таблицу с именем
Dongles
. - Проверьте строку, используя серийный номер в качестве критерия.
- Если он существует, ОБНОВИТЬзапись.
- Если нет, то ДОБАВЬТЕ новую запись.
Я предоставляю последнюю мутацию образцов кода, с которыми я работал.Перед запуском кода я вручную добавил 1 запись в базу данных, чтобы узнать, совпадает ли аргумент SerialNumber.К сожалению, оператор if (dt.Rows.Count > 0)
возвращает false, и обновление никогда не предпринимается.
Теперь я расскажу вам об этом ... Я пробовал другие мутации, которые успешно прошли через строки, которые обновляют каждое поле.Но когда функция Update () была вызвана (успешно), в действительную базу данных ничего не было передано.
Вот код:
SqlCommand cmd = new SqlCommand("SELECT * FROM Dongles WHERE SerialNumber = " + m_dongle.SerialNumber, server.SQLConnection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
dt.Rows[0]["IsLeased"] = m_dongle.IsLeased == true ? 1 : 0;
dt.Rows[0]["LeaseDaysRemaining"] = m_dongle.LeaseDaysRemaining;
dt.Rows[0]["DateAssigned"] = DateTime.Now;
dt.Rows[0]["ConfiguredBy"] = m_dongle.ConfiguredBy;
dt.Rows[0]["LicenseHolder"] = m_dongle.LicenseHolder;
dt.Rows[0]["ContactName"] = m_dongle.ContactName;
dt.Rows[0]["ContactPhone"] = m_dongle.ContactPhone;
dt.Rows[0]["ContactEmail"] = m_dongle.ContactEmail;
dt.Rows[0]["SerialNumber"] = m_dongle.SerialNumber;
dt.Rows[0]["IsNetworkDongle"] = m_dongle.IsNetworkDongle;
dt.Rows[0]["NetworkMaxUsers"] = m_dongle.NetworkMaxUsers;
dt.Rows[0]["NetworkAbsoluteMaxUsers"] = m_dongle.NetworkAbsoluteMaxUsers;
dt.Rows[0]["IsAssigned"] = m_dongle.IsAssigned;
dt.Rows[0]["DongleModel"] = m_dongle.DongleModel;
dt.Rows[0]["SalesforceID"] = m_dongle.SalesforceID;
da.Update(dt);
MessageBox.Show("Dongle profile updated successfully.", "Profile Saved",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}