簡體   English   中英

如果表名稱在組合框中,如何從表中選擇數據

[英]how to select data from table if table names are in Combo box

我當時在VB.NET上工作,現在正在切換到C#。 我使用以下代碼將表用作組合框中的變量來填充DataGrid:

Dim strTAB as a String

dtTAB1 = New DataTable  
strTAB = cboDTA_TBL.Text 

adpPRJ = New SqlDataAdapter("Select * from """ & strTAB & """", conPRJ_NET)

'conPRJ_NET is connection to connect MsSQL Database on server.

adpPRJ.Fill(dtTAB1)

dgFIN_TAB.DataSource = dtTAB1 

我正在尋找等效於""" & strTAB & """的C#。

這段代碼在vb.net上運行完美,沒有錯誤。

有人可以幫忙嗎?

如前所述,由於SQL注入,這是一個糟糕的設計,但這是您的答案:

var strTAB = "tableName";
string myString = $"Select * from {strTAB}";

盡管通常情況下,您永遠不會串聯字符串來構建Sql語句,但是如果將組合框DropDownStyle設置為DropDownList ,則無需擔心Sql Injection。 這本質上是“列表限制”,但不是默認設置。

using語句可確保關閉並處置您的數據庫對象。

我不確定表名周圍的雙引號應該做什么,但是在Sql Server中,標識符定界符是方括號。 ([])

    private void button1_Click(object sender, EventArgs e)
    {
        string query = "Select * From [" + cboDTA_TBL.Text + "];";
        DataTable dtTAB1 = new DataTable();
        using (SqlConnection conPRJ_NET = new SqlConnection("Your connection string"))
        {
            using (SqlDataAdapter adpPRJ = new SqlDataAdapter(query, conPRJ_NET))
            {
                adpPRJ.Fill(dtTAB1);
            }
        }
        dgFIN_TAB.DataSource = dtTAB1;
    }

我使用這樣的MySQL命令:

string db_name= "test";
string db_table = "table";
command.CommandText = "SELECT * FROM " + db_name+ "." + db_table + " WHERE ID = "ID";";
// sometimes you need the: ' around the string-variables
command.CommandText = "SELECT * FROM '" + db_name+ "." + db_table + "' WHERE ID = "ID";";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM