如何用c#列中的文本替换标签文本

时间:2013-03-14 14:27:25

标签: c# sql visual-studio-2010 select sql-server-ce

我正在尝试在Windows窗体文本框中输入studentID,我希望相应的标签将文本从label1更改为name列中的数据。我真的很困惑代码,因此以下。

  private void button1_Click(object sender, EventArgs e)
                {


                    SqlCeConnection conn = new SqlCeConnection(@"Data Source=|datadirectory|databse.sdf");
                    conn.Open();
                    SqlCeCommand cmdSelect = conn.CreateCommand();
                    cmdSelect.CommandText = "SELECT * FROM StudentDetails WHERE StudentID = studentIDTextBox.Text";

                    SqlCeDataReader sr = cmdSelect.ExecuteReader();
                    DataSet sd = new DataSet();



                }
                  /* using (SqlCeDataAdapter dataAdapter = new SqlCeDataAdapter("SELECT * FROM StudentDetails WHERE StudentID = '" + studentIDTextBox.Text.ToString() + "'", conn)
                    {

                        // create the DataSet 
                        DataSet ITIADataSet = new DataSet();
                        // fill the DataSet using our DataAdapter 
                        dataAdapter.Fill();


        }
    }
    */

4 个答案:

答案 0 :(得分:1)

所以,第一件事是第一件事 - 你的SQL代码找不到任何东西,因为它寻找字符串“studentIDTextBox.Text”

你想要“+ studentIDTextBox.Text

其次,直接将字符串放入SQL代码是一种让自己对SQL注入攻击开放的好方法。

否则,你几乎就在那里。

我会选择这样的事情:

string studentName = string.Empty;
    while (sr.Read())
    {
     studentName = sr["StudentName"].toString();

    }

lblMyLabel.Text = studentName;

当然,当你没有返回任何数据时,你需要处理。

不要忘记在完成连接后关闭连接。

答案 1 :(得分:1)

您不能在此类查询中使用studentIDTextBox.Text。它将被视为文本。最好的方法是使用参数化查询

cmdSelect.CommandText = "SELECT * FROM StudentDetails WHERE StudentID = @StudentID";
cmdSelect.Parameters.AddWithValue("@StudentID",studentIDTextBox.Text);
or
cmdSelect.Parameters.Add(new SqlCeParameter("@StudentID",SqlDbType.{YourColumnDataType}){Value = studentIDTextBox.Text}

或快速修复

cmdSelect.CommandText = String.Format("SELECT * FROM StudentDetails WHERE StudentID = {0}",studentIDTextBox.Text);

请注意,上面容易受到SQL注入攻击

答案 2 :(得分:0)

你不能这样做:

cmdSelect.CommandText = "SELECT * FROM StudentDetails WHERE StudentID = studentIDTextBox.Text";

因为这不会带来价值。你想要这样的东西。

cmdSelect.CommandText = "SELECT * FROM StudentDetails WHERE StudentID = " + studentIDTextBox.Text;

答案 3 :(得分:0)

SqlCeConnection conn = new SqlCeConnection(@"Data Source=|datadirectory|databse.sdf");
            conn.Open();
            SqlCeDataAdapter da = new SqlCeDataAdapter("select MyDesiredValue from StudentDetails where StudentID = " + studentIDTextBox.Text + "", conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            label1.Text = dt.Rows[0][0].ToString();