从 C# 下拉列表中查询 SQL 表

本文关键字:SQL 查询 下拉列表 | 更新日期: 2023-09-27 18:36:24

我在一个表单上有一个下拉列表,用于填充sql表中的拼图ID代码。当用户选择拼图代码说"拼图2"时,我希望下一个表单(play:Form)显示此拼图。目前我只能让它在页面上显示第一个谜题"拼图1"。

该数据库由谜题ID和谜题组成,前者是谜题类型,后者是谜题本身。

public partial class Play : Form
{
    public Play()
    {
        InitializeComponent();

        SqlConnection conn = new SqlConnection("Data Source=LAURA-PC;Initial Catalog=Sudoku;Integrated Security=True");
        conn.Open();
        SqlCommand command = conn.CreateCommand();
        command.CommandText = "Select puzzle from Puzzle";
        command.CommandType = CommandType.Text;

        SqlDataReader reader = command.ExecuteReader();
        if (reader.Read())
        {
            string[] tokens = ((string)reader[0]).Split(';');
            textBox1.Text = tokens[0];
            textBox2.Text = tokens[1];
            textBox3.Text = tokens[2];
            textBox4.Text = tokens[3];
            textBox5.Text = tokens[4];
            textBox6.Text = tokens[5];
            textBox7.Text = tokens[6];
            textBox8.Text = tokens[7];
            textBox9.Text = tokens[8];
            textBox10.Text = tokens[9];
            textBox11.Text = tokens[10];
            textBox12.Text = tokens[11];
            textBox13.Text = tokens[12];
            textBox14.Text = tokens[13];
            textBox15.Text = tokens[14];
            textBox16.Text = tokens[15];
        }
        conn.Close();
    }

我知道我需要从上一个表单的下拉列表中实现某种全局变量,然后尝试将该变量过滤到 Where 语句中?但我没有运气。

谢谢

从 C# 下拉列表中查询 SQL 表

您可以将静态类作为共享对象的常用位置。所有类都可以看到此类并使用其成员。

public static class CommonClass
{
   public static String puzzleCode ;
}

您也可以在第二个表单上有一个属性来接受拼图 ID。喜欢这个:

public class SecondForm : Form
{
   private String _puzzleId ;
   public String PuzzleId
   {
      get { return _puzzleId ; }
      set { _puzzleId = value ; }
   }
}

1. 将变量传递给表单。

Play frmPlay = new Play(puzzleId);
frmPlay.Show();
your Play class will be changed by this
public Play(int puzzleId)
{ 
 //Unchanged code
 command.CommandText = "Select puzzle from Puzzle where puzzleId = "+puzzleId;
 //Unchanged code
}

2. 通过委托传递数据

将委托签名添加到 form1,如下所示:

public delegate void delPassData(int puzzleId);
Play frmPlay= new Play ();
delPassData del=new delPassData(frmPlay.SetPuzzleId);
del( Convert.ToInt32(cmBxPuzzleId.SelectedValue));
frmPlay.Show();
**In Play form write this code**
private int m_PuzzleId;
public void SetPuzzleId(int puzzleId )
{
    m_PuzzleId = puzzuleId; 
}