C#按钮,可以根据SQL查询将文本从一个文本框添加到另一个文本框中

时间:2016-07-28 21:06:27

标签: c# sql asp.net forms

我是C#的新手,需要创建一个小形式的应用程序,它有两个文本框,一个请求[File_ID],然后按下按钮时将该数字发送给查询,另一个文本框显示输出。

我一直在玩它,有类似的东西。但它没有用。我不确定我是否应该朝着不同的方向前进。我真的很感谢你的帮助。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace testing
{
    public partial class Form1 : Form
    {
        String str,dr;
        SqlConnection con = new SqlConnection("Data Source=USHOU2016\\USFi;Initial Catalog=HOU_2016_Project;Integrated Security=True");
        SqlCommand cmd;
        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            con.Open();
            str = "SELECT TOP 1,[Sender Name],[Subject]  from [OLE DB Destination] WHERE [CHAT #] ='" + textBox1.Text + "'";

           cmd = new SqlCommand(str, con);
           // dr = cmd.ExecuteReader();
           con.Close();

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            textBox1.Text = cmd.ExecuteScalar().ToString();

        }


    }
}

2 个答案:

答案 0 :(得分:0)

您的SQL查询语法错误,应该在下面。在,之后您还有TOP 1个删除

SELECT TOP 1 [Sender Name],[Subject]  from [OLE DB Destination] WHERE...

再次在按钮单击中,您只是创建命令cmd = new SqlCommand(str, con);但从不执行它。并关闭连接。

textBox2_TextChanged事件处理程序中,您尝试执行查询但连接已经消失。我想你应该考虑阅读有关ADO.NET的时间

答案 1 :(得分:0)

这应该可以解决问题。有几点需要注意:

  1. 因为按钮正在执行你的sql并填充第二个文本框,所以不需要textbox_changed事件

  2. 使用字符串连接将变量附加到sql查询是不好的做法,使您的代码容易受到Sql Injection的影响。而是参数化您的sql输入,如下面的代码所示。

    public partial class Form1 : Form
    {
    public Form1()
    {
        InitializeComponent();
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        string query = "SELECT TOP 1,[Sender Name],[Subject] "
                        + " from[OLE DB Destination] WHERE[CHAT #] = :chatId ";
        using (SqlConnection con = new SqlConnection("Data Source=USHOU2016\\USFi;Initial Catalog=HOU_2016_Project;Integrated Security=True"))
        {
            SqlCommand cmd = new SqlCommand(query, con);
            cmd.Parameters.AddWithValue("chatId", textBox1.Text); //use Sql parameters to protect yourself against Sql Injection!
            con.Open();
    
            SqlDataReader reader = cmd.ExecuteReader();
    
            if (reader.HasRows)
            {
                reader.Read();
                textBox2.Text = reader[0] + " " + reader[1]; //or however you want your output formatted 
            }
    
             reader.close();
        }
    }
    }