我正在尝试将用户添加到两个不同的表中,从SQL Server Management Studio Express运行,仅为一个会话添加详细信息,请人们帮助解答如何在数据库中将此数据设置为最后会议(我为糟糕的代码道歉,我目前只是一名学徒软件工程师)
namespace AddingANewUser
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void AddNewUser(String employeeID, String firstName, String lastName, String username, String password, String managerID, String accessLevelID, String phoneNumber, String departmentID)
{
using (var connection = new SqlConnection(Properties.Settings.Default.CitySecretHRSystemConnectionString))
{
connection.Open();
using (var updateEmployees = connection.CreateCommand())
{
updateEmployees.CommandText = "INSERT INTO Employees (EmployeeID, FirstName, LastName, PhoneNumber, AccessLevelID, ManagerID, DepartmentID) VALUES (@employeeID, @firstName, @lastName, @phoneNumber, @ accessLevelID, @managerID, @departmentID)";
updateEmployees.Parameters.AddWithValue("@firstName", firstName);
updateEmployees.Parameters.AddWithValue("@lastName", lastName);
updateEmployees.Parameters.AddWithValue("@employeeID", employeeID);
updateEmployees.Parameters.AddWithValue("@phoneNumber", phoneNumber);
updateEmployees.Parameters.AddWithValue("@accessLevelID", accessLevelID);
updateEmployees.Parameters.AddWithValue("@managerID", managerID);
updateEmployees.Parameters.AddWithValue("@departmentID", departmentID);
}
using (var updateLogIn = connection.CreateCommand())
{
updateLogIn.CommandText = "INSERT INTO LogInDetails (EmployeeID, Username, KeyWord) VALUES (@employeeID, @username, @keyWord)";
updateLogIn.Parameters.AddWithValue("@employeeID", employeeID);
updateLogIn.Parameters.AddWithValue("@username", username);
updateLogIn.Parameters.AddWithValue("@keyWord", password);
}
}
}
private void btnSubmit_Click(object sender, EventArgs e)
{
try
{
AddNewUser(tbEmployeeID.Text, tbFirstName.Text, tbLastName.Text, tbUsername.Text, tbPassword.Text, tbManagerID.Text, tbAccessLevel.Text, tbPhoneNumber.Text, tbDeptID.Text);
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我猜你错过了执行命令:
using (var updateEmployees = connection.CreateCommand())
{
//...
//...
updateEmployees.ExecuteNonQuery();
//...
}
Run Code Online (Sandbox Code Playgroud)
正如其他人正确指出的那样:
using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它也会导致对象本身超出范围.
在简单的话不需要调用 connection.Close()为using当您完成将照顾它,并关闭连接.