C#SQL从[tablename]错误中选择

时间:2016-03-22 20:43:24

标签: c# sql sql-server visual-studio-2013 localdb

我正在尝试执行一个简单的SQL select语句,但是我尝试访问的SQL Server表可以有一个表名,其中包含第一个位置上的数字,空格,SQL关键字等。

如果我理解正确,在表名周围加上方括号应该允许我这样做,但它似乎没有用。

tr_projekt是一个字符串,其中包含我要访问的表的名称 - 例如,tr_projekt = "4test"我正在

  

4

附近的语法错误不正确

后跟System.NullReferenceException

对于常规表名称,例如tr_projekt = "test",它可以正常工作。

string type = "";
SqlConnection conn = new SqlConnection(connString);            
SqlCommand command = new SqlCommand("SELECT DisplayType FROM [" + tr_projekt + "]");
command.Connection = conn;                           
conn.Open();             
type = command.ExecuteScalar().ToString();
conn.close();

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

首先你必须创建连接字符串并从string.Format(string,params [])查询帮助,这将是最清楚的方式来看你在做什么。

设置一个断点:command.Connection=conn;然后指向命令并找到属性commandText以查看你的sql命令副本并尝试直接运行命令你的dbms(sql server managment,我可以看到,dbvisualizer,mysql工作台或您使用的任何其他工具)

这里有一些表名规则: 在SQL Server 2012中,对象名称最长可达128个字符。

非引用标识符名称必须遵循以下规则:

  • 第一个字符必须是字母数字,下划线(_),符号(@)或数字符号(#)。
  • 后续字符可以包含字母数字字符,下划线,at(@)符号,数字符号或美元符号。
  • 不允许使用嵌入空格或特殊字符。

我认为你可能会遗漏一些引号或双引号,尝试直接向db进行查询,然后用作模型以c#代码进行查询。