如何在VB.NET中编写可读的SQL

如何在VB.NET中编写可读的SQL,sql,vb.net,readability,Sql,Vb.net,Readability,在VB.NET中编写Sql时,由于VB缺少多行字符串,常常会导致一些不可读的结果 例如: Dim sql As String = "SELECT t1.Name, t1.Description, t1.Address, t1.PhoneNumber, t2.RegistrationID, t2.Date, t2.Description, t2.RegistrationStatus FROM Users t1 JOIN Registrations t2 ON t1.UserID = t2.User

在VB.NET中编写Sql时,由于VB缺少多行字符串,常常会导致一些不可读的结果

例如:

Dim sql As String = "SELECT t1.Name, t1.Description, t1.Address, t1.PhoneNumber, t2.RegistrationID, t2.Date, t2.Description, t2.RegistrationStatus FROM Users t1 JOIN Registrations t2 ON t1.UserID = t2.UserID WHERE t2.RegistrationID = @RegistrationID"
您可以使用行连续字符来拆分字符串,但是额外的引号和行连续字符使其更难读取。这也使得在代码和SSM之间传输查询变得困难


是否有一种解决方案可以使SQL在VB中可读,并允许通过VB代码和SSM或任何其他SQL编辑器/IDE之间的复制/粘贴轻松传输查询?

我找到的最佳解决方案是使用自VS 2008以来提供的VB功能。 XML文本属性允许多行字符串

Dim sql As String =
    <sql text="
        SELECT t1.Name, 
               t1.Description, 
               t1.Address, 
               t1.PhoneNumber, 
               t2.RegistrationID, 
               t2.Date, 
               t2.Description, 
               t2.RegistrationStatus 
        FROM   Users t1 
               JOIN Registrations t2 ON t1.UserID = t2.UserID 
        WHERE   t2.RegistrationID = @RegistrationID
    " />.Attribute("text").Value
需要注意的一点是,大于和小于比较需要编码为XML实体:been


我打开和关闭自动换行

编辑>高级>自动换行


我发现值得将其作为按钮添加到Visual Studio工具栏。

您是否可以升级到Visual Studio 2015? 您可以在Visual Basic 14中使用新的多行字符串文字:

Dim sql作为字符串= 选择t1.Name, t1.说明, t1.地址:, t1.电话号码, t2.注册ID, t2.日期, t2.说明, t2.注册状态 来自用户t1 在t1.UserID=t2.UserID上加入注册t2 其中t2.RegistrationID=@RegistrationID
对于Visual Studio 2015的XML多行程序问题,以前没有已知的限制,这种技术成为一种过时的解决方法,仅用于与使用旧Visual Basic的用户的向后兼容性。不再是最好的解决方案一个重构的候选者,无论何时使用它。@miroxlav你能解释一下吗。VS 2015功能允许多行字符串,但它会在每行末尾插入换行符。@Blackwood-我们是否应该问为什么换行符也与C@multi-line string一起出现?您是否认为这些多行程序的VB等价物应该有不同的行为方式?在VB和C中,你总是可以通过添加.Replace…@miroxlav来删除换行符。我并不是说在SQL命令中插入伪换行符是一个问题,这就是问题所在。我只是认为值得指出的是,它们是插入的,这意味着结果与旧的字符串连接和行继续方法不同。@Blackwood-当然。下面我们将讨论显示XML文本的答案——换行符没有区别,XML文本也保留它们。因此,从过时的XML解决方案过渡到新的本机表单意味着1:1替换,同时删除XML的一些奇怪之处,如&;并不是每个人都能更新到VS2015。但是,如果确实可以更新到2015年,那么新的多行字符串和字符串插值特性是比XML文本更好的解决方案。考虑到内部更新周期很少与产品发布一致,我不太愿意称XML文本解决方案为不推荐。即使能够更新到VS2015,也可能无法针对VB 14中可用的功能。并非所有团队成员都可以同时更新,有些客户端可能会坚持使用以前版本的编译器。。等等。不推荐使用。@SamAxe–希望您的组织中的每个人都已经能够升级,最后我们可以安全地称XML文本解决方案为不推荐使用。