如何引用和引用SQL Server表和字段名称

时间:2010-05-11 18:51:01

标签: c# sql sql-server tsql

美好的一天!

尽管LINQ2SQL和ADO.NET实体框架存在,但有些情况需要恢复到普通的旧DataSet(非打字)和朋友。

为SqlCommand编写SQL时:

  • 是否需要使用[]?
  • 引用字段和表名称
  • 使用[dbo]
  • 为表名添加前缀是否合适?

我习惯使用这种语法:

SqlCommand command = new SqlCommand("SELECT [Field1], [Field2] FROM [dbo].[TableName]", connection);
可能有更好的方法吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

  

是否需要引用字段和表格   姓名带[]?

不,除非您有一个名为[foo bar]的表(带空格),或者您的列/表(和数据库名称偶数)以数字开头,或者包含非字母数字字符。

See MSDN

  

为表名添加前缀是否合适?   [DBO]

绝对是的。它允许计划重复使用,因为对象引用现在是合格的

答案 1 :(得分:1)

当您从数据库查询数据时,无需使用[]。

当存在别名的空间时使用[],如

SELECT Field1 as [First Name], Field2 as [Last Name] FROM [dbo].[TableName]

因为它给出了语法错误

dbo是表和用户附加的模式名称

这里有更详细的答案 数据库模式是一种逻辑分组对象(如表,视图,存储过程等)的方法。将模式视为对象的容器。

您可以为单个架构分配用户登录权限,以便用户只能访问他们有权访问的对象。

可以在数据库中创建和更改模式,并且可以授予用户对模式的访问权限。架构可以由任何用户拥有,架构所有权可以转让。

您还可以阅读完整文章:http://www.quackit.com/sql_server/sql_server_2008/tutorial/sql_server_database_schemas.cfm

答案 2 :(得分:0)

如果字段代表保留关键字或包含非法字符(例如“字段#1”),则只需引用字段。 “”(空格)和“#”字符通常都是非法的,因此您必须使用方括号引号。

至于架构名称,我建议不要编写它,好像有一天你要访问的表的架构名称不是dbo,你的代码可能会中断。