我正在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中完美运行,没有错误。
有人可以帮忙吗?
答案 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";";