2016-07-28 101 views
-1

我是C#的新手,需要創建一個小表單應用程序,它有兩個文本框,一個請求[File_ID],然後當按鈕是按下將該號碼發送到查詢,並在另一個文本框中顯示輸出。C#按鈕,將文本從一個文本框添加到另一個基於SQL查詢的文本框

我一直在玩弄它,並有類似的東西。但它不起作用。我不確定我是否應該走另一個方向。我將衷心感謝您的幫助。

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(); 

     } 


    } 
} 

回答

0

您的SQL查詢語法錯誤,它應該在下面。你有一個額外的,TOP 1後..刪除

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

再在你的按鈕點擊你剛剛創建的命令cmd = new SqlCommand(str, con);但從來沒有執行它。並關閉連接。

textBox2_TextChanged事件處理程序中,您試圖執行查詢但連接已經消失。我認爲您應該考慮閱讀關於ADO.NET的時間了。

+0

謝謝。我將只需要C#作爲一種工具,以表格格式輸出我的SQL數據。我將如何執行cmd = new SqlCommand(str,con);我需要添加任何東西到文本框1? –

0

這應該可以做到。一對夫婦的注意事項:

  1. 因爲按鈕被執行你的SQL和填充第二個文本框,沒有必要爲textbox_changed事件

  2. 使用字符串連接到您的變量添加到您的SQL查詢是不好的做法,並使您的代碼易受Sql注入的影響。相反,參數化你的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(); 
        } 
    } 
    } 
    
相關問題