有人面临每周在 DB2 数据库上运行 SQL 查询的任务吗?也许有使用数据库本身来解决这个问题的方法?
目前,我唯一的想法是编写一个 bash 脚本并将其执行分配给 Cron 任务调度程序。操作系统 Red Hat Linux。
有人面临每周在 DB2 数据库上运行 SQL 查询的任务吗?也许有使用数据库本身来解决这个问题的方法?
目前,我唯一的想法是编写一个 bash 脚本并将其执行分配给 Cron 任务调度程序。操作系统 Red Hat Linux。
有这样的方法代码:
public bool CheckInputedLogin(string login)
{
string query = "SELECT * FROM Accounts WHERE login = @login";
try
{
command = DataBase.GetConnection().CreateCommand();
command.CommandText = query;
command.Parameters.AddWithValue("@login", login);
DataBase.OpenConnection();
reader = command.ExecuteReader();
return reader.HasRows; // gets a value indicating whether the reader contains one or more lines
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка:\n\"{ex.Message}\"\n" +
$"Обратитесь к системному администратору для её устранения.",
"Ошибка работы с базой данных", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
DataBase.CloseConnection();
return false;
}
重点是只有在最后返回 false 之前才关闭与数据库的连接。如何从 try 块关闭连接?您之前不能关闭它return reader.HasRows
,该方法将无法正常工作。然后就没有任何意义了。
创建了两个表:
人员表
CREATE TABLE Persons
(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Firstname TEXT,
Lastname TEXT,
Surname TEXT,
DateOfBirth TEXT
)
和员工表
CREATE TABLE Employees
(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
PersonId INTEGER NOT NULL,
PersonnelNumber INTEGER NOT NULL,
PostId INTEGER NOT NULL,
FOREIGN KEY (PersonId) REFERENCES Persons (Id) ON DELETE CASCADE
)
PersonId 列是指向 Persons 表中的 Id 列的外键。
有一个带有文本框的 WindowsForms 表单,需要将其中的数据填写到这两个表中。问题是我不知道如何通过人员中的 ID 填充人员和员工。在第一个表中,填写了字段 FirstName、Lastname、Surname 和 DateOfBirth。
public void CreateEmployee()
{
using (var connection = new SqliteConnection("Data Source=mainDb.db"))
{
connection.Open();
try
{
SqliteCommand command = new SqliteCommand();
command.Connection = connection;
command.CommandText = "INSERT INTO Persons (Firstname, Lastname, Surname, DateOfBirth) VALUES (@Firstname, @Lastname, @Surname, @DateOfBirth)";
command.Parameters.AddWithValue("@Firstname", createEmployeeFirstNameInputBox.Text);
command.Parameters.AddWithValue("@Lastname", createEmployeeLastNameInputBox.Text);
command.Parameters.AddWithValue("@Surname", createEmployeeSurNameInputBox.Text);
command.Parameters.AddWithValue("@DateOfBirth", createEmployeeDateOfBirthInputBox.Text);
command.ExecuteNonQuery();
MessageBox.Show("Сотрудник создан");
}
catch (Exception ex)
{
MessageBox.Show($"Не удалось создать сотрудника:\n\"{ex.Message}\"\n" +
$"Обратитесь к системному администратору для её устранения.",
"Нет соединения с Базой Данных", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
DataBase.CloseConnection();
}
}
在Employees 表中,必须使用表单中的数据填写PersonId、PersonnelNumber 和PostId 列。如何正确编写查询,以便使用关联的 ID 同时填充两个表?
通过单击#add-button
表格,应该会出现#to-do-list
一个带有卡片的块,其中包含来自input
和表格的数据。textarea
下次单击下面的按钮时,应该会出现一个新块,依此类推。该块只出现一次。再次填写表格时,不会出现新块,第一个创建的数据块中的数据只是更改。如何实现新块的出现?
document.querySelector('form').addEventListener('submit', (e) => e.preventDefault()); // Чтобы страница не перезгружалась в Code Snippet-е
$(function() {
let tmp = `<div class="case">
<div class="case-title">
<span></span>
<div class="clear-button"></div></div>
<div class="case-body"></div>
</div>`; // вид карточки
$('#add-button').on('click', function() {
let h_val = $('#name-field-input').val().trim(), // значение поля из input
d_val = $('#description-field').val().trim(); // тоже самое из textarea
if (h_val.length > 0 && d_val.length > 0) {
tmp = $(tmp);
tmp.find('.case-title > span').text(h_val); // вставим в карточку заголовок
tmp.find('.case-body').text(d_val); // тоже самое с описанием
$('.fixed-container #to-do-list').append(tmp); // далее добавляем новую карточку
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div class="fixed-container">
<div id="to-do-list">
<div class="heading">Список дел:</div>
<div class="case">
<div class="case-title">
<span>Новое дело 1 </span>
<div class="clear-button"></div>
</div>
<div class="case-body">Пример описания</div>
</div>
<div class="case">
<div class="case-title">
<span>Новое дело 2</span>
<div class="clear-button"></div>
</div>
<div class="case-body">Пример описания</div>
</div>
</div>
<div id="new-case">
<div class="heading">Добавить новое дело</div>
<div class="case">
<form method="post">
<label for="name-field">* Название</label>
<input required="required" id="name-field-input" type="text" name="name-field">
<label for="description-field">* Описание</label>
<textarea required="required" id="description-field" name="description-field"></textarea>
<button id="add-button">Добавить дело</button>
</form>
</div>
</div>
</div>