从 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 语句中?但我没有运气。
谢谢
您可以将静态类作为共享对象的常用位置。所有类都可以看到此类并使用其成员。
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;
}