[英]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.