在C#中将值插入表中

2 c# sql relational-database

我正在尝试将用户添加到两个不同的表中,从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)

apo*_*ene 5

我猜你错过了执行命令:

using (var updateEmployees = connection.CreateCommand())
{
    //...
    //... 
    updateEmployees.ExecuteNonQuery();
    //...
}
Run Code Online (Sandbox Code Playgroud)

正如其他人正确指出的那样:

using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它也会导致对象本身超出范围.

在简单的话不需要调用 connection.Close()using当您完成将照顾它,并关闭连接.

  • @ swiftie821,很高兴帮忙,请考虑标记为正确 (2认同)
  • @apomene在第二次使用块之前``connection.Close();`怎么样? (2认同)