C# 在C中向表中插入值#

C# 在C中向表中插入值#,c#,sql,relational-database,C#,Sql,Relational Database,我正在尝试将一个用户添加到两个不同的表中,从SQL Server Management Studio Express运行,仅为一个会话添加详细信息,请大家帮助回答我将如何在会话后将这些数据保留在数据库中(我为糟糕的代码道歉,我目前只是一名学徒软件工程师) 我猜你错过了命令: 正如其他人正确指出的那样,记住这一点: using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用时) 一旦调用Dispose,它还会导致对象本身超出范围 简单地说,不需要调用连接。Close()因为使用将

我正在尝试将一个用户添加到两个不同的表中,从SQL Server Management Studio Express运行,仅为一个会话添加详细信息,请大家帮助回答我将如何在会话后将这些数据保留在数据库中(我为糟糕的代码道歉,我目前只是一名学徒软件工程师)


我猜你错过了命令:

正如其他人正确指出的那样,记住这一点:

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


简单地说,不需要调用
连接。Close()
因为
使用
将处理它,并在完成后关闭连接。

您已经编写了
@phoneNumber、@accessLevelID、@managerID、
:在
@
accessLevel
之间没有空格。另外,一旦您调用
accessLevel
和其他时间
accessLevelID
,我认为accessLevel没有ID

您必须使用下面的代码

 using (var connection = new SqlConnection(Properties.Settings.Default.CitySecretHRSystemConnectionString))
    {
        if (connection.State == ConnectionState.Closed)
            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("@accessLevel", accessLevel);
            updateEmployees.Parameters.AddWithValue("@managerID", managerID);
            updateEmployees.Parameters.AddWithValue("@departmentID", departmentID);
            updateEmployees.ExecuteNonQuery();
        }


        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);
            updateLogIn.ExecuteNonQuery();
        }
    }

您已经使用块实现了
,因此无需关闭连接

我建议使用实体框架为什么要调用
连接。关闭
然后再次使用连接?这是什么?很抱歉,我缺乏相关知识,我对这样做很陌生。我称之为“关闭”是为了我自己的清晰,它只是让我更容易看到连接关闭的位置。您正在创建它们,而不是保存它们,然后再次调用“关闭”,即使您还有任务。我建议阅读msdn上的文档。这是一个可以帮助你的开始点-谢谢你的帮助,这是完美的:“SkyftE821,很高兴帮助,请考虑标记肯定改正,我可以,需要等待几分钟says@apomene那么
连接.Close()呢在第二次使用block之前?我注意到我自己也从等式中删除了它accessLevelID是我工作的公司提供的数据库的一部分(为了清楚起见,我相信是这样),谢谢你,但你将参数设置为
updateEmployees.Parameters.AddWithValue(@accessLevel),accessLevel)这是一个非空值字段,它出现的唯一原因是因为它必须用于数据库我对此没有问题,但为什么它与您在插入查询中给它的名称不同?我认为
updateLogIn
也应该有
ExecuteNonQuery
using (var updateEmployees = connection.CreateCommand())
{
    //...
    //... 
    updateEmployees.ExecuteNonQuery();
    //...
}
 using (var connection = new SqlConnection(Properties.Settings.Default.CitySecretHRSystemConnectionString))
    {
        if (connection.State == ConnectionState.Closed)
            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("@accessLevel", accessLevel);
            updateEmployees.Parameters.AddWithValue("@managerID", managerID);
            updateEmployees.Parameters.AddWithValue("@departmentID", departmentID);
            updateEmployees.ExecuteNonQuery();
        }


        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);
            updateLogIn.ExecuteNonQuery();
        }
    }