如果表名称在组合框中,如何从表中选择数据

时间:2019-03-22 11:13:16

标签: c# .net vb.net

我正在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中完美运行,没有错误。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

如上所述,由于SQL注入,这是一个糟糕的设计,但这是您的答案:

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

答案 1 :(得分:0)

尽管通常情况下,您永远不会串联字符串来构建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;
    }

答案 2 :(得分:-2)

我使用这样的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";";