我正在尝试执行一个简单的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();
有什么建议吗?
答案 0 :(得分:1)
首先你必须创建连接字符串并从string.Format(string,params [])查询帮助,这将是最清楚的方式来看你在做什么。
设置一个断点:command.Connection=conn;
然后指向命令并找到属性commandText以查看你的sql命令副本并尝试直接运行命令你的dbms(sql server managment,我可以看到,dbvisualizer,mysql工作台或您使用的任何其他工具)
这里有一些表名规则: 在SQL Server 2012中,对象名称最长可达128个字符。
非引用标识符名称必须遵循以下规则:
我认为你可能会遗漏一些引号或双引号,尝试直接向db进行查询,然后用作模型以c#代码进行查询。