当前位置: 首页 > 面试题库 >

如何通过参数化存储过程填充列表框?

薛寒
2023-03-14
问题内容

我有一个Winforms应用程序和一个employeeListBox,departmentComboBox和一些文本框来显示员工信息,例如fNameTextbox,lNameTextBox
.....

我想通过departmentCombobox选定的值填充employeelistBox,并从employeeListBox中填充文本框。我具有用于选择部门员工的此存储过程

ALTER PROCEDURE [dbo].[selectEmployee] 
   @departID int
-- Add the parameters for the stored procedure here
AS
   -- SET NOCOUNT ON added to prevent extra result sets from
   -- interfering with SELECT statements.
   SET NOCOUNT ON;

   -- Insert statements for procedure here
   declare @ErrorCode int



   BEGIN TRANSACTION
      if ( @ErrorCode = 0 )
      Begin
        SELECT 
            EmpID, firstname, lastName, dateOfBirth, Gender, contactNumber, maritalStatus, 
            emailAddress, resentAddress, permanentAddress, nationality, bloodGroup, 
            qualification, Skills, Experience, joiiningdate, probation, departmentID, 
            Salary, paymentMode, active 
        FROM Employee
        WHERE departmentID = @departID

set @ErrorCode = @@error
      End

      if ( @ErrorCode = 0 )
     COMMIT TRANSACTION
      else
         ROLLBACK TRANSACTION

     return @ErrorCode

并填充列表框我写了这段代码

    private void selectEmployee(int departID)
    {
        string connString = BL.dbConn.ConnStr;
        DataSet ds = new System.Data.DataSet();
        SqlConnection conn = new SqlConnection(connString);
        conn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.CommandText = "dbo.selectEmployee";
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(ds);
        listBox1.DataSource = ds.Tables[0].DefaultView;
        listBox1.ValueMember = "EmpID";
        listBox1.DisplayMember = "firstname";
        cmd.Parameters.Clear();
        conn.Close();
        conn.Dispose();
    }

我不知道如何将DepartmentID传递给存储过程,然后又如何从列表框数据集中填充文本框?


问题答案:

为了传递部门编号,您需要创建sql参数,并需要使用sql命令进行附加操作才能为您完成工作

您在代码中忘记的事情是da.SelectCommand = cmd;指定选择命令

        SqlConnection conn = new SqlConnection(connString);

        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();
        try
        {
            conn.Open();
            cmd = new SqlCommand("dbo.selectEmployee", conn );
            cmd.Parameters.Add(new SqlParameter("@departID", value);
            cmd.CommandType = CommandType.StoredProcedure;
            da.SelectCommand = cmd;
            da.Fill(dt);
            dataGridView1.DataSource = dt;
        }
        catch (Exception x)
        {
            MessageBox.Show(x.GetBaseException().ToString(), "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
        }

在文本框中填充值,请问您能发布代码或示例您要做什么,而不是我可以进一步帮助您



 类似资料:
  • 问题内容: 我正在 MySQL 服务器上测试性能,并用超过2亿条记录填充表。存储过程生成大的SQL字符串非常慢。任何帮助或评论都非常欢迎。 系统信息: 数据库: MySQL 5.6.10 InnoDB数据库(测试)。 处理器: AMD Phenom II 1090T X6内核,每个内核3910Mhz。 内存: 16GB DDR3 1600Mhz CL8。 HD: SSD中的Windows 7 64

  • 问题内容: 不确定如何实现,但是我需要一种方法来获取存储过程的当前参数列表以及它们的传入值(此代码将在存储过程本身中执行)。 我知道我可以用来获取参数名称,但是如何获取实际值呢? 我需要做的是制作一个格式为char的字符串 我曾尝试使用动态sql,但对此并不太满意。 有任何想法吗?? 编辑: 目前,我只是一个接一个地遍历所有参数来构建字符串。但是,我想要一种“更好”的方法,因为有很多参数。并在以后

  • 我正在开发一个框架,其中我是一个使用动态创建的参数调用存储过程。我正在运行时构建参数集合。 当我将参数传递给存储过程时,会出现此问题,但存储过程不接受此类参数。 例如,我的存储过程是: 调用存储过程: 这会引发以下错误: 这在 Sybase ASE 中工作正常,它只是忽略任何其他参数。这可以通过MSSQL服务器2008实现吗?任何帮助,非常感谢。谢谢

  • 问题内容: 我通过用户给定的参数对存储过程进行排序时遇到问题,我尝试阅读,但是尝试过的解决方案不起作用。 那么,有人可以帮助我吗?我希望可以从Group_concat中按类型对它进行排序。如果我以Harcoded形式输入它(例如,ORDER BY Type1,ORDER BY Type2等),它将起作用。但是我想要这样的东西(ORDER BY @specificStat)。 问题答案: 改用这个:

  • 问题内容: 我一直在寻找如何从经典的asp调用存储过程并将参数传递给它的方法,这是我的存储过程,可以正常工作 和到目前为止的我的vbscript代码- 问题答案: 您正在寻找Parameters属性。 哦,劳迪,我又在写VBScript。

  • 问题内容: 我有带有输入步骤的Jenkins管道,我想通过脚本提交此输入(单字符串参数)。到目前为止,我正在尝试使用curl,理想情况下,我将通过Python请求库发送它。这应该是一个简单的POST请求,但是使用CSRF变得棘手。我已经获得Jenkins- Crumb(在这种情况下,使用curl是在同一台机器和同一bash会话上进行的),但仍然无法发送内容… 我正在发送标头,就像在https://