小编Aer*_*ron的帖子

Sublime Text:如何更正 SQL Server 语法

我是 Sublime Text(版本 3)的新手,我在获得正确的 SQL 语法突出显示方面遇到了困难。

每当我查看 SQL 查询时,ST 都会将“#”视为注释。例如,这里超出 # 的所有内容都变灰了:

INSERT INTO #TEST (A,B,C,D)
VALUES ('a','b','c','d')
Run Code Online (Sandbox Code Playgroud)

我想纠正这个问题,所以我环顾四周寻找答案数周,但没有一个有效......

我首先C:\Program Files\Sublime Text 3\Packages查找文件 SQL.sublime-package。

我在评论区找到了这段文字:

- match: "#"
  scope: punctuation.definition.comment.sql
  push:
   - meta_scope: comment.line.number-sign.sql
    - match: \n
      pop: true
Run Code Online (Sandbox Code Playgroud)

所以我尝试编辑它:

  • 删除文本块会导致 Sublime Text 错误:

加载语法文件“Packages/SQL/SQL.sublime-syntax”时出错:无法读取 Packages/SQL/SQL.sublime-syntax

  • 用其他东西改变# 符号(例如“--”):没有效果

您是否有解决方案可以在 Sublime Text 3 中突出显示正确的 SQL 语法?

非常感谢

sql sql-server sublimetext sublimetext3 sublime-text-plugin

3
推荐指数
1
解决办法
1415
查看次数

如何使用 SQL Server 类(例如 SqlCommand)来防止 SQL 注入而没有数据库连接?

我目前正在检查 StackOverflow 以获取有关使用 C# 代码防止 SQL 注入的最佳实践,许多答案包括 .NET SQL 类,例如SqlCommand, SqlDataAdapter, ...

问题是我必须使用专有的中间件组件将查询发送到数据库,而且我找不到任何方法来使用这些类而不使用SqlConnection.

这是我的示例代码:

SqlCommand sqlC = new SqlCommand("USP_MyProcedure");
sqlC.CommandType = System.Data.CommandType.StoredProcedure;
sqlC.Parameters.AddWithValue("@strRef", strRef);
sqlC.Parameters.AddWithValue("@strCmd", strCmd);
sqlC.Parameters.AddWithValue("@strParam", strParam);
sqlC.Parameters.AddWithValue("@strDef", strDef);
sqlC.Parameters.AddWithValue("@strWn", sWn);
Run Code Online (Sandbox Code Playgroud)

SqlCommand似乎正确初始化时,SqlParameterCollection看起来不错,但物业SqlC.CommandText仅返回“USP_MyProcedure”。

如果我使用其他类来处理我的SqlCommand,例如:

SqlDataReader reader = sqlC.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,因为我没有可用的连接:

必须初始化连接属性

所以,我的问题是:

  • 有没有办法使用那些 .NET 类(或其他类?)来准备我的 SQL 查询以防止 SQL 注入?
  • 如果没有,是否有其他 .NET 类可以防止 SQL 注入,或者我是否必须实现自己的反 SQL 注入方法?从您的角度来看,基于哪种最佳实践?

编辑:看起来我误解了这些课程的工作方式。

这些类不会“离线”准备 SQL 语句,而是设计为与 SqlConnection 一起使用。

但我可以改变问题,从另一个角度提出问题:是否有 .NET 类可以“离线”准备 SQL 语句以防止注入?

c# sql-server sql-injection

0
推荐指数
1
解决办法
62
查看次数