2

我是 C# 的新手..

我有写功能来过滤部门。这个函数将返回idDepartment

新问题是,部门保持价值“ System.Windows.Forms.Label,Text:ADMIN ”,这就是我得到零的原因。那么我怎样才能只接受“ADMIN”并留在部门?

更新 :

    public partial class frmEditStaff : Form
{

    private string connString;
    private string userId, department;  //Department parameter coming from here
    private string conString = "Datasource";


    public frmEditStaff(string strUserID, string strPosition)
    {
        InitializeComponent();

        //Pass value from frmListStaff to userID text box

        tbStaffId.Text = strUserID.ToString();
        userId = strUserID.ToString();
        department = strPosition.ToString();


    }

下面的代码正在运行,没有任何问题。

public int lookUpDepart()
        {
            int idDepart=0;

            using (SqlConnection openCon = new SqlConnection(conString))
            {
                string lookUpDepartmenId = "SELECT idDepartment FROM tbl_department WHERE department = '" + department + "';";
                openCon.Open();
                using (SqlCommand querylookUpDepartmenId = new SqlCommand(lookUpDepartmenId, openCon))
                {
                    SqlDataReader read = querylookUpDepartmenId.ExecuteReader();

                    while (read.Read())
                    {
                        idDepart = int.Parse(read[0].ToString());
                        break;
                    }
                }
                openCon.Close();
                return idDepart;
            }


        }

感谢帮助。快乐美好的一天!

4

3 回答 3

1

关于您的问题:部门保持价值“System.Windows.Forms.Label,Text:ADMIN”

您在本次通话中遇到问题 frmEditStaff(strUserID,yourLabel.ToString());

尽管您尚未共享对此函数/构造函数的调用,但似乎您的第二个参数在此调用中出错了。不要ToString()在这里使用。相反,您必须使用.Textas

frmEditStaff(strUserID,yourLabel.Text);

这将解决你的问题。我知道是因为通常程序员有犯这个错误的经验:)

于 2012-09-04T16:54:16.107 回答
0
public int lookUpDepart()
{
    int idDepart = 0;
    using (SqlConnection con = new SqlConnection(conString))
    {
        string lookUpDepartmenId = "SELECT idDepartment FROM tbl_department WHERE department = " + department;
        con.Open();
        using (SqlCommand querylookUpDepartmenId = new SqlCommand(lookUpDepartmenId, openCon))
        {
            SqlDataReader read = querylookUpDepartmenId.ExecuteReader();
            while (read.Read())
            {
                idDepart = Convert.ToInt32((read[0]).ToString());
                break;
            }
        }

        con.Close();

        return idDepart;
    }
}

试试上面的代码,我重写了。它对我有用...

于 2012-09-04T08:56:08.247 回答
0

从单行中选择单个值时,您可以使用ExecuteScalar方法,该方法为您完成所有操作,如下所示:

using (SqlCommand querylookUpDepartmenId = new SqlCommand(lookUpDepartmenId, openCon))
{
   idDepart = int.Parse(querylookUpDepartmenId.ExecuteScalar());
}

再一次,在 SQL 查询中使用字符串连接是完全错误的


对于您更新的问题:尝试使用标签的Text属性,而不是 .ToString() 方法。

我会推荐一本关于 C# / .net 的优秀教程书,并按照那里的示例进行操作。

于 2012-09-04T09:00:27.283 回答